- ⚡ FastAPI for the Python backend API.
- 🧰 SQLModel for the Python SQL database interactions (ORM).
- 🔍 Pydantic, used by FastAPI, for the data validation and settings management.
- 💾 PostgreSQL as the SQL database.
- 🚀 React for the frontend.
- 💃 Using TypeScript, hooks, Vite, and other parts of a modern frontend stack.
- 🎨 Chakra UI for the frontend components.
- 🤖 An automatically generated frontend client.
- 🦇 Dark mode support.
- 🐋 Docker Compose for development and production.
- 🔒 Secure password hashing by default.
- 🔑 JWT (JSON Web Token) authentication.
- 📫 Email based password recovery.
- ✅ Tests with Pytest.
- 📞 Traefik as a reverse proxy / load balancer.
- 🚢 Deployment instructions using Docker Compose, including how to set up a frontend Traefik proxy to handle automatic HTTPS certificates.
- 🏭 CI (continuous integration) and CD (continuous deployment) based on GitHub Actions.
You can just fork or clone this repository and use it as is.
✨ It just works. ✨
commit messages
new - newly implemented user-facing features
chg - changes in existing user-facing features
fix - user-facing bugfixes
oth - other changes which users should know about
dev - any developer-facing changes, regardless of
new/chg/fix status
You can then update configs in the .env
files to customize your configurations.
Before deploying it, make sure you change at least the values for:
SECRET_KEY
FIRST_SUPERUSER_PASSWORD
POSTGRES_PASSWORD
You can (and should) pass these as environment variables from secrets.
Read the deployment.md docs for more details.
Some environment variables in the .env
file have a default value of changethis
.
You have to change them with a secret key, to generate secret keys you can run the following command:
python -c "import secrets; print(secrets.token_urlsafe(32))"
Copy the content and use that as password / secret key. And run that again to generate another secure key.
The input variables, with their default values (some auto generated) needed for your .env are:
project_name
: (default:"FastAPI Project"
) The name of the project, shown to API users (in .env).stack_name
: (default:"fastapi-project"
) The name of the stack used for Docker Compose labels and project name (no spaces, no periods) (in .env).secret_key
: (default:"changethis"
) The secret key for the project, used for security, stored in .env, you can generate one with the method above.first_superuser
: (default:"[email protected]"
) The email of the first superuser (in .env).first_superuser_password
: (default:"changethis"
) The password of the first superuser (in .env).smtp_host
: (default: "") The SMTP server host to send emails, you can set it later in .env.smtp_user
: (default: "") The SMTP server user to send emails, you can set it later in .env.smtp_password
: (default: "") The SMTP server password to send emails, you can set it later in .env.emails_from_email
: (default:"[email protected]"
) The email account to send emails from, you can set it later in .env.postgres_password
: (default:"changethis"
) The password for the PostgreSQL database, stored in .env, you can generate one with the method above.sentry_dsn
: (default: "") The DSN for Sentry, if you are using it, you can set it later in .env.
Backend docs: backend/README.md.
Frontend docs: frontend/README.md.
Deployment docs: deployment.md.
General development docs: development.md.
This includes using Docker Compose, custom local domains, .env
configurations, etc.
Check the file release-notes.md.
This project is sourced using a template which is licensed under the terms of the MIT license. This project was setup using a FastAPI template project made by https://github.com/tiangolo - huge shoutout to what he's working on. Any changes or additional edits made by the Mumbo team are uniquely our own.