|
| 1 | +# Full Stack FastAPI Project |
| 2 | + |
| 3 | +## Technology Stack and Features |
| 4 | + |
| 5 | +- ⚡ [**FastAPI**](https://fastapi.tiangolo.com) for the Python backend API. |
| 6 | + - 🧰 [SQLModel](https://sqlmodel.tiangolo.com) for the Python SQL database interactions (ORM). |
| 7 | + - 🔍 [Pydantic](https://docs.pydantic.dev), used by FastAPI, for the data validation and settings management. |
| 8 | + - 💾 [PostgreSQL](https://www.postgresql.org) as the SQL database. |
| 9 | +- 🚀 [React](https://react.dev) for the frontend. |
| 10 | + - 💃 Using TypeScript, hooks, Vite, and other parts of a modern frontend stack. |
| 11 | + - 🎨 [Chakra UI](https://chakra-ui.com) for the frontend components. |
| 12 | + - 🤖 An automatically generated frontend client. |
| 13 | + - 🧪 [Playwright](https://playwright.dev) for End-to-End testing. |
| 14 | + - 🦇 Dark mode support. |
| 15 | +- 🐋 [Docker Compose](https://www.docker.com) for development and production. |
| 16 | +- 🔒 Secure password hashing by default. |
| 17 | +- 🔑 JWT (JSON Web Token) authentication. |
| 18 | +- 🔑 Google OAuth authentication. |
| 19 | +- 📫 Email based password recovery. |
| 20 | +- ✅ Tests with [Pytest](https://pytest.org). |
| 21 | +- 📞 [Traefik](https://traefik.io) as a reverse proxy / load balancer. |
| 22 | + |
| 23 | +### Dashboard Login |
| 24 | + |
| 25 | +[](https://github.com/fastapi/full-stack-fastapi-template) |
| 26 | + |
| 27 | +### Dashboard - Admin |
| 28 | + |
| 29 | +[](https://github.com/fastapi/full-stack-fastapi-template) |
| 30 | + |
| 31 | +### Dashboard - Create User |
| 32 | + |
| 33 | +[](https://github.com/fastapi/full-stack-fastapi-template) |
| 34 | + |
| 35 | +### Dashboard - Items |
| 36 | + |
| 37 | +[](https://github.com/fastapi/full-stack-fastapi-template) |
| 38 | + |
| 39 | +### Dashboard - User Settings |
| 40 | + |
| 41 | +[](https://github.com/fastapi/full-stack-fastapi-template) |
| 42 | + |
| 43 | +### Dashboard - Dark Mode |
| 44 | + |
| 45 | +[](https://github.com/fastapi/full-stack-fastapi-template) |
| 46 | + |
| 47 | +### Interactive API Documentation |
| 48 | + |
| 49 | +[](https://github.com/fastapi/full-stack-fastapi-template) |
| 50 | + |
| 51 | +## Configuration |
| 52 | + |
| 53 | +Update configs in the `.env` file to customize your configurations. |
| 54 | + |
| 55 | +Before deploying, make sure you change at least the values for: |
| 56 | + |
| 57 | +- `SECRET_KEY` |
| 58 | +- `FIRST_SUPERUSER_PASSWORD` |
| 59 | +- `POSTGRES_PASSWORD` |
| 60 | +- `GOOGLE_CLIENT_ID` |
| 61 | +- `GOOGLE_CLIENT_SECRET` |
| 62 | + |
| 63 | +You can (and should) pass these as environment variables from secrets. |
| 64 | + |
| 65 | +Read the [deployment.md](./deployment.md) docs for more details. |
| 66 | + |
| 67 | +### Generate Secret Keys |
| 68 | + |
| 69 | +Some environment variables in the `.env` file have a default value of `changethis`. |
| 70 | + |
| 71 | +You have to change them with a secret key, to generate secret keys you can run the following command: |
| 72 | + |
| 73 | +```bash |
| 74 | +python -c "import secrets; print(secrets.token_urlsafe(32))" |
| 75 | +``` |
| 76 | + |
| 77 | +Copy the content and use that as password / secret key. And run that again to generate another secure key. |
| 78 | + |
| 79 | +## Backend Development |
| 80 | + |
| 81 | +Backend docs: [backend/README.md](./backend/README.md). |
| 82 | + |
| 83 | +## Frontend Development |
| 84 | + |
| 85 | +Frontend docs: [frontend/README.md](./frontend/README.md). |
| 86 | + |
| 87 | +## Deployment |
| 88 | + |
| 89 | +Deployment docs: [deployment.md](./deployment.md). |
| 90 | + |
| 91 | +## Development |
| 92 | + |
| 93 | +General development docs: [development.md](./development.md). |
| 94 | + |
| 95 | +This includes using Docker Compose, custom local domains, `.env` configurations, etc. |
0 commit comments