Skip to content

ndugram/fastgram-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

20 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

fastgram

A modern CLI tool for FastAPI developers - initialize projects with middleware, manage settings, and generate SSL certificates.

Python Version License PyPI Version

Features

  • πŸš€ Initialize FastAPI project structure with Django-like folder layout
  • πŸ” Generate self-signed SSL certificates
  • πŸ“¦ Pre-configured middleware (CORS, Request ID, Logging, Rate Limit)
  • βš™οΈ Centralized settings (server, middleware, rate limits)
  • πŸ’… Beautiful output with Rich library
  • ⚑ Fast and easy to use
  • πŸ“¦ Ready for PyPI publication

Installation

From GitHub

pip install git+https://github.com/ndugram/fastgram-cli.git

From Source

git clone https://github.com/ndugram/fastgram-cli.git
cd fastgram
pip install -e .

Quick Start

# Initialize a new project
fastgram init myproject

# Enter project directory
cd myproject

# Start development server
python manage.py runserver

# Open in browser
# http://127.0.0.1:8000
# API docs: http://127.0.0.1:8000/docs

Initialize Project

fastgram init [name]

Creates a new FastAPI project structure with pre-configured middleware:

project_name/
β”œβ”€β”€ api/
β”‚   └── __init__.py
β”œβ”€β”€ core/
β”‚   └── __init__.py
β”œβ”€β”€ database/
β”‚   └── __init__.py
β”œβ”€β”€ schema/
β”‚   └── __init__.py
β”œβ”€β”€ service/
β”‚   └── __init__.py
β”œβ”€β”€ views/
β”‚   └── __init__.py
β”œβ”€β”€ middleware/
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ cors.py
β”‚   β”œβ”€β”€ logging.py
β”‚   β”œβ”€β”€ rate_limit.py
β”‚   β”œβ”€β”€ request_id.py
β”‚   └── loader.py
β”œβ”€β”€ main.py
β”œβ”€β”€ manage.py
└── settings.py

Default project name: backend

Middleware

Generated projects include these middleware by default:

Middleware Description
RateLimitMiddleware Rate limiting (default: 5 requests/second)
LoggingMiddleware Logs incoming HTTP requests
CORSMiddleware Cross-Origin Resource Sharing (permissive)
RequestIDMiddleware Adds unique request ID to each request

Configure Middleware

Edit settings.py to modify middleware:

MIDDLEWARE = [
    "middleware.rate_limit.RateLimitMiddleware",
    "middleware.logging.LoggingMiddleware",
    "middleware.cors.CORSMiddleware",
    "middleware.request_id.RequestIDMiddleware",
]

Rate Limit Settings

Configure rate limiting in settings.py:

RATE_LIMIT_LIMIT = "5/second"  # Format: "<count>/<second|minute>"

Settings

All configuration is centralized in settings.py:

SECRET_KEY = "generated_secret_key_here"

# Database settings
DB_URL = "sqlite+aiosqlite:///./db.sqlite3"

# Server settings
HOST = "127.0.0.1"
PORT = 8000
RELOAD = True

# Rate limit settings
RATE_LIMIT_LIMIT = "5/second"

# Middleware registration
MIDDLEWARE = [
    "middleware.rate_limit.RateLimitMiddleware",
    "middleware.logging.LoggingMiddleware",
    "middleware.cors.CORSMiddleware",
    "middleware.request_id.RequestIDMiddleware",
]

Generate SSL Certificates

Creates SSL certificates in certs/ directory:

  • certs/cert.pem - SSL certificate
  • certs/key.pem - Private key

Commands

Command Description
init [name] Initialize FastAPI project structure
ssl Generate self-signed SSL certificates
help Show available commands

manage.py Commands

After initializing a project, use manage.py for development tasks:

cd myproject

Run Development Server

python manage.py runserver                    # Default: 127.0.0.1:8000
python manage.py runserver --host 0.0.0.0     # Bind to all interfaces
python manage.py runserver --port 8080        # Custom port
python manage.py runserver --noreload         # Disable auto-reload

Database Migration

python manage.py migrate                      # Create database tables

Show Help

python manage.py help

Project Structure

Generated projects follow a clean architecture:

myproject/
β”œβ”€β”€ api/          # API route handlers
β”œβ”€β”€ core/         # Core application settings
β”œβ”€β”€ database/     # Database models and connections
β”œβ”€β”€ middleware/   # Custom middleware (CORS, Logging, Rate Limit, etc.)
β”œβ”€β”€ schema/       # Pydantic schemas
β”œβ”€β”€ service/      # Business logic
β”œβ”€β”€ views/        # View controllers
β”œβ”€β”€ main.py       # FastAPI application entry point
β”œβ”€β”€ manage.py     # Django-like management script
└── settings.py   # Centralized configuration

Requirements

  • Python 3.10+
  • OpenSSL (for SSL certificate generation)

Contributing

Contributions are welcome! Please read our Contributing Guide.

Security

For security issues, please read our Security Policy.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

fastai-cli terminal python

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages