Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
1df9cfd
⬆ Bump lucide-react from 0.555.0 to 0.556.0 in /frontend (#2031)
dependabot[bot] Dec 8, 2025
fd39ace
⬆ Bump @tanstack/router-plugin from 1.139.12 to 1.140.0 in /frontend …
dependabot[bot] Dec 8, 2025
c04e324
⬆ Bump vite from 7.2.6 to 7.2.7 in /frontend (#2033)
dependabot[bot] Dec 8, 2025
00a85c1
⬆ Bump react-dom from 19.2.0 to 19.2.1 in /frontend (#2032)
dependabot[bot] Dec 8, 2025
e430446
📝 Update release notes
github-actions[bot] Dec 8, 2025
fdc0acb
📝 Update release notes
github-actions[bot] Dec 8, 2025
8a86ce2
📝 Update release notes
github-actions[bot] Dec 8, 2025
901a6d0
📝 Update release notes
github-actions[bot] Dec 8, 2025
e4d3771
🔥 Remove unused dependencies (#2035)
alejsdev Dec 8, 2025
84e4d74
📝 Update release notes
github-actions[bot] Dec 8, 2025
5521b23
📝 Update docs (#2036)
alejsdev Dec 8, 2025
ac9eddd
📝 Update release notes
github-actions[bot] Dec 8, 2025
4e678c3
📝 Fix outdated workflow badge (#2028)
AymanAlSuleihi Dec 8, 2025
d3a1492
📝 Update release notes
github-actions[bot] Dec 8, 2025
153a295
📝 Update README to include link for Vite (#2037)
alejsdev Dec 8, 2025
a886384
📝 Update release notes
github-actions[bot] Dec 8, 2025
a6e5812
📝 Add Mailcatcher setup instructions for local email testing (#2038)
alejsdev Dec 8, 2025
5a7c5b1
📝 Update release notes
github-actions[bot] Dec 8, 2025
1321241
✨ Add meta title support to all pages (#2039)
alejsdev Dec 8, 2025
686f786
📝 Update release notes
github-actions[bot] Dec 8, 2025
e4022a9
🔖 Release version 0.9.0
tiangolo Dec 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 11 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,26 @@
# Full Stack FastAPI Template

<a href="https://github.com/fastapi/full-stack-fastapi-template/actions?query=workflow%3ATest" target="_blank"><img src="https://github.com/fastapi/full-stack-fastapi-template/workflows/Test/badge.svg" alt="Test"></a>
<a href="https://github.com/fastapi/full-stack-fastapi-template/actions?query=workflow%3A%22Test+Docker+Compose%22" target="_blank"><img src="https://github.com/fastapi/full-stack-fastapi-template/workflows/Test%20Docker%20Compose/badge.svg" alt="Test Docker Compose"></a>
<a href="https://github.com/fastapi/full-stack-fastapi-template/actions?query=workflow%3A%22Test+Backend%22" target="_blank"><img src="https://github.com/fastapi/full-stack-fastapi-template/workflows/Test%20Backend/badge.svg" alt="Test Backend"></a>
<a href="https://coverage-badge.samuelcolvin.workers.dev/redirect/fastapi/full-stack-fastapi-template" target="_blank"><img src="https://coverage-badge.samuelcolvin.workers.dev/fastapi/full-stack-fastapi-template.svg" alt="Coverage"></a>

## Technology Stack and Features

- ⚡ [**FastAPI**](https://fastapi.tiangolo.com) for the Python backend API.
- 🧰 [SQLModel](https://sqlmodel.tiangolo.com) for the Python SQL database interactions (ORM).
- 🔍 [Pydantic](https://docs.pydantic.dev), used by FastAPI, for the data validation and settings management.
- 💾 [PostgreSQL](https://www.postgresql.org) as the SQL database.
- 🧰 [SQLModel](https://sqlmodel.tiangolo.com) for the Python SQL database interactions (ORM).
- 🔍 [Pydantic](https://docs.pydantic.dev), used by FastAPI, for the data validation and settings management.
- 💾 [PostgreSQL](https://www.postgresql.org) as the SQL database.
- 🚀 [React](https://react.dev) for the frontend.
- 💃 Using TypeScript, hooks, Vite, and other parts of a modern frontend stack.
- 🎨 [Chakra UI](https://chakra-ui.com) for the frontend components.
- 🤖 An automatically generated frontend client.
- 🧪 [Playwright](https://playwright.dev) for End-to-End testing.
- 🦇 Dark mode support.
- 💃 Using TypeScript, hooks, [Vite](https://vitejs.dev), and other parts of a modern frontend stack.
- 🎨 [Tailwind CSS](https://tailwindcss.com) and [shadcn/ui](https://ui.shadcn.com) for the frontend components.
- 🤖 An automatically generated frontend client.
- 🧪 [Playwright](https://playwright.dev) for End-to-End testing.
- 🦇 Dark mode support.
- 🐋 [Docker Compose](https://www.docker.com) for development and production.
- 🔒 Secure password hashing by default.
- 🔑 JWT (JSON Web Token) authentication.
- 📫 Email based password recovery.
- 📬 [Mailcatcher](https://mailcatcher.me) for local email testing during development.
- ✅ Tests with [Pytest](https://pytest.org).
- 📞 [Traefik](https://traefik.io) 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.
Expand All @@ -32,18 +34,10 @@

[![API docs](img/dashboard.png)](https://github.com/fastapi/full-stack-fastapi-template)

### Dashboard - Create User

[![API docs](img/dashboard-create.png)](https://github.com/fastapi/full-stack-fastapi-template)

### Dashboard - Items

[![API docs](img/dashboard-items.png)](https://github.com/fastapi/full-stack-fastapi-template)

### Dashboard - User Settings

[![API docs](img/dashboard-user-settings.png)](https://github.com/fastapi/full-stack-fastapi-template)

### Dashboard - Dark Mode

[![API docs](img/dashboard-dark.png)](https://github.com/fastapi/full-stack-fastapi-template)
Expand Down
50 changes: 31 additions & 19 deletions development.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@ docker compose watch

* Now you can open your browser and interact with these URLs:

Frontend, built with Docker, with routes handled based on the path: http://localhost:5173
Frontend, built with Docker, with routes handled based on the path: <http://localhost:5173>

Backend, JSON based web API based on OpenAPI: http://localhost:8000
Backend, JSON based web API based on OpenAPI: <http://localhost:8000>

Automatic interactive documentation with Swagger UI (from the OpenAPI backend): http://localhost:8000/docs
Automatic interactive documentation with Swagger UI (from the OpenAPI backend): <http://localhost:8000/docs>

Adminer, database web administration: http://localhost:8080
Adminer, database web administration: <http://localhost:8080>

Traefik UI, to see how the routes are being handled by the proxy: http://localhost:8090
Traefik UI, to see how the routes are being handled by the proxy: <http://localhost:8090>

**Note**: The first time you start your stack, it might take a minute for it to be ready. While the backend waits for the database to be ready and configures everything. You can check the logs to monitor it.

Expand All @@ -34,6 +34,18 @@ To check the logs of a specific service, add the name of the service, e.g.:
docker compose logs backend
```

## Mailcatcher

Mailcatcher is a simple SMTP server that catches all emails sent by the backend during local development. Instead of sending real emails, they are captured and displayed in a web interface.

This is useful for:

* Testing email functionality during development
* Verifying email content and formatting
* Debugging email-related functionality without sending real emails

The backend is automatically configured to use Mailcatcher when running with Docker Compose locally (SMTP on port 1025). All captured emails can be viewed at <http://localhost:1080>.

## Local Development

The Docker Compose files are configured so that each of the services is available in a different port in `localhost`.
Expand Down Expand Up @@ -174,34 +186,34 @@ The production or staging URLs would use these same paths, but with your own dom

Development URLs, for local development.

Frontend: http://localhost:5173
Frontend: <http://localhost:5173>

Backend: http://localhost:8000
Backend: <http://localhost:8000>

Automatic Interactive Docs (Swagger UI): http://localhost:8000/docs
Automatic Interactive Docs (Swagger UI): <http://localhost:8000/docs>

Automatic Alternative Docs (ReDoc): http://localhost:8000/redoc
Automatic Alternative Docs (ReDoc): <http://localhost:8000/redoc>

Adminer: http://localhost:8080
Adminer: <http://localhost:8080>

Traefik UI: http://localhost:8090
Traefik UI: <http://localhost:8090>

MailCatcher: http://localhost:1080
MailCatcher: <http://localhost:1080>

### Development URLs with `localhost.tiangolo.com` Configured

Development URLs, for local development.

Frontend: http://dashboard.localhost.tiangolo.com
Frontend: <http://dashboard.localhost.tiangolo.com>

Backend: http://api.localhost.tiangolo.com
Backend: <http://api.localhost.tiangolo.com>

Automatic Interactive Docs (Swagger UI): http://api.localhost.tiangolo.com/docs
Automatic Interactive Docs (Swagger UI): <http://api.localhost.tiangolo.com/docs>

Automatic Alternative Docs (ReDoc): http://api.localhost.tiangolo.com/redoc
Automatic Alternative Docs (ReDoc): <http://api.localhost.tiangolo.com/redoc>

Adminer: http://localhost.tiangolo.com:8080
Adminer: <http://localhost.tiangolo.com:8080>

Traefik UI: http://localhost.tiangolo.com:8090
Traefik UI: <http://localhost.tiangolo.com:8090>

MailCatcher: http://localhost.tiangolo.com:1080
MailCatcher: <http://localhost.tiangolo.com:1080>
3 changes: 1 addition & 2 deletions frontend/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# FastAPI Project - Frontend

The frontend is built with [Vite](https://vitejs.dev/), [React](https://reactjs.org/), [TypeScript](https://www.typescriptlang.org/), [TanStack Query](https://tanstack.com/query), [TanStack Router](https://tanstack.com/router) and [Chakra UI](https://chakra-ui.com/).
The frontend is built with [Vite](https://vitejs.dev/), [React](https://reactjs.org/), [TypeScript](https://www.typescriptlang.org/), [TanStack Query](https://tanstack.com/query), [TanStack Router](https://tanstack.com/router) and [Tailwind CSS](https://tailwindcss.com/).

## Frontend development

Expand Down Expand Up @@ -121,7 +121,6 @@ The frontend code is structured as follows:
* `frontend/src/components` - The different components of the frontend.
* `frontend/src/hooks` - Custom hooks.
* `frontend/src/routes` - The different routes of the frontend which include the pages.
* `theme.tsx` - The Chakra UI custom theme.

## End-to-End Testing with Playwright

Expand Down
Loading