Skip to main content

A structured Flask API boilerplate with built-in AI capabilities, featuring SQLModel ORM and Pydantic validation

Project description

Flask Structured API

A production-ready Flask API framework with built-in storage, authentication, and AI capabilities. Designed for developers who need a robust foundation for building scalable APIs while following best practices.

✨ Core Features

🏗️ Model-First Architecture

  • SQLModel + Pydantic for type-safe database operations
  • Comprehensive validation with detailed error messages
  • Clear separation between core and custom components
  • Standardized response formats

🔐 Authentication & Security

  • JWT token-based authentication
  • API key management with scoping
  • Role-based access control (RBAC)
  • Request validation and sanitization
  • Hash-based secure storage

📦 Storage System

  • On-demand request/response storage
  • Session-based data organization
  • Compression for large payloads
  • TTL-based expiration
  • Flexible querying with metadata filters

🤖 AI Integration

  • Provider-agnostic interface
  • Response validation
  • Automatic retry mechanisms
  • Error handling with fallbacks

🔧 Developer Experience

  • OpenAPI/Swagger documentation
  • Remote debugging support
  • Environment-based configuration
  • Comprehensive error handling
  • Warning collection system

🚀 Getting Started

Option 1: Using PyPI Package (Simplest)

# Install the core package
pip install flask-structured-api

# Create new project
mkdir my-api && cd my-api

# Initialize basic structure
flask-api init

# Install dependencies
pip install -r requirements.txt

Note: When using the PyPI package, you'll need to set up your own PostgreSQL and Redis services.

Option 2: Clean Initialize with Docker (Recommended)

For a fresh start with full Docker support:

# Create and enter project directory
mkdir my-api && cd my-api

# Initialize empty git repo
git init

# Add boilerplate as remote
git remote add boilerplate https://github.com/julianfleck/flask-structured-api.git

# Pull files without history
git pull boilerplate main --allow-unrelated-histories

# Make initial commit
git add .
git commit -m "Initial commit from boilerplate"

# Start services
docker-compose up -d

Option 3: Direct Clone

If you want to preserve boilerplate history (not recommended for production):

# Clone the repo
git clone https://github.com/julianfleck/flask-structured-api.git my-api
cd my-api

# Start services
docker-compose up -d

⚙️ Configuration

Essential environment variables:

# Required
FLASK_APP=flask_structured_api.main:app
DATABASE_URL=postgresql://user:password@localhost:5432/dbname
REDIS_URL=redis://localhost:6379/0
SECRET_KEY=your-secret-key

# Optional
AI_PROVIDER=openai
AI_API_KEY=your-api-key

📚 Documentation

💡 Example Usage

Protected Endpoint

from flask import Blueprint
from flask_structured_api.core.auth import require_auth
from flask_structured_api.models.responses import SuccessResponse

bp = Blueprint('example', __name__)

@bp.route('/hello', methods=['GET'])
@require_auth
def hello_world():
    return SuccessResponse(
        message="Hello, World!",
        data={"authenticated": True}
    ).dict()

Storage Decorator

from flask_structured_api.core.storage import store_api_data

@bp.route('/ai/generate', methods=['POST'])
@require_auth
@store_api_data()  # Automatically stores request/response
def generate():
    result = ai_service.generate(request.json)
    return SuccessResponse(data=result).dict()

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Submit a pull request

See CONTRIBUTING.md for guidelines.

📝 License

This project is licensed under the Apache License 2.0 - see LICENSE and NOTICE for details.

When using this project, please include the following attribution in your documentation:

Based on Flask Structured API (https://github.com/julianfleck/flask-structured-api)
Created by Julian Fleck and contributors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flask_structured_api-0.1.3.tar.gz (81.3 kB view details)

Uploaded Source

Built Distribution

flask_structured_api-0.1.3-py3-none-any.whl (81.5 kB view details)

Uploaded Python 3

File details

Details for the file flask_structured_api-0.1.3.tar.gz.

File metadata

  • Download URL: flask_structured_api-0.1.3.tar.gz
  • Upload date:
  • Size: 81.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for flask_structured_api-0.1.3.tar.gz
Algorithm Hash digest
SHA256 91aa4d66508a5aa9a7518a650d4c86c3810a3b5361e58f3a57e097194c50bd68
MD5 ca97b6fc9f4daf2295905189bbdaa250
BLAKE2b-256 33ca357ca065ee138108970bbde1a8c0dc56a2d124a513bcbc567ae85e0f974b

See more details on using hashes here.

File details

Details for the file flask_structured_api-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for flask_structured_api-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0525528bf9c81528a9aca142eca421b1422c4dc7f5200aedab2e6c012b7f400a
MD5 1cd620dbc17b5d49316c508cd9e81345
BLAKE2b-256 bf0bfee8aceff6d0dcb95bbea4ebd1b1e8b5d4af1d1ccd8f4cd3c8f104384578

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page