FastAPI project scaffolder — zero dependencies, one command.
Project description
fullapi
A FastAPI project scaffolder that generates complete project structures with one command. Built with pure Python stdlib - no external dependencies.
Installation
Install from PyPI:
pip install fullapi
Or install from source:
git clone https://github.com/sahilnyk/fullapi.git
cd fullapi
pip install -e .
Quick Start
Create a new project interactively:
fullapi new my_project
This starts an interactive prompt where you select:
- Mode (basic or full)
- Database (none, sqlite, postgresql, mysql)
- Authentication (none or JWT)
- Docker support
Commands
| Command | Description |
|---|---|
fullapi new <name> |
Create new project with prompts |
fullapi new <name> --basic |
Basic mode, skip prompts |
fullapi new <name> --full |
Full mode, skip prompts |
fullapi new <name> --full --db postgresql --auth --docker |
All features |
fullapi --version |
Show version |
fullapi --help |
Show help |
CLI Flags
| Flag | Values | Description |
|---|---|---|
--basic |
- | Minimal project structure |
--full |
- | Complete production structure |
--db |
none, sqlite, postgresql, mysql | Database choice |
--auth |
- | Add JWT authentication |
--docker |
- | Add Docker files |
What Gets Created
Basic Mode
A minimal starting point for small APIs:
my_project/
├── main.py
├── routers/
│ └── health.py
├── schemas/
│ └── base.py
├── core/
│ └── config.py
└── requirements.txt
Full Mode
Production-ready structure with all components:
my_project/
├── main.py
├── routers/
│ ├── __init__.py
│ ├── health.py
│ └── users.py
├── models/
│ ├── __init__.py
│ └── user.py
├── schemas/
│ ├── __init__.py
│ ├── base.py
│ └── user.py
├── crud/
│ ├── __init__.py
│ └── user.py
├── core/
│ ├── __init__.py
│ ├── config.py
│ └── security.py (if --auth)
├── db/
│ ├── __init__.py
│ └── session.py (if --db)
├── tests/
│ └── test_main.py
├── deps.py
├── .env.example
├── requirements.txt
├── Dockerfile (if --docker)
└── docker-compose.yml (if --docker)
Features
- Interactive prompts for configuration
- CLI flags for automation
- Database support: SQLite, PostgreSQL, MySQL
- JWT authentication with OAuth2
- Docker and docker-compose setup
- Progress bar during scaffolding
- Overwrite protection for existing directories
- Zero external dependencies
Examples
Basic API:
fullapi new my_api --basic
Full API with PostgreSQL:
fullapi new my_api --full --db postgresql
Complete setup with everything:
fullapi new my_api --full --db postgresql --auth --docker
Running Your Project
After scaffolding:
cd my_project
pip install -r requirements.txt
uvicorn main:app --reload
Visit http://localhost:8000/docs for the auto-generated API documentation.
Architecture
fullapi is built entirely with Python standard library:
- argparse for CLI parsing
- pathlib for file operations
- string.Template for code generation
- ANSI escape codes for terminal output
The tool uses a simple dataclass (ProjectConfig) to drive all decisions. No complex logic or external templating engines.
Contributing
Contributions are welcome. Guidelines:
- Keep it stdlib only - no new dependencies
- Write clean, readable code
- Test your changes before submitting
- One feature per PR
To contribute:
# Fork and clone
git clone https://github.com/sahilnyk/fullapi.git
cd fullapi
# Make changes
# ...
# Test
pip install -e .
fullapi new test_project --full
# Submit PR
Roadmap
- Basic scaffolding (done)
- Full scaffolding with models/CRUD (done)
- Database support (done)
- JWT authentication (done)
- Docker support (done)
- Progress bar (done)
- Add router/model to existing projects (planned)
- Alembic migrations (planned)
- Redis support (planned)
- Custom templates (planned)
License
MIT License - see LICENSE file for details.
Author
Sahil Nayak - https://github.com/sahilnyk
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fullapi-1.0.0.tar.gz.
File metadata
- Download URL: fullapi-1.0.0.tar.gz
- Upload date:
- Size: 13.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1307acdf866018e517bddcc19511459ee44ce1d06f09ba202f7f4c5a72c80a32
|
|
| MD5 |
494b8d2b41ff325500d9cc443538f438
|
|
| BLAKE2b-256 |
2be8b49b94e387ca15fe54586d9751c9abb8c07dcf795d99d7ab827031953f96
|
File details
Details for the file fullapi-1.0.0-py3-none-any.whl.
File metadata
- Download URL: fullapi-1.0.0-py3-none-any.whl
- Upload date:
- Size: 16.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af43f4af288ff19dceceaa1ec942da79fa85fe46fd545835dbe966b5f00862cc
|
|
| MD5 |
2be591c57320302c90c198be318d5c15
|
|
| BLAKE2b-256 |
119497ae4b6a45c79fcd7f50f5aa6ac150de08af70a4f8e973eb530dcdbfb070
|