A professional FastAPI template
If the repo is helpful, please give a star and fork it.
Click here to clone/fork the repository- 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
├── 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.
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
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 |
Python
FastAPI
pydantic
SQLAlchemy
starlette
uvicorn
python-jose
alembic
For production level project, Please follow this repo https://github.com/MahmudJewel/fastapi-production-kit