A modern project generator CLI for web frameworks. Quickly scaffold projects for Next.js, React, Express, Flask, Django, and more with support for TypeScript, Tailwind CSS, databases, and modern tooling.
appgen-1755346121329.mp4
- Multiple Frameworks: Next.js, React, Express, Flask, Django, Svelte
- Database Support: MongoDB, PostgreSQL, Supabase, AWS DynamoDB
- Modern Tooling: TypeScript, Tailwind CSS, Prisma ORM, shadcn/ui
- Interactive CLI: Guided setup with beautiful UI
- Serverless Ready: AWS SAM templates for serverless deployment (JavaScript, TypeScript, Python, Go)
- Fullstack Presets: MERN stack, Next.js + Prisma, and more
- Clean Architecture: Modular, maintainable codebase
- Cross-Platform: Works on Windows, macOS, and Linux
- Smart Dependency Install: After project creation, choose and auto-detect your preferred package manager (npm, yarn, pnpm, bun)
- Editor Detection: Choose your code editor (VS Code, Cursor, Sublime, Atom, Vim, Nano) with installed status shown
AppGen uses a clean, modular architecture for maintainability and extensibility:
appgen/
βββ __init__.py # Package initialization
βββ cli.py # Main CLI orchestration
βββ ui_helper.py # UI operations and styling
βββ framework_selector.py # Framework selection logic
βββ project_manager.py # Project creation and management
pip install appgen# Clone the repository
git clone https://github.com/yourusername/appgen.git
cd appgen
# Create and activate virtual environment (recommended)
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Upgrade pip
pip install --upgrade pip
# Install in development mode
pip install -e .appgen --helpYou should see the CLI help with all available commands.
appgen -i
# or
appgen create --interactiveThis will guide you through:
- Framework selection with beautiful tables
- Feature configuration (TypeScript, Tailwind, etc.)
- Project directory setup
- Project generation with progress indicators
# Create a Next.js project with App Router
appgen create --framework nextjs --dir my-app --router app
# Create an Express project with MongoDB
appgen create --framework express --dir my-api --db mongodb
# Create a React project with TypeScript
appgen create --framework reactjs --dir my-react-app --features typescript# Basic Next.js with App Router
appgen create --framework nextjs --dir my-next-app --router app
# Next.js with TypeScript and Tailwind
appgen create --framework nextjs --dir my-next-app --router app --features typescript,tailwind
# Next.js with Prisma ORM
appgen create --framework nextjs --dir my-next-app --router app --features typescript,prisma
# Next.js with shadcn/ui components
appgen create --framework nextjs --dir my-next-app --router app --features shadcn
# Next.js with t3 stack (TypeScript + Tailwind + tRPC)
appgen create --framework nextjs --dir my-next-app --router app --features t3# Basic Express server
appgen create --framework express --dir my-api
# Express with MongoDB
appgen create --framework express --dir my-api --db mongodb
# Express with PostgreSQL
appgen create --framework express --dir my-api --db postgresql
# Express with Supabase
appgen create --framework express --dir my-api --db supabase
# Express with AWS Lambda (serverless)
appgen create --framework express --dir my-api --db serverless# Basic React app
appgen create --framework reactjs --dir my-react-app
# React with TypeScript
appgen create --framework reactjs --dir my-react-app --features typescript
# React with Tailwind CSS
appgen create --framework reactjs --dir my-react-app --features tailwind
# React with both TypeScript and Tailwind
appgen create --framework reactjs --dir my-react-app --features typescript,tailwind# Flask application
appgen create --framework flask --dir my-flask-app
# Django application
appgen create --framework django --dir my-django-app# Svelte application
appgen create --framework svelte --dir my-svelte-app# MERN Stack (MongoDB + Express + React + Node.js)
appgen preset mern --dir my-mern-app
# Next.js Fullstack with Prisma
appgen preset nextjs-fullstack --dir my-nextjs-app# JavaScript (Node.js) serverless
appgen create --framework serverless --language javascript --dir my-serverless-js
# TypeScript serverless
appgen create --framework serverless --language typescript --dir my-serverless-ts
# Python serverless
appgen create --framework serverless --language python --dir my-serverless-py
# Go serverless
appgen create --framework serverless --language go --dir my-serverless-go# List all available frameworks and features
appgen list-frameworks
# Show current configuration
appgen config
# Create a new project
appgen create [OPTIONS]
# Generate from preset
appgen preset [OPTIONS]
# Interactive mode (shortcut)
appgen -i
# Show help for any command
appgen --help
appgen create --help
appgen preset --help- Next.js: App Router & Pages Router, TypeScript, Tailwind, Prisma, shadcn/ui, t3
- React: TypeScript, Tailwind CSS
- Express.js: MongoDB, PostgreSQL, Supabase, AWS Lambda (serverless)
- Flask: Lightweight Python web framework
- Django: Full-featured Python web framework
- Svelte: Cybernetically enhanced web apps
- MongoDB: NoSQL database with Mongoose ODM
- PostgreSQL: Relational database with Sequelize ORM
- Supabase: Open-source Firebase alternative
- AWS DynamoDB: Serverless NoSQL database (with SAM template)
- App Router: Next.js 13+ App Router
- Pages Router: Traditional Pages Router
- TypeScript: Full TypeScript support
- Tailwind CSS: Utility-first CSS framework
- Prisma: Modern database toolkit
- shadcn/ui: Re-usable component library
- t3: Type-safe full-stack development with tRPC
- TypeScript: Type-safe development
- Tailwind CSS: Utility-first styling
- Vite: Fast build tool
After generation, your project will include:
appgen/
βββ README.md # Project documentation with usage examples
βββ pyproject.toml # Python project configuration & dependencies
βββ requirements.txt # Python dependencies list
βββ MANIFEST.in # Python package manifest
βββ CODE_OF_CONDUCT.md # Community code of conduct
βββ CONTRIBUTING.md # Contribution guidelines
βββ .gitignore # Git ignore rules
βββ .mypy.ini # MyPy type checker configuration
βββ genapp.py # Main entry point script
βββ .DS_Store # macOS system file (should be gitignored)
βββ .github/ # GitHub workflows & issue templates
β βββ (issue templates added recently)
βββ appgen/ # Main Python package (version 0.3.2)
β βββ (core CLI modules)
βββ generator/ # Project generation logic
β βββ (templates and generation utilities)
βββ templates/ # Framework templates with presets & strapi support
βββ (fixed preset configurations)
After creating your project:
cd my-project
# For JS/TS: You will be prompted to install dependencies interactively with your choice of npm, yarn, pnpm, or bun (auto-detected)
# For Python: pip install -r requirements.txt
# For Go: go mod tidy
npm run dev # or python run.py for Python projectsAfter project generation (in interactive mode):
- Editor Selection: Choose from Visual Studio Code, Cursor, Sublime Text, Atom, Vim, or Nano. The selection table shows an 'Installed?' column (β /β) so you can only select editors that are available on your system.
- Package Manager Selection: For JS/TS projects, you are prompted to install dependencies. Choose from npm, yarn, pnpm, or bun. Only installed package managers are shown.
Example editor selection table:
| # | Editor | Command | Installed? |
|---|---|---|---|
| 1 | Visual Studio Code | code | β |
| 2 | Cursor | cursor | β |
| 3 | Sublime Text | subl | β |
| 4 | Atom | atom | β |
| 5 | Vim | vim | β |
| 6 | Nano | nano | β |
If you select an editor that is not installed, you will be prompted to choose again.
Example package manager selection:
| # | Package Manager | Installed? |
|---|---|---|
| 1 | npm | β |
| 2 | yarn | β |
| 3 | pnpm | β |
| 4 | bun | β |
Only installed package managers are available for selection.
# Clone the repository
git clone https://github.com/yourusername/appgen.git
cd appgen
# Create and activate virtual environment
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Upgrade pip
pip install --upgrade pip
# Install development dependencies (includes pre-commit hooks)
make install-dev
# Test the CLI
appgen --help
appgen list-frameworksmake help # Show all available commands
make install # Install package in development mode
make install-dev # Install development dependencies
make test # Run tests with coverage
make lint # Run linting checks
make format # Format code
make security # Run security checks
make clean # Clean build artifacts
make build # Build package
make ci # Run all CI checks locally
make pre-commit # Run pre-commit hooks on all files- Black: Code formatting
- isort: Import sorting
- flake8: Linting
- mypy: Type checking
- bandit: Security checks
- pre-commit: Git hooks for code quality
- commitizen: Conventional commit messages
# Test project generation
appgen create --framework flask --dir test-flask
appgen create --framework express --dir test-express --db mongodb
# Clean up test projects
rm -rf test-flask test-express# Build package
python -m build
# Install from local build
pip install dist/appgen-*.whl
# Test installed package
appgen --helpWe welcome contributions! Please see our Contributing Guide for detailed information.
Quick start:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Install development dependencies (
make install-dev) - Make your changes
- Run tests (
make test) and linting (make lint) - Commit using conventional commits (
cz commit) - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
We use GitHub Actions for continuous integration:
- Tests: Run on Python 3.8-3.12
- Linting: Code style and type checking
- Security: Automated security scans
- Integration Tests: Test all framework generations
- Build: Package building and validation
- Release: Automated PyPI publishing on tags
See .github/workflows/ for workflow details.
CLI not found after installation:
# Reinstall in editable mode
pip uninstall appgen -y
pip install -e .Virtual environment issues:
# Remove and recreate virtual environment
rm -rf .venv
python3 -m venv .venv
source .venv/bin/activate
pip install -e .Permission errors:
# Use user installation
pip install --user appgenMIT License - see LICENSE file for details.
- π Documentation
- π Report Issues
- π‘ Request Features
- β Star the Project
- π¬ Discussions
Happy coding! π