A powerful, feature-toggleable monorepo generator that creates production-ready full-stack projects with FastAPI backends and modern frontend frameworks (React, Vue, Svelte).
# Create a full-featured monorepo
python3 monorepo_bootstrap.py my_awesome_app
# Create a minimal API-only project
python3 monorepo_bootstrap.py simple_api --no-database --no-cache --no-docker --minimal-tooling
# Create a Vue.js project without CI/CD
python3 monorepo_bootstrap.py vue_app --frontend vue --no-ci --no-testing
- FastAPI Backend with modern Python patterns
- Modern Frontend (React/Vue/Svelte) with TypeScript
- Shared Types & Utilities for monorepo consistency
- Development Scripts via Makefile and npm scripts
- Production Build configurations
- Database (
--no-database
) - PostgreSQL with SQLAlchemy & Alembic migrations - Cache (
--no-cache
) - Redis for caching and session storage - Background Jobs (
--no-celery
) - Celery task queue system - Docker (
--no-docker
) - Full containerization with Docker Compose
- Testing (
--no-testing
) - Pytest (backend) + Vitest/Jest (frontend) - CI/CD (
--no-ci
) - GitHub Actions workflows with automated testing - VSCode Config (
--no-vscode
) - Multi-root workspace with recommended extensions
- Authentication (
--no-auth
) - JWT-based auth endpoints and middleware - Type Generation (
--no-type-gen
) - Auto-generate TypeScript types from Pydantic - Minimal Tooling (
--minimal-tooling
) - Reduce linting/formatting tools to essentials
python3 monorepo_bootstrap.py my_saas_app
Includes: Database, Redis, Celery, Docker, CI/CD, Testing, Auth, TypeScript generation
python3 monorepo_bootstrap.py api_server --no-docker --no-ci --no-testing --minimal-tooling
Perfect for: Internal APIs, microservices, prototypes
python3 monorepo_bootstrap.py web_app --frontend vue --no-celery --no-cache
Perfect for: Content sites, dashboards, SPAs with simple backends
python3 monorepo_bootstrap.py poc --no-database --no-cache --no-celery --no-docker --no-ci --no-testing --no-vscode --no-type-gen --no-auth --minimal-tooling
Perfect for: Quick prototypes, learning projects, demos
my_project/
βββ backend/ # FastAPI application
β βββ src/app/
β β βββ api/v1/ # API endpoints
β β βββ core/ # Configuration & settings
β β βββ models/ # Database models (if --database)
β β βββ schemas/ # Pydantic schemas
β β βββ services/ # Business logic
β βββ tests/ # Backend tests (if --testing)
β βββ alembic/ # DB migrations (if --database)
β βββ pyproject.toml # Dependencies & config
βββ frontend/ # React/Vue/Svelte app
β βββ src/
β β βββ components/ # Reusable components
β β βββ pages/ # Route components
β β βββ services/ # API clients
β β βββ stores/ # State management
β β βββ types/ # TypeScript definitions
β βββ package.json
βββ shared/ # Shared utilities & types
βββ infrastructure/ # Docker & K8s configs (if --docker)
βββ .github/workflows/ # CI/CD pipelines (if --ci)
βββ .vscode/ # VSCode settings (if --vscode)
βββ Makefile # Development commands
cd my_project
make install # Install all dependencies
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.env
make docker-up # Start database & Redis
make migrate # Run database migrations (if database enabled)
make dev # Start all services
# Start services individually
make dev-backend # FastAPI server on :8000
make dev-frontend # Frontend dev server on :3000
make test # Run all tests
make lint # Run all linters
make format # Format all code
make types # Generate TypeScript types (if enabled)
make help # Show all available commands
- React 18 with TypeScript
- Vite for fast development
- TanStack Query for API state management
- React Router for client-side routing
python3 monorepo_bootstrap.py my_app --frontend vue
- Vue 3 Composition API with TypeScript
- Pinia for state management
- Vue Router for navigation
- Comprehensive component examples
python3 monorepo_bootstrap.py my_app --frontend svelte
- SvelteKit with TypeScript
- Native Svelte stores
- Built-in routing
- Clean Architecture with separated layers
- Async/Await throughout for performance
- Pydantic for data validation and serialization
- SQLAlchemy 2.0 with async support (if database enabled)
- Structured Logging with contextual information
- Health Checks and monitoring endpoints
- TypeScript for type safety
- Modern Bundling with Vite
- API Integration with auto-generated types
- State Management (Zustand/Pinia/Svelte stores)
- Responsive Design ready
- Hot Reload for both backend and frontend
- Type Safety end-to-end with shared schemas
- Linting & Formatting with Ruff (Python) and ESLint/Prettier (JavaScript)
- Pre-commit Hooks to maintain code quality
- Multi-root VSCode workspace for optimal DX
Backend (.env)
ENVIRONMENT=development
DATABASE_URL=postgresql://user:pass@localhost:5432/db
REDIS_URL=redis://localhost:6379/0
SECRET_KEY=your-secret-key
Frontend (.env)
VITE_API_URL=http://localhost:8000/api/v1
The architecture supports easy feature addition:
- Database: Add SQLAlchemy models and Alembic migrations
- Authentication: Extend the auth endpoints and add middleware
- Background Jobs: Create Celery tasks in
backend/src/app/tasks/
- New Endpoints: Add routers in
backend/src/app/api/v1/endpoints/
- Core: FastAPI, Uvicorn, Pydantic
- Database: SQLAlchemy, Alembic, AsyncPG (if enabled)
- Auth: python-jose, passlib (if enabled)
- Tasks: Celery (if enabled)
- Cache: Redis (if enabled)
- Dev: Ruff, mypy, pytest
- Core: React/Vue/Svelte, TypeScript, Vite
- State: TanStack Query, Zustand/Pinia
- Dev: ESLint, Prettier, Vitest (if testing enabled)
make build # Build production images
docker-compose -f infrastructure/docker/docker-compose.yml up
# Backend
cd backend && poetry install --only=main
poetry run uvicorn src.app.main:app --host 0.0.0.0 --port 8000
# Frontend
cd frontend && npm ci && npm run build
# Serve dist/ with your web server
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Start Minimal: Use
--minimal-tooling
and disable unused features for faster development - Add Gradually: Enable features as your project grows (database β cache β background jobs)
- Consider Environment: Disable Docker for simple deployment environments
- Team Size: Larger teams benefit from full CI/CD and testing setup
- Database: Use
--no-database
for API gateways or stateless services - Cache: Essential for session-heavy or data-intensive applications
- Background Jobs: Only needed for email, file processing, or long-running tasks
- VSCode: Multi-root workspace provides excellent monorepo support
- Type Generation: Keeps frontend and backend in sync automatically
- Hot Reload: Both backend and frontend support live reloading
Happy coding! π
For questions or issues, please open a GitHub issue or check the documentation in the generated project's README.