This project simplifies the creation of a Python SaaS api with the FastAPI framework, SQLAlchemy and Pipenv to create and manage a virtualenv.
- FastAPI framework
- SQLAlchemy (asynchronous) SQL toolkit and Object Relational Mapper
- PostgreSQL
- MySQL
- Oracle
- Microsoft SQL Server
- SQLite
- Alembic database migration tool
- Authentication with OAuth2
- Account
- User Account Crud
- Email password recovery
- Registration email verification
- Notification
- Strategy for notifications
- Store
- Permissions control for owner
- Store segment
- Address
- Address with a so-called "generic foreign key" to accounts and stores
Install Pyenv for Python version management.
Pyenv installation instructions can be found in Pyenv page
Install Python 3.10.
$ pyenv install 3.10
Install Pipenv.
$ pip install --user pipenv
More detailed about Pipenv installation instructions can be found in the Pipenv page.
Create a new virtualenv using Python 3.10.
$ pipenv --python 3.10
Spawns a shell within the virtualenv.
$ pipenv shell
Execute the following commands to install dependencies:
$ make requirements-dev
in production
$ make requirements
Copy and edit the .env file as needed.
$ cp .env.example .env
Execute the following command to create a migration:
$ alembic revision -m "Create catalog_products table"
The migrations will be created in the alembic/versions
folder.
Execute the following command to upgrade to last revision:
$ alembic upgrade head
Execute the following command to downgrade version:
$ alembic downgrade -1
Execute the following command to display the current revision for a database.
$ alembic current
Execute the following command to list the history of migrations:
$ alembic history
Execute the following command to run the application in a development environment:
$ make runserver-dev
Execute the following command to run the application with gunicorn:
$ make runserver
Execute the following command to list all registered routes:
$ make show-routes
Pass the filter
field in query string, as in the example:
[{"field":"foo", "op":"ilike", "value":"%bar%"}]
Operators options are:
is_null, is_not_null, eq, ne, gt, lt, ge, le, like, ilike, not_ilike, in, not_in, any, not_any
Pass the sort
field in query string, as in the example:
[{"field":"foo", "direction":"asc"}]
The base address of RESTful API is http://localhost:8000 and Swagger documentation is http://localhost:8000/docs
Execute the following command to list outdated packages:
$ make outdated
Execute the following command to run celery task queues:
$ make runcelery
Execute the following command to run flower: Flower is a web based tool for monitoring and administrating Celery clusters
$ make runflower
Execute the following command to run all tests:
$ make test
Execute the following command to run test with name match, example:
$ make test-matching test=test_store_view_should_get_segments
Execute the following command to run celery task queues in tenting mode:
$ make runcelery-test
Execute the following command to run test with coverage reports, example:
$ make coverage
Execute the following command to check lint:
$ make check-lint
Execute the following command to try fix lint:
$ make lint
Execute the following command to check security vulnerabilities in packages:
$ make check-safety
If you discover any security related issues, please email fndmiranda@gmail.com instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.