Skip to main content

Add your description here

Project description

fastAppear

fastAppear is a small FastAPI project that provides a starting template for building REST APIs with async SQLModel + SQLAlchemy, JWT-based authentication, and a clean project layout.

This repository includes:

  • FastAPI application with a simple lifespan handler and middleware
  • Async database helper utilities using SQLAlchemy async engine + SQLModel
  • Simple logger with colored console output
  • Sample auth endpoints (placeholders), a health endpoint, and a documented OpenAPI UI

Table of Contents

  • Features
  • Getting started
    • Prerequisites
    • Installation
    • Environment variables (.env)
  • Running the app
  • Testing
  • Project structure
  • Contributing
  • License

Features

  • FastAPI app with startup/shutdown lifecycle handling
  • Async DB setup (SQLAlchemy async + SQLModel)
  • JWT configuration via environment variables
  • CORS middleware and request timing middleware
  • Ready-to-extend router placeholders for auth

Getting started

Prerequisites

  • Python 3.11 or newer
  • (Optional) Poetry for dependency management or use pip with a virtualenv

Installation (recommended: Poetry)

uv sync

Environment variables (.env)

Copy the example .env file and fill values for your environment. Example variables used by the app:

  • DB_URI (required): Database connection string, e.g. postgresql://user:pass@localhost:5432/fastappear_db or sqlite+aiosqlite:///./dev.db
  • ROOT_PATH (optional): App root path — used if deploying behind a reverse proxy
  • LOGGING_LEVEL: DEBUG/INFO/WARNING/ERROR/CRITICAL
  • JWT_SECRET_KEY (required): A secure secret for JWT signing.
  • JWT_ALGORITHM: default HS512
  • JWT_ACCESS_TOKEN_EXPIRE_MINUTES: default 720
  • JWT_REFRESH_TOKEN_EXPIRE_DAYS: default 7

Tip: You can generate a secure secret via Python secrets.token_urlsafe(64):

python -c "import secrets; print(secrets.token_urlsafe(64))"

Running the app

There are two common ways to run the app locally.

gunicorn -k uvicorn.workers.UvicornWorker -c gunicorn_conf.py src.main:app

Open the following URLs:


Testing

Run the tests with pytest:

pytest -q

Note: The repository includes pytest and pytest-asyncio. If you plan to test DB integration, configure a test DB and pass DB_URI in your environment.


Project structure

Key files and folders:

  • src/main.py — FastAPI app entry point (lifespan, middleware, router configuration)
  • src/config.py — Pydantic-based settings and .env config
  • src/utils/db.py — Async DB engine, session factory, and init helpers
  • src/utils/logger.py — Configured logger with colored output
  • src/static_values/ — (optional) constant/value definitions used across the app
  • test/ — tests for the project

Contributing

Contributions are welcome. A few suggestions:

  • Open a GitHub issue if you'd like to propose a significant change
  • For small fixes or features, submit a PR against main
  • Implement features in small, reviewable changes and include tests

Developer tips:

  • The scripts/ directory contains helper scripts to scaffold modules and tests.
  • The dev_docs/commands.md file has commands and run/debug tips for development.

Notes & TODOs

  • The repository contains placeholders for auth routers and a placeholder create_default_admin_if_missing function. Replace these with your production logic and migrations as needed.
  • For any production deployment, avoid storing secrets in .env files and use a secrets manager instead (AWS Secrets Manager, Hashicorp Vault, etc.).

License

This project uses the repository's LICENSE file — follow the project's license for any reuse.


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

fastappear-0.1.0.tar.gz (12.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fastappear-0.1.0-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

Details for the file fastappear-0.1.0.tar.gz.

File metadata

  • Download URL: fastappear-0.1.0.tar.gz
  • Upload date:
  • Size: 12.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.14

File hashes

Hashes for fastappear-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a9e780cc321236ae1ab78e6769b1cc59a01be793a92f47a63d0035fcac5b6a38
MD5 db93535bfc380652900ce91ec72c499c
BLAKE2b-256 df5d9482ed39fdddad40f6e3f106a0149a7019978083a3356bc74a59c14c8db4

See more details on using hashes here.

File details

Details for the file fastappear-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: fastappear-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 14.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.14

File hashes

Hashes for fastappear-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4a002923cce974228d37b9231f928a666f19dbae408e955c54e7d5e2e05f8630
MD5 362f2ecc93bca55c8f76c333d25eec39
BLAKE2b-256 4fdefd30fd04b39d2113da4f4268d328cb4e23e8a1ca3cc7637e1f5a56d39078

See more details on using hashes here.

Supported by

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