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_dborsqlite+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:
- API docs: http://127.0.0.1:8000/docs
- Health: http://127.0.0.1:8000/
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.envconfigsrc/utils/db.py— Async DB engine, session factory, and init helperssrc/utils/logger.py— Configured logger with colored outputsrc/static_values/— (optional) constant/value definitions used across the apptest/— 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.mdfile has commands and run/debug tips for development.
Notes & TODOs
- The repository contains placeholders for auth routers and a placeholder
create_default_admin_if_missingfunction. Replace these with your production logic and migrations as needed. - For any production deployment, avoid storing secrets in
.envfiles 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
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 fastappear-0.2.0.tar.gz.
File metadata
- Download URL: fastappear-0.2.0.tar.gz
- Upload date:
- Size: 31.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
90c64e3c6d981256293ddf5d5f56b1f94a6c7158ce03ffc62bbf8f1122959bb7
|
|
| MD5 |
745610a10c7383f38129f7b542c200ab
|
|
| BLAKE2b-256 |
ccc3fdd45d16665e311cfc07fb2e14df5e61c61d800d59b16cded2760d7f25dd
|
File details
Details for the file fastappear-0.2.0-py3-none-any.whl.
File metadata
- Download URL: fastappear-0.2.0-py3-none-any.whl
- Upload date:
- Size: 42.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
babfd5176a0d99e6a55678384ef6f462c1c678331a24a0c665e5fc8541bed60c
|
|
| MD5 |
275f01c3a33f855bf711f9593c5367d4
|
|
| BLAKE2b-256 |
b828b2e8c4efc9fca3e767cc3e7cc12b85a8a4c452064a39bc025513b1636cf4
|