mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-25 14:25:02 +00:00
307 lines
8.9 KiB
Markdown
307 lines
8.9 KiB
Markdown
# MetaBuilder - Enterprise Data Platform
|
|
|
|
MetaBuilder is a powerful, declarative enterprise data platform built on a 5-level permission system. It enables rapid development of multi-tenant data applications with JSON configurations and Lua scripting.
|
|
|
|
TODO: This file lives under docs/; links that start with ./docs/ are broken and PRD/SECURITY paths are outdated.
|
|
|
|
## 📋 Table of Contents
|
|
|
|
- [Features](#features)
|
|
- [Quick Start](#quick-start)
|
|
- [Architecture](#architecture)
|
|
- [Documentation](#documentation)
|
|
- [Development](#development)
|
|
- [Project Structure](#project-structure)
|
|
|
|
## ✨ Features
|
|
|
|
- **5-Level Permission System** - Granular access control (User, Admin, God, SuperGod, SystemRoot)
|
|
- **Multi-Tenant Architecture** - Built-in support for tenant isolation
|
|
- **Declarative Configuration** - Define features in JSON, not code
|
|
- **Lua Scripting** - Dynamic business logic without recompilation
|
|
- **Database-Driven** - All configuration stored and managed in database
|
|
- **Package System** - Modular, reusable feature packages
|
|
- **Type-Safe** - Full TypeScript support throughout
|
|
- **CI/CD Ready** - Automated testing, linting, and deployment workflows
|
|
|
|
## 🧪 Testing Workflows Locally
|
|
|
|
**New:** Test GitHub Actions workflows locally before pushing!
|
|
|
|
```bash
|
|
# Quick start - runs full CI pipeline
|
|
npm run act
|
|
|
|
# Test specific components
|
|
npm run act:lint # ESLint linting
|
|
npm run act:build # Production build
|
|
npm run act:e2e # End-to-end tests
|
|
npm run act:typecheck # TypeScript validation
|
|
|
|
# Interactive testing
|
|
npm run act:test # Menu-driven testing
|
|
|
|
# Diagnostics
|
|
npm run act:diagnose # Check setup (no Docker required)
|
|
```
|
|
|
|
See [ACT Cheat Sheet](docs/guides/ACT_CHEAT_SHEET.md) for quick reference or [Act Testing Guide](docs/guides/ACT_TESTING.md) for detailed documentation.
|
|
|
|
**Benefits:**
|
|
- ✅ Catch CI failures before pushing to GitHub
|
|
- ✅ No more "fix CI" commits
|
|
- ✅ Fast feedback loop (5-10 minutes per run)
|
|
- ✅ Works offline after first run
|
|
|
|
---
|
|
|
|
## 🚀 Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
- Node.js 18+
|
|
- npm or yarn
|
|
- Docker (optional, for deployment)
|
|
|
|
### Development Setup
|
|
|
|
```bash
|
|
# Clone repository
|
|
git clone <repo>
|
|
cd metabuilder
|
|
|
|
# Install dependencies
|
|
npm install
|
|
|
|
# Set up database
|
|
npm run db:generate
|
|
npm run db:push
|
|
|
|
# Start development server
|
|
npm run dev
|
|
```
|
|
|
|
Visit `http://localhost:5173` to access the application.
|
|
|
|
### Build for Production
|
|
|
|
```bash
|
|
npm run build
|
|
npm run preview # Preview production build locally
|
|
```
|
|
|
|
## 📐 Architecture
|
|
|
|
MetaBuilder uses a **5-level permission system**:
|
|
|
|
```
|
|
SuperGod (Level 5) - System administrator, full access
|
|
↓
|
|
God (Level 4) - Power user, can modify system configuration
|
|
↓
|
|
Admin (Level 3) - Tenant administrator, manage users and data
|
|
↓
|
|
User (Level 2) - Regular user, standard data access
|
|
↓
|
|
Guest (Level 1) - Read-only access (not implemented)
|
|
```
|
|
|
|
### Key Components
|
|
|
|
- **Prisma ORM** - Type-safe database queries
|
|
- **React + TypeScript** - Modern UI framework
|
|
- **Vite** - Fast build tool
|
|
- **Tailwind CSS** - Utility-first CSS framework
|
|
- **Lua (Fengari)** - Embedded scripting
|
|
|
|
For detailed architecture information, see [Architecture Documentation](./docs/architecture/).
|
|
|
|
## 📚 Documentation
|
|
|
|
### Getting Started
|
|
|
|
- [Getting Started Guide](./docs/guides/getting-started.md) - Setup and first steps
|
|
- [5-Level Permission System](./docs/architecture/5-level-system.md) - Understanding permissions
|
|
|
|
### Development Guides
|
|
|
|
- [API Development](./docs/guides/api-development.md) - Creating API routes
|
|
- [Package System](./docs/architecture/packages.md) - Building packages
|
|
- [Database Guide](./docs/architecture/database.md) - Working with Prisma
|
|
|
|
### Reference
|
|
|
|
- [Project Requirements (PRD)](./docs/PRD.md)
|
|
- [Security Guidelines](./docs/SECURITY.md)
|
|
- [Code Documentation Index](./docs/CODE_DOCS_MAPPING.md)
|
|
|
|
### Local Testing with Act
|
|
|
|
- [Act Cheat Sheet](./docs/guides/ACT_CHEAT_SHEET.md) - Quick reference for common commands
|
|
- [Act Testing Guide](./docs/guides/ACT_TESTING.md) - Complete documentation
|
|
- [GitHub Actions Reference](./docs/guides/github-actions-local-testing.md) - Technical details
|
|
|
|
### Full Documentation
|
|
|
|
See [docs/README.md](./docs/README.md) for the complete documentation index.
|
|
|
|
## 🔧 Development
|
|
|
|
### Available Scripts
|
|
|
|
```bash
|
|
# Development & Building
|
|
npm run dev # Start dev server
|
|
npm run build # Production build
|
|
npm run preview # Preview production build
|
|
|
|
# Testing
|
|
npm run test # Run tests in watch mode
|
|
npm run test:e2e # Run end-to-end tests
|
|
npm run test:e2e:ui # Run e2e tests with UI
|
|
npm run lint # Check code quality
|
|
npm run lint:fix # Auto-fix linting issues
|
|
|
|
# Local Workflow Testing (Act)
|
|
npm run act # Run full CI pipeline locally
|
|
npm run act:lint # Test linting
|
|
npm run act:build # Test production build
|
|
npm run act:e2e # Test E2E tests
|
|
npm run act:test # Interactive testing menu
|
|
npm run act:diagnose # Check setup (no Docker)
|
|
|
|
# Database
|
|
npm run db:generate # Generate Prisma client
|
|
npm run db:push # Apply schema changes
|
|
npm run db:studio # Open database UI
|
|
|
|
# Other
|
|
npm run act # Run GitHub Actions locally
|
|
```
|
|
|
|
### Code Quality
|
|
|
|
```bash
|
|
# Run linter
|
|
npm run lint
|
|
|
|
# Fix linting issues
|
|
npm run lint:fix
|
|
|
|
# Run all tests
|
|
npm run test:e2e
|
|
```
|
|
|
|
## 📁 Project Structure
|
|
|
|
```
|
|
metabuilder/
|
|
├── src/ # React application source
|
|
│ ├── app/ # App layout and pages
|
|
│ ├── components/ # React components
|
|
│ ├── lib/ # Utility libraries
|
|
│ ├── hooks/ # Custom React hooks
|
|
│ ├── types/ # TypeScript type definitions
|
|
│ └── seed-data/ # Database initialization data
|
|
├── prisma/ # Database schema & migrations
|
|
│ └── schema.prisma # Prisma schema
|
|
├── packages/ # Modular feature packages
|
|
│ ├── admin_dialog/
|
|
│ ├── dashboard/
|
|
│ ├── data_table/
|
|
│ ├── form_builder/
|
|
│ └── ...
|
|
├── docs/ # Documentation
|
|
│ ├── architecture/ # Architecture guides
|
|
│ ├── guides/ # Development guides
|
|
│ └── ...
|
|
├── e2e/ # End-to-end tests
|
|
├── scripts/ # Utility scripts
|
|
│ └── doc-quality-checker.sh # Documentation quality assessment
|
|
├── deployment/ # Deployment configurations
|
|
├── vite.config.ts # Vite configuration
|
|
├── tsconfig.json # TypeScript configuration
|
|
├── middleware.ts # Next.js middleware
|
|
└── package.json # Dependencies & scripts
|
|
```
|
|
|
|
### Directory Guide
|
|
|
|
TODO: src/README.md does not exist under docs/; confirm correct location or add missing docs/src.
|
|
|
|
- **src/** - See [src/README.md](./src/README.md)
|
|
- **packages/** - See [packages/README.md](./packages/README.md)
|
|
- **docs/** - See [docs/README.md](./docs/README.md)
|
|
- **prisma/** - Database schema and migrations
|
|
- **e2e/** - Playwright end-to-end tests
|
|
- **scripts/** - Utility scripts including documentation quality checker
|
|
|
|
## 🔐 Security
|
|
|
|
- All credentials stored as SHA-512 hashes
|
|
- 5-level permission system for granular access control
|
|
- Sandboxed Lua script execution
|
|
- Type-safe database queries with Prisma
|
|
- Security documentation: [SECURITY.md](./docs/SECURITY.md)
|
|
|
|
## 📦 Deployment
|
|
|
|
### Docker
|
|
|
|
```bash
|
|
# Development
|
|
docker-compose -f deployment/docker-compose.development.yml up
|
|
|
|
# Production
|
|
docker-compose -f deployment/docker-compose.production.yml up
|
|
```
|
|
|
|
### Manual Deployment
|
|
|
|
TODO: Manual deployment docs are not under docs/deployment; update this link to the correct location.
|
|
See [deployment/README.md](./deployment/README.md) for detailed instructions.
|
|
|
|
## 🤝 Contributing
|
|
|
|
1. Check [documentation guidelines](./docs/guides/api-development.md)
|
|
2. Follow code conventions in [Copilot instructions](./.github/copilot-instructions.md)
|
|
3. Run linter: `npm run lint:fix`
|
|
4. Run tests: `npm run test:e2e`
|
|
5. Update documentation as needed
|
|
|
|
## 📊 Documentation Quality
|
|
|
|
This project maintains high documentation standards:
|
|
|
|
```bash
|
|
# Check documentation quality
|
|
./scripts/doc-quality-checker.sh /workspaces/metabuilder
|
|
```
|
|
|
|
Current metrics:
|
|
- README Coverage: 60%+
|
|
- JSDoc Coverage: 100%
|
|
- Type Annotations: 80%+
|
|
- Security Docs: 100%
|
|
|
|
## 📄 License
|
|
|
|
See [LICENSE](./LICENSE) file.
|
|
|
|
## 📞 Support
|
|
|
|
For questions or issues:
|
|
|
|
1. Check the [documentation](./docs/)
|
|
2. Review [example code](./src/components/examples/)
|
|
3. Check [existing tests](./e2e/) for patterns
|
|
4. Review [SECURITY.md](./docs/SECURITY.md) for security questions
|
|
|
|
## Quick Links
|
|
|
|
- **Permission Model**: [5-Level System](./docs/architecture/5-level-system.md)
|
|
- **Database Schema**: [Prisma Schema](./prisma/schema.prisma)
|
|
- **API Patterns**: [API Development Guide](./docs/guides/api-development.md)
|
|
- **Security**: [Security Guidelines](./docs/SECURITY.md)
|
|
- **Packages**: [Package System](./docs/architecture/packages.md)
|