🔥 DevForge
Universal project scaffolder for modern frameworks
DevForge is a powerful CLI tool that scaffolds production-ready projects with feature-based architecture for React, FastAPI, Flutter, and more. Built with extensibility in mind, adding new frameworks is as simple as creating a single file.
✨ Features
- 🎯 Feature-Based Architecture: Organizes code by features, not file types
- 🔌 Highly Extensible: Add new frameworks in minutes
- 🎨 Best Practices: Follows industry standards for each framework
- 🚀 Zero Configuration: Works out of the box
- 💡 Interactive CLI: Friendly prompts guide you through setup
- 📦 Multiple Frameworks: React, FastAPI, Flutter (and growing!)
🚀 Quick Start
Installation
pip install -e .
Create a New Project
# React project with TypeScript
devforge init --react
# FastAPI backend
devforge init --fastapi
# Flutter mobile app
devforge init --flutter
📋 Available Commands
devforge init --<framework>
Create a new project for the specified framework
Options:
--react: Create a React + Vite project--fastapi: Create a FastAPI backend project--flutter: Create a Flutter mobile app
devforge list
Show all available frameworks
devforge version
Display DevForge version
🎯 Supported Frameworks
| Framework | Command | Description |
|---|---|---|
| ⚛️ React | --react |
Vite + React with feature-based architecture |
| 🐍 FastAPI | --fastapi |
FastAPI backend with modular features |
| 💙 Flutter | --flutter |
Flutter with Clean Architecture |
🏗️ Project Structure
React Projects
project-name/
├── src/
│ └── features/
│ ├── auth/
│ │ ├── components/
│ │ ├── hooks/
│ │ ├── pages/
│ │ ├── services/
│ │ ├── utils/
│ │ └── types/ # TypeScript only
│ └── [feature-name]/
│ └── ...
├── package.json
└── vite.config.js
FastAPI Projects
project-name/
├── app/
│ ├── main.py
│ └── features/
│ ├── auth/
│ │ ├── models/
│ │ ├── services/
│ │ └── routers/
│ └── [feature-name]/
│ └── ...
└── requirements.txt
Flutter Projects
project-name/
├── lib/
│ ├── main.dart
│ └── features/
│ ├── auth/
│ │ ├── domain/ # Business logic
│ │ ├── data/ # Data sources
│ │ └── presentation/ # UI components
│ │ ├── screens/
│ │ └── widgets/
│ └── [feature-name]/
│ └── ...
└── pubspec.yaml
🎨 Usage Examples
Creating a React Project
$ devforge init --react
🧱 Project name: my-awesome-app
Use TypeScript? (y/n) [y]: y
Enter features (comma separated) [core]: auth,profile,dashboard
⚙️ Creating Vite project...
✅ React project 'my-awesome-app' forged successfully!
📦 Next steps:
cd my-awesome-app
npm install
npm run dev
Creating a FastAPI Project
$ devforge init --fastapi
🧱 Project name: my-api
Enter features (comma separated) [core]: auth,users,posts
✅ FastAPI project 'my-api' forged successfully!
📦 Next steps:
cd my-api
pip install -r requirements.txt
uvicorn app.main:app --reload
Creating a Flutter Project
$ devforge init --flutter
🧱 Project name: my_flutter_app
Enter features (comma separated) [core]: auth,profile,settings
⚙️ Creating Flutter project...
✅ Flutter project 'my_flutter_app' forged successfully!
📦 Next steps:
cd my_flutter_app
flutter pub get
flutter run
🔧 Requirements
For All Projects
- Python 3.8 or higher
- pip
Framework-Specific Requirements
React:
- Node.js 18+ and npm
- Download from: https://nodejs.org
FastAPI:
- No additional requirements (Python only)
Flutter:
- Flutter SDK
- Download from: https://flutter.dev
🧩 Extending DevForge
DevForge is designed to be easily extensible. See ARCHITECTURE.md for detailed documentation on adding new frameworks.
Quick Overview:
- Create a scaffolder in
devforge/scaffolders/your_framework.py - Extend
FrameworkScaffolderbase class - Register it in
scaffolders/__init__.py - Add CLI option in
cli.py
That's it! Your new framework is ready to use.
Example minimal scaffolder:
from .base import FrameworkScaffolder
class MyFrameworkScaffolder(FrameworkScaffolder):
def get_framework_name(self) -> str:
return "MyFramework"
def get_emoji(self) -> str:
return "🎯"
def prompt_user(self) -> Dict[str, any]:
# Prompt for configuration
pass
def create_base_project(self, config: Dict) -> Optional[Path]:
# Create project structure
pass
def create_feature_structure(self, project_path: Path,
features: List[str],
config: Dict) -> None:
# Create feature folders
pass
🤝 Contributing
Contributions are welcome! Here's how you can help:
- Add New Frameworks: Create scaffolders for other popular frameworks
- Improve Existing Scaffolders: Enhance templates and structure
- Fix Bugs: Report and fix issues
- Documentation: Improve docs and examples
📚 Documentation
- Architecture Guide - Detailed architecture documentation
- Adding Frameworks - Step-by-step guide
🐛 Troubleshooting
Command Not Found
If you get "command not found" after installation, make sure Python's Scripts directory is in your PATH:
Windows:
C:\Users\<username>\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.x\LocalCache\local-packages\Python3xx\Scripts
Linux/Mac:
export PATH="$HOME/.local/bin:$PATH"
npm/flutter Not Found
DevForge checks for required tools before scaffolding. If you see errors about missing tools:
- Install the required tool (Node.js, Flutter, etc.)
- Restart your terminal
- Try the command again
📄 License
MIT License - feel free to use this in your own projects!
👨💻 Author
Isaka Mtweve
- Email: isakamtweve69@gmail.com
🌟 Show Your Support
If you find DevForge helpful, consider:
- ⭐ Starring the repository
- 🐛 Reporting bugs
- 💡 Suggesting new features
- 🤝 Contributing code
Happy Forging! 🔥
Metadata
Release files for devforge-cli 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| devforge_cli-1.0.1.tar.gz | 37.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| devforge_cli-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 67.8 kB
Release files / devforge_cli-1.0.1.tar.gz
| Download URL | devforge_cli-1.0.1.tar.gz |
|---|---|
| Size | 37.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c69f3b57eb89fc1c241cfcbc09f5ca558b863d93de35be870a4f1f7bbc80a0b4
|
|
BLAKE2b-256 checksum How to use checksums |
db3bdf36ca0b55f5527f87c8a103c87293441d67cc1bd3f72a5be42ad1552f5d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / devforge_cli-1.0.1-py3-none-any.whl
| Download URL | devforge_cli-1.0.1-py3-none-any.whl |
|---|---|
| Size | 30.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
df48af98c4426cb3077526786c9510ae37dae7fd5911a0c987b76fa8466e9c3e
|
|
BLAKE2b-256 checksum How to use checksums |
2a1673e8e48cfdf1af0e36536e4fca5194f0d45d69ee2eedaa9d85088381101d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|