A template to start on FastAPI backend projects.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
You'll need [email protected]
, pipenv
and postgresql@12
installed on your system to run the project.
Run the following command to install all the project dependencies.
pipenv install
Make sure your local PostgreSQL server is running on http://localhost:5432
. Then, create a new database called fastapi_db
.
psql postgres
postgres=# create database fastapi_db;
Note: If you have a different database URL, set it in the .env
environment file.
Now, run the prestart.sh
script that'll create the tables and add initial data.
./prestart.sh
If there are any changes to the SQLALCHEMY_DATABASE_URI
key in the .env
file, please run the prestart.sh
script again.
After all the above mentioned steps, you can start the application using the following command:
python -m app.main
The application will be available at https://localhost:8000.
These instructions will provide you some useful information on developing this application.
If there are any changes to the SQLAlchemy ORM models, you can run the following command to generate alembic
migrations.
alembic revision --autogenerate -m "<migration message>"
This command will generate a new migration file in the migrations
directory. Remember to check the generated migration file before committing.
The application unit tests are inside the app/tests
module.
Run the following command in the terminal to execute the application unit tests.
pytest app/tests
The application can be deployed in production using gunicorn
, you don't need to make any code changes for the same.
Head over to the Uvicorn Deployment documentation for complete instructions.
- FastAPI - The API framework used
- SQLAlchemy - Database ORM
- Pipenv - Dependency and virtual environment manager
- Surya Kant Bansal - Initial work - skb1129
This project is licensed under the MIT License - see the LICENSE file for details