A professional FastAPI template
- 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.
│ │ ├── main_router.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.
Create a virtual environment to install dependencies in and activate it:
$ cd fastapi-openai-example
$ python -m venv venv
$ source venv/bin/activateThen install the dependencies:
(venv)$ pip install -r requirements.txtOnce pip has finished downloading the dependencies:
# db migrations
(venv)$ alembic upgrade head
# start the server
(venv)$ fastapi dev app/main.py # using fastapi CLI ==> after version 0.100.0
or
(venv)$ uvicorn app.main:app --reload # using directly uvicorn ==> old one => before version 0.100.0| 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-boilerplate