/realworld-practice

Primary LanguagePythonMIT LicenseMIT

FastAPI Boilerplate

A template to start on FastAPI backend projects.

Getting Started

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.

Prerequisites

You'll need python@3.8, pipenv and postgresql@12 installed on your system to run the project.

Installing

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.

Running

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.

Development

These instructions will provide you some useful information on developing this application.

Migrations

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.

Testing

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

Deployment

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.

Built With

Authors

  • Surya Kant Bansal - Initial work - skb1129

License

This project is licensed under the MIT License - see the LICENSE file for details