Skip to content

FastAPI is modern and super fast Python framework. As a professional Python developer, I developed the repo for FastAPI in a professional way. If the repo will help you, please give a star and fork it.

Notifications You must be signed in to change notification settings

MahmudJewel/fastapi-starter-kit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FastAPI Starter Kit

A professional FastAPI template

If the repo is helpful, please give a star and fork it.

Click here to clone/fork the repository

Features:

  • FastAPI project structure tree
  • user module
    • id, first name, last name, email as username, password, role, is_active created_at, updated_at
  • admin dashboard => sqladmin
  • authentication => JWT
  • db migration => alembic
  • CORS middleware

Structured Tree

├── alembic     # Manages database migrations
├── alembic.ini
├── app
│   ├── api
│   │   ├── endpoints   # Contains modules for each feature (user, product, payments).
│   │   │   ├── __init__.py
│   │   │   └── user
│   │   │       ├── auth.py
│   │   │       ├── functions.py
│   │   │       ├── __init__.py
│   │   │       └── user.py
│   │   ├── __init__.py
│   │   └── routers     # Contains FastAPI routers, where each router corresponds to a feature.
│   │       ├── api.py
│   │       ├── __init__.py
│   │       └── user.py
│   ├── core    # Contains core functionality like database management, dependencies, etc.
│   │   ├── database.py
│   │   ├── dependencies.py
│   │   ├── __init__.py
│   │   └── settings.py
│   ├── __init__.py
│   ├── main.py     # Initializes the FastAPI app and brings together various components.
│   ├── models      # Contains modules defining database models for users, products, payments, etc.
│   │   ├── admin.py
│   │   ├── common.py
│   │   ├── __init__.py
│   │   └── user.py
│   ├── schemas   # Pydantic model for data validation
│   │   ├── __init__.py
│   │   └── user.py
│   └── utils       # Can include utility functions that are used across different features.
├── requirements.txt # Lists project dependencies.

app/api/endpoints/: Contains modules for each feature (user, product, payments).

app/api/routers/: Contains FastAPI routers, where each router corresponds to a feature.

app/models/: Contains modules defining database models for users, products, payments, etc.

app/core/: Contains core functionality like database management, dependencies, etc.

app/utils/: Can include utility functions that are used across different features.

app/main.py: Initializes the FastAPI app and brings together various components.

tests/: Houses your test cases.

alembic/: Manages database migrations.

docs/: Holds documentation files.

scripts/: Contains utility scripts.

requirements.txt: Lists project dependencies.

Setup

The first thing to do is to clone the repository:

$ https://github.com/MahmudJewel/fastapi-starter-kit

Create a virtual environment to install dependencies in and activate it:

$ cd fastapi-starter-kit
$ python -m venv venv
$ source venv/bin/activate

Then install the dependencies:

# for fixed version
(venv)$ pip install -r requirements.txt

# or for updated version
(venv)$ pip install -r dev.txt

Note the (venv) in front of the prompt. This indicates that this terminal session operates in a virtual environment set up by virtualenv2.

Once pip has finished downloading the dependencies:

# db migrations
(venv)$ alembic upgrade head

# start the server
(venv)$ uvicorn app.main:app --reload

User module's API

SRL METHOD ROUTE FUNCTIONALITY Fields
1 POST /login Login user email, password
2 POST /refresh/?refresh_token= Refresh access token None
3 POST /users/ Create new user email, password, first name, last name
4 GET /users/ Get all users list email, password, first name, last name, role, is_active, created_at, updated_at, id
5 GET /users/me/ Get current user details email, password, first name, last name, role, is_active, created_at, updated_at, id
6 GET /users/{user_id} Get indivisual users details email, password, first name, last name, role, is_active, created_at, updated_at, id
7 PATCH /users/{user_id} Update the user partially email, password, is_active, role
8 DELETE /users/{user_id} Delete the user None
9 GET / Home page None
10 GET /admin Admin Dashboard None

Tools

Back-end

Language:

Python

Frameworks:

FastAPI
pydantic

Other libraries / tools:

SQLAlchemy
starlette
uvicorn
python-jose
alembic

For production level project, Please follow this repo https://github.com/MahmudJewel/fastapi-production-kit

Happy Coding