I have used Beanie ODM for MongoDB database model with FastAPI.
If the repo is helpful for you, please give a star and fork it.
Click here to download/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
- RBAC implementation
- authentication => JWT
- middleware
- three types of server
- production, development, test
- UUID as primary key
SRL | METHOD | ROUTE | FUNCTIONALITY | Fields | Access |
---|---|---|---|---|---|
1 | POST | /login |
Login user | email, password | All User |
2 | POST | /refresh/?refresh_token= |
Refresh access token | None | All User |
3 | POST | /users/ |
Create new user | email, password, first name, last name | Anyone |
4 | GET | /users/ |
Get all users list | email, password, first name, last name, role, is_active, created_at, updated_at, id | Admin |
5 | GET | /users/me/ |
Get current user details | email, password, first name, last name, role, is_active, created_at, updated_at, id | Any User |
6 | GET | /users/{user_id} |
Get indivisual users details | email, password, first name, last name, role, is_active, created_at, updated_at, id | Any User |
7 | PATCH | /users/{user_id} |
Update the user partially | email, password, is_active, role | Admin |
8 | DELETE | /users/{user_id} |
Delete the user | None | Admin |
├── 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.
│ │ ├── 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.
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-MongoDB-Template
- Create a virtual environment to install dependencies in and activate it:
$ cd fastapi-booking-module
$ python -m venv venv
$ source venv/bin/activate
- Then install the dependencies:
# for fixed version
(venv)$ pip install -r requirements.txt
Note the (venv)
in front of the prompt. This indicates that this terminal
session operates in a virtual environment set up by venv
.
- Now rename .env.example to .env and give the information on the .env file.
- Then Run the project
(venv)$ uvicorn app.main:app --reload
Python
FastAPI
pydantic
beanie (MongoDB)
motor
starlette
uvicorn
python-jose
python-dotenv
google-auth