- Created a new troubleshooting guide in README.md for common issues and testing problems. - Updated package.json to include new act commands for linting, type checking, building, and diagnosing workflows. - Added a pre-commit hook script to validate workflows before commits. - Enhanced run-act.sh script with logging, Docker checks, and improved output formatting. - Improved test-workflows.sh with an interactive menu and performance tracking. - Introduced setup-act.sh for quick setup and testing of act integration.
5.6 KiB
New Contributor Path
A guided learning path through MetaBuilder documentation for new team members.
🎯 Your Learning Journey (2-3 hours)
This path guides you through the essential concepts in a logical order. Follow the sections sequentially.
Phase 1: Foundation (30 minutes)
Understand what MetaBuilder is and how it's structured.
-
Project Overview ⭐ START HERE
- What MetaBuilder does
- Key features
- Tech stack overview
-
- High-level business context
- Key stakeholders
- Project goals
-
- Feature list
- User personas
- Requirements breakdown
Phase 2: Architecture Fundamentals (45 minutes)
Learn how MetaBuilder is architected.
-
5-Level Permission System ⭐ CRITICAL
- Permission hierarchy (Public → User → Admin → God → Supergod)
- Role-based access patterns
- Multi-tenant considerations
-
- 95% JSON/Lua philosophy
- Minimal TypeScript
- Declarative patterns
-
- How packages work
- Package structure
- Self-contained modules
-
- Component declaration via JSON
- RenderComponent pattern
- Dynamic UI composition
-
- Schema overview
- Multi-tenant isolation
- DBAL integration
Phase 3: Development Workflow (45 minutes)
Learn how to develop with MetaBuilder.
-
Quick Start (if available in getting-started/README.md)
- Development environment setup
- Running the project locally
- Common commands
-
Testing Guidelines ⭐ REQUIRED
- Test structure
- Parameterized testing
- Coverage requirements
-
- Code quality standards
- Component size limits (150 LOC)
- TypeScript reduction principles
-
- Lua sandbox execution
- Script patterns
- Integration with TypeScript
Phase 4: Common Tasks (30 minutes)
Learn how to accomplish typical work items.
-
Component Development (or component development guide)
- Creating new components
- Using RenderComponent
- Testing components
-
- Database operations
- Using Database helper class
- Query patterns
-
- Creating new packages
- Package structure
- Seed data
🔑 Key Concepts to Remember
As you work through this path, keep these principles in mind:
✅ DO:
- ✅ Use
Databaseclass for all database operations (never raw Prisma) - ✅ Filter queries by
tenantIdfor multi-tenant safety - ✅ Use generic
RenderComponentinstead of hardcoded JSX - ✅ Keep components < 150 LOC
- ✅ Write parameterized tests for every function
- ✅ Use Lua for data transformation, TypeScript for orchestration
❌ DON'T:
- ❌ Hardcode values in TypeScript (move to database/config)
- ❌ Forget tenantId in queries (breaks multi-tenancy)
- ❌ Create new database fields without running
npm run db:generate - ❌ Commit code without tests passing
- ❌ Build custom components when JSON config would work
- ❌ Add fields/operations to DBAL without updating YAML first
📚 Reference Resources
Keep these handy as you develop:
- Copilot Instructions - AI assistant context
- Master Navigation - Complete docs index
- Troubleshooting - Common issues
- Quick References - Testing patterns
🎓 Learning Paths by Role
Frontend Developer
1-4, 7, 10-15 in the main path, plus:
Backend Developer
1-6, 8-9, 14 in the main path, plus:
DevOps/Infrastructure
1-2, plus:
QA/Testing
1-3, 10-11, plus:
✅ Completion Checklist
After completing this path, you should be able to:
- Explain the 5-level permission system
- Describe why MetaBuilder is 95% JSON/Lua
- Create a new component using RenderComponent
- Write a parameterized test with 3+ cases
- Run the project locally and make a simple code change
- Query data safely with tenantId filtering
- Create a new package with seed data
- Run the test suite and see all tests pass
- Explain the package system architecture
- Understand DBAL's role in the system
💬 Questions?
If something isn't clear:
- Check Troubleshooting
- Search for keywords in Master Navigation
- Review the Copilot Instructions for patterns
Welcome to MetaBuilder! 🚀