UNPKG

@rafeekpro/stackwizard

Version:

πŸ§™β€β™‚οΈ Magical full-stack project generator with FastAPI, React, PostgreSQL, and Docker

337 lines (255 loc) β€’ 10.4 kB
# πŸ§™β€β™‚οΈ StackWizard CLI > **Create production-ready full-stack applications in seconds!** [![npm version](https://img.shields.io/npm/v/@rafeekpro/stackwizard.svg?style=flat-square)](https://www.npmjs.com/package/@rafeekpro/stackwizard) [![npm downloads](https://img.shields.io/npm/dm/@rafeekpro/stackwizard.svg?style=flat-square)](https://www.npmjs.com/package/@rafeekpro/stackwizard) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](https://opensource.org/licenses/MIT) [![Node.js](https://img.shields.io/badge/Node.js-16%2B-brightgreen?style=flat-square)](https://nodejs.org) [![GitHub Stars](https://img.shields.io/github/stars/rafeekpro/stackwizard?style=flat-square)](https://github.com/rafeekpro/stackwizard/stargazers) **StackWizard** is a powerful CLI tool that generates complete, production-ready full-stack applications with a single command. Get a fully configured project with **FastAPI** backend, **React** frontend, **PostgreSQL** database, and **Docker Compose** orchestration - all following industry best practices. ## ✨ Features ### Core Stack - πŸš€ **FastAPI Backend** - Modern Python web API with async support, JWT authentication, and 100% type hints - βš›οΈ **React Frontend** - Choose between Material-UI or Tailwind CSS for your UI - 🐘 **PostgreSQL Database** - Production-ready database with Alembic migrations - 🐳 **Docker Compose** - Complete containerized development environment with health checks ### Security & Architecture - πŸ” **Authentication System** - JWT-based auth with secure password hashing & refresh tokens - πŸ›‘οΈ **Security Middleware** - Rate limiting, CSRF protection, security headers - πŸ—οΈ **Service Layer Architecture** - Clean separation with Service/Repository patterns - πŸ“š **API Documentation** - Auto-generated Swagger/OpenAPI documentation ### Developer Experience - πŸ§ͺ **Comprehensive Testing** - Cypress E2E tests, unit tests, Docker validation - 🎭 **Visual Testing** - Watch Cypress tests run in real-time - πŸ› οΈ **Pre-Push Validation** - Automatic Docker & dependency verification - πŸ“Š **Test Orchestration** - Makefile & custom orchestrator for test management - 🎯 **Best Practices** - Clean architecture, type safety, and production-ready configuration ## πŸš€ Quick Start ### From GitHub (Current Method) Clone and run directly: ```bash # Clone the repository git clone https://github.com/rafeekpro/stackwizard.git cd stackwizard npm install # Run the generator npm start # or node src/index.js ``` ### NPM Installation βœ… Install from NPM registry: ```bash # Global installation npm install -g @rafeekpro/stackwizard # Or use npx directly npx @rafeekpro/stackwizard my-awesome-app ``` ### GitHub Packages (Alternative) Install from GitHub Packages registry: ```bash # Configure npm to use GitHub registry for @rafeekpro scope npm config set @rafeekpro:registry https://npm.pkg.github.com # Install globally npm install -g @rafeekpro/stackwizard ``` > **Note**: Both NPM and GitHub Packages are now live with version 1.0.0! ## πŸ“‹ Usage ### Interactive Mode (Recommended) Simply run the command and follow the interactive prompts: ```bash # From cloned repository npm start # Or after global installation stackwizard # Or use npx directly (no installation needed!) npx @rafeekpro/stackwizard ``` You'll be asked to configure: - πŸ“ Project name - 🎨 UI library (Material-UI or Tailwind CSS) - πŸ—„οΈ Database configuration - πŸ”Œ Port settings - βœ… Additional features (Git initialization, dependency installation) ### Command Line Mode Skip the prompts with command-line options: ```bash node src/index.js --name my-app --ui mui --skip-git ``` #### Available Options ``` Options: -V, --version Output version number -n, --name <name> Project name -u, --ui <ui> UI library (mui or tailwind) -s, --skip-git Skip git initialization -i, --install Install dependencies after creation -q, --quick Quick mode - use all defaults -h, --help Display help ``` ### Quick Mode Generate a project with all defaults in seconds: ```bash node src/index.js --quick --name my-app ``` ## πŸ—οΈ Generated Project Structure ``` your-project/ β”œβ”€β”€ backend/ # FastAPI backend application β”‚ β”œβ”€β”€ app/ β”‚ β”‚ β”œβ”€β”€ api/ # API endpoints β”‚ β”‚ β”œβ”€β”€ core/ # Core configuration & security β”‚ β”‚ β”œβ”€β”€ crud/ # Database operations β”‚ β”‚ β”œβ”€β”€ models/ # SQLAlchemy models β”‚ β”‚ β”œβ”€β”€ schemas/ # Pydantic schemas β”‚ β”‚ └── main.py # Application entry point β”‚ β”œβ”€β”€ alembic/ # Database migrations β”‚ β”œβ”€β”€ tests/ # Backend tests β”‚ └── Dockerfile # Production-ready Dockerfile β”œβ”€β”€ frontend/ # React frontend application β”‚ β”œβ”€β”€ src/ β”‚ β”‚ β”œβ”€β”€ components/ # Reusable UI components β”‚ β”‚ β”œβ”€β”€ pages/ # Page components β”‚ β”‚ β”œβ”€β”€ services/ # API service layer β”‚ β”‚ └── App.js # Main application component β”‚ β”œβ”€β”€ public/ # Static assets β”‚ └── Dockerfile # Production-ready Dockerfile β”œβ”€β”€ database/ # Database initialization β”œβ”€β”€ docker-compose.yml # Docker orchestration β”œβ”€β”€ .env # Environment configuration └── README.md # Project documentation ``` ## 🎯 What You Get ### Backend (FastAPI) - βœ… RESTful API with async/await support - βœ… SQLAlchemy ORM with Alembic migrations - βœ… JWT authentication & authorization - βœ… Request validation with Pydantic - βœ… CORS configuration - βœ… Health check endpoints - βœ… Comprehensive error handling - βœ… 100% type hints for better IDE support ### Frontend (React) - βœ… Modern React with Hooks - βœ… React Router for navigation - βœ… Axios with request/response interceptors - βœ… Authentication context & protected routes - βœ… Responsive design - βœ… Material-UI or Tailwind CSS styling - βœ… Environment-based configuration ### Database (PostgreSQL) - βœ… PostgreSQL 15 with optimal settings - βœ… Database migrations with Alembic - βœ… Connection pooling - βœ… Automated backup support - βœ… Health monitoring ### DevOps (Docker) - βœ… Multi-stage Dockerfiles for optimal image size - βœ… Docker Compose with health checks - βœ… Hot-reload for development - βœ… Production-ready configuration - βœ… Optional Redis & Nginx services ## πŸš€ Running Your Generated Project After generation, start your full-stack application with: ```bash cd your-project docker-compose up -d ``` Your application will be available at: - 🌐 **Frontend**: http://localhost:3000 - πŸš€ **Backend API**: http://localhost:8000 - πŸ“š **API Documentation**: http://localhost:8000/docs ## πŸ› οΈ Development Workflow ### Without Docker **Backend Development:** ```bash cd backend python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt uvicorn app.main:app --reload ``` **Frontend Development:** ```bash cd frontend npm install npm start ``` ### Database Migrations ```bash # Create a new migration alembic revision --autogenerate -m "Description" # Apply migrations alembic upgrade head ``` ## πŸ§ͺ Testing & Validation ### Visual Testing with Cypress Watch your tests run in real-time: ```bash # Install Cypress make cypress-install # Test MUI template visually make cypress-mui # Test Tailwind template visually make cypress-tailwind ``` ### Pre-Push Validation Ensure everything works before pushing to GitHub: ```bash # Full validation (recommended) npm run validate:full # Quick validation npm run validate:quick # Install git hooks for automatic validation npm run install-hooks ``` ### Test Orchestration Run comprehensive tests with a single command: ```bash # Using Makefile make test-all # Run all tests make pre-commit # Pre-commit checks make docker-build-test # Test Docker builds # Using orchestrator npm run test:orchestrate # Smart mode npm run test:orchestrate:full # Full test suite ``` ## πŸ“¦ System Requirements - Node.js 16.0.0 or higher - npm 7.0.0 or higher - Docker & Docker Compose (for running generated projects) - Python 3.11+ (for local backend development) ## 🀝 Contributing Contributions are welcome! Feel free to: - Report bugs and request features via [GitHub Issues](https://github.com/rafeekpro/stackwizard/issues) - Submit pull requests with improvements - Share feedback and suggestions ## πŸ“„ License MIT Β© [RafaΕ‚ Łagowski](https://github.com/rafeekpro) ## πŸ‘¨β€πŸ’» Author **RafaΕ‚ Łagowski** - Full-Stack Developer - GitHub: [@rafeekpro](https://github.com/rafeekpro) - NPM: [@rafeekpro](https://www.npmjs.com/~rafeekpro) ## πŸ™ Technologies Used This project leverages modern, production-ready technologies: - [FastAPI](https://fastapi.tiangolo.com/) - High-performance Python web framework - [React](https://reactjs.org/) - Component-based UI library - [PostgreSQL](https://www.postgresql.org/) - Enterprise-grade database - [Docker](https://www.docker.com/) - Container orchestration - [SQLAlchemy](https://www.sqlalchemy.org/) - Python SQL toolkit and ORM - [Alembic](https://alembic.sqlalchemy.org/) - Database migration tool - [Material-UI](https://mui.com/) - React component library - [Tailwind CSS](https://tailwindcss.com/) - Utility-first CSS framework ## πŸ“ž Contact & Support - πŸ› **Bug Reports**: [GitHub Issues](https://github.com/rafeekpro/stackwizard/issues) - πŸ’‘ **Feature Requests**: [GitHub Discussions](https://github.com/rafeekpro/stackwizard/discussions) - πŸ“¦ **NPM Package**: [@rafeekpro/stackwizard](https://www.npmjs.com/package/@rafeekpro/stackwizard) - πŸ“¦ **GitHub Package**: [@rafeekpro/stackwizard](https://github.com/users/rafeekpro/packages/npm/package/stackwizard) - πŸ‘€ **Developer**: [RafaΕ‚ Łagowski](https://github.com/rafeekpro) --- <p align="center"> <strong>Created with ❀️ by <a href="https://github.com/rafeekpro">RafaΕ‚ Łagowski</a></strong><br> <em>Full-Stack Developer | Open Source Contributor</em><br><br> <a href="https://www.npmjs.com/package/@rafeekpro/stackwizard">NPM</a> β€’ <a href="https://github.com/rafeekpro/stackwizard">GitHub</a> β€’ <a href="https://github.com/rafeekpro">Profile</a> </p>