Skip to main content

Easily generate a template for your Fastapi applications, complete with JWT authentication and Google sign-in

Project description

Fast Template

Easily generate a template for your FastAPI applications, complete with JWT authentication and Google sign-in.

Installation

You can install Fast Template via pip:

pip install fast-template-python

Or using poetry:

poetry add fast-template-python

Usage

To initialize a project in an existing folder:

fast-template init project_name .

To create a new project:

fast-template init project_name

Once the template is set up, you'll need to create a .env file as required by the settings.py file (feel free to modify it to suit your needs). An example of a .env is:

POSTGRES_URL = postgresql+asyncpg://postgres@localhost/your_db_name

ACCESS_TOKEN_SECRET = Your-Access-Token-Secret
REFRESH_TOKEN_SECRET = Your-Refresh-Token-Secret
RESET_PASSWORD_SECRET = Your-Reset-Password-Secret

SECRET_KEY = Your-Secret-Key

JWT_ALGORITHM = HS256

MAIL_USERNAME = yourname@yourmail.com
MAIL_FROM_NAME = Your-Name
MAIL_PASSWORD = yourmailpassword
MAIL_FROM = yourname@yourmail.com
MAIL_PORT = 000 # 587 for gmail
MAIL_SERVER = your_mail_server # smtp.gmail.com for gmail

REDIS_HOST = localhost
REDIS_PORT = 6379

GOOGLE_CLIENT_ID = YOUR_GOOGLE_CLIENT_ID
GOOGLE_CLIENT_SECRET = YOUR_GOOGLE_CLIENT_SECRET
GOOGLE_REDIRECT_URI = https://yourdomain.com/auth/google/callback

Migrations

You can set up database migrations using Alembic:

alembic init —template async migrations

For more information on using Alembic, check the official tutorial.

Features

Authentication

  • JWT-based authentication is built-in.
  • Google sign-in is fully integrated, right down to the database layer.

Extensible Folder Structure

The folder structure is designed to be modular and scalable, inspired by Philip Okiokio (LinkedIn, GitHub). It promotes loose coupling and clean separation of concerns.

Each operation is handled by three main layers:

  1. Router Layer: Defines FastAPI routes.
  2. Service Layer: Contains the business logic.
  3. Database Layer: Manages database interactions.

The data flow is structured as follows:

Router Layer → Service Layer → Database Layer

The service layer handles the data exchange between the router and the database, while the router serializes requests and passes them to the service.

The folder structure on running

fast-template init totrac

is

TOTRAC
├── database
│   ├── db_handlers
│   │   ├── __init__.py
│   │   ├── auth_db_handler.py
│   ├── orms
│   │   ├── __init__.py
│   │   ├── auth_orm.py
├── job_manager
│   ├── email
│   │   ├── mailer.py
│   ├── job_runner.py
├── root
│   ├── templates
│   │   ├── auth
│   │   │   ├── info_email_template.html
│   ├── utils
│   │   ├── abstract_base.py
│   │   ├── base_models_abstract.py
│   ├── app_routers.py
│   ├── app.py
│   ├── arq_worker.py
│   ├── constants.py
│   ├── database.py
│   ├── logging.py
│   ├── redis_manager.py
│   ├── settings.py
├── routers
│   ├── __init__.py
│   ├── auth_router.py
│   ├── miscellaneous_router.py
├── schemas
│   ├── __init__.py
│   ├── auth_schemas.py
│   ├── error_messages_schema.py
│   ├── file_upload_schema.py
│   ├── response_info_schema.py
├── services
│   ├── utils
│   │   ├── auth_utils.py
│   │   ├── exceptions.py
│   │   ├── file_downloader.py
│   │   ├── file_uploader_utils.py
│   │   ├── google_auth_utils.py
│   │   ├── token_utils.py
│   ├── auth_services.py
│   ├── miscellaneous_services.py
├── venv
├── __init__.py
├── .gitignore
├── make_db_migrations.py
├── Makefile
├── pyproject.toml
├── Readme.md
├── requirements.txt

Pre-configured Services

The root folder contains core services required for the backend, including:

  1. Database setup
  2. Redis caching
  3. Email templates
  4. Background workers (using ARQ)
  5. Logging configuration
  6. Application settings

Schema and Database Layers

  • Schema: Pydantic models for serialization/deserialization, organized by feature (e.g., authentication schemas are in the auth folder).
  • Database: Handlers and ORM integration using SQLAlchemy.

Work in Progress

This package is a work in progress, created to streamline the setup of backend projects.

🐛 Bugs/Feature Requests

Contributions are welcome! Feel free to open a pull request or an issue for feature requests or bug reports.

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

fast_template_python-0.1.4.tar.gz (24.0 kB view details)

Uploaded Source

Built Distribution

fast_template_python-0.1.4-py3-none-any.whl (36.6 kB view details)

Uploaded Python 3

File details

Details for the file fast_template_python-0.1.4.tar.gz.

File metadata

  • Download URL: fast_template_python-0.1.4.tar.gz
  • Upload date:
  • Size: 24.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.8.2 Darwin/23.0.0

File hashes

Hashes for fast_template_python-0.1.4.tar.gz
Algorithm Hash digest
SHA256 861939349bc5c1196915db7abf5296bac6300ec55f7595b945b070240ed26fa8
MD5 0e55edd0ae37138a44c1ef23de0362fa
BLAKE2b-256 157a5695517f3624fb5b0a997e6e059fafcb62b056a945e942b8928b462c8081

See more details on using hashes here.

File details

Details for the file fast_template_python-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for fast_template_python-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 b60102d16aa50269deef18d81e6761546c889851843b680e121d2077bfa9782d
MD5 4d3eaacd66e74454de056bc0810456bb
BLAKE2b-256 77f64cb5c378f3ff58824623314519f869379cf6ca2afe4e55bb94d8729d57f9

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