Releases: fastapi/full-stack-fastapi-template
0.7.1
Highlights
- Migrate from Poetry to
uv
. - Simplifications and improvements for Docker Compose files, Traefik Dockerfiles.
- Make the API use its own domain
api.example.com
and the frontend usedashboard.example.com
. This would make it easier to deploy them separately if you needed that. - The backend and frontend on Docker Compose now listen on the same port as the local development servers, this way you can stop the Docker Compose services and run the local development servers without changing the frontend configuration.
Features
Refactors
- ♻️ Update settings to use top level
.env
file. PR #1359 by @tiangolo. - ⬆️ Migrate from Poetry to uv. PR #1356 by @tiangolo.
- 🔥 Remove logic for development dependencies and Jupyter, it was never documented, and I no longer use that trick. PR #1355 by @tiangolo.
- ♻️ Use Docker Compose
watch
. PR #1354 by @tiangolo. - 🔧 Use plain base official Python Docker image. PR #1351 by @tiangolo.
- 🚚 Move location of scripts to simplify file structure. PR #1352 by @tiangolo.
- ♻️ Refactor prestart (migrations), move that to its own container. PR #1350 by @tiangolo.
- ♻️ Include
FRONTEND_HOST
in CORS origins by default. PR #1348 by @tiangolo. - ♻️ Simplify domains with
api.example.com
for API anddashboard.example.com
for frontend, improve local development withlocalhost
. PR #1344 by @tiangolo. - 🔥 Simplify Traefik, remove www-redirects that add complexity. PR #1343 by @tiangolo.
- 🔥 Enable support for Arm Docker images in Mac, remove old patch. PR #1341 by @tiangolo.
- ♻️ Remove duplicate information in the ItemCreate model. PR #1287 by @jjaakko.
Upgrades
Docs
- 💡 Add comments to Dockerfile with uv references. PR #1357 by @tiangolo.
- 📝 Add Email Templates to
backend/README.md
. PR #1311 by @alejsdev.
Internal
- 👷 Do not sync labels as it overrides manually added labels. PR #1307 by @tiangolo.
- 👷 Use uv cache on GitHub Actions. PR #1366 by @tiangolo.
- 👷 Update GitHub Actions format. PR #1363 by @tiangolo.
- 👷 Use
uv
for Python env to generate client. PR #1362 by @tiangolo. - 👷 Run tests from Python environment (with
uv
), not from Docker container. PR #1361 by @tiangolo. - 🔨 Update
generate-client.sh
script, make it fail on errors, fix generation. PR #1360 by @tiangolo. - 👷 Add GitHub Actions workflow to lint backend apart from tests. PR #1358 by @tiangolo.
- 👷 Improve playwright CI job. PR #1335 by @patrick91.
- 👷 Update
issue-manager.yml
. PR #1329 by @tiangolo. - 💚 Set
include-hidden-files
toTrue
when using theupload-artifact
GH action. PR #1327 by @svlandeg. - 👷🏻 Auto-generate frontend client . PR #1320 by @alejsdev.
- 🐛 Fix in
.github/labeler.yml
. PR #1322 by @alejsdev. - 👷 Update
.github/labeler.yml
. PR #1321 by @alejsdev. - 👷 Update
latest-changes
GitHub Action. PR #1315 by @tiangolo. - 👷 Update configs for labeler. PR #1308 by @tiangolo.
- 👷 Update GitHub Action labeler to add only one label. PR #1304 by @tiangolo.
- ⬆️ Bump axios from 1.6.2 to 1.7.4 in /frontend. PR #1301 by @dependabot[bot].
- 👷 Update GitHub Action labeler dependencies. PR #1302 by @tiangolo.
- 👷 Update GitHub Action labeler permissions. PR #1300 by @tiangolo.
- 👷 Add GitHub Action label-checker. PR #1299 by @tiangolo.
- 👷 Add GitHub Action labeler. PR #1298 by @tiangolo.
- 👷 Add GitHub Action add-to-project. PR #1297 by @tiangolo.
- 👷 Update issue-manager. PR #1288 by @tiangolo.
0.7.0
Lots of new things! 🎁
- E2E tests with Playwright.
- Mailcatcher configuration, to develop and test email handling.
- Pagination.
- UUIDs for database keys.
- New user sign up.
- Support for deploying to multiple environments (staging, prod).
- Many refactors and improvements.
- Several dependency upgrades.
Features
- ✨ Add User Settings e2e tests. PR #1271 by @alejsdev.
- ✨ Add Reset Password e2e tests. PR #1270 by @alejsdev.
- ✨ Add Sign Up e2e tests. PR #1268 by @alejsdev.
- ✨ Add Sign Up and make
OPEN_USER_REGISTRATION=True
by default. PR #1265 by @alejsdev. - ✨ Add Login e2e tests. PR #1264 by @alejsdev.
- ✨ Add initial setup for frontend / end-to-end tests with Playwright. PR #1261 by @alejsdev.
- ✨ Add mailcatcher configuration. PR #1244 by @patrick91.
- ✨ Introduce pagination in items. PR #1239 by @patrick91.
- 🗃️ Add max_length validation for database models and input data. PR #1233 by @estebanx64.
- ✨ Add TanStack React Query devtools in dev build. PR #1217 by @tomerb.
- ✨ Add support for deploying multiple environments (staging, production) to the same server. PR #1128 by @tiangolo.
- 👷 Update CI GitHub Actions to allow running in private repos. PR #1125 by @tiangolo.
Fixes
- 🐛 Fix welcome page to show logged-in user. PR #1218 by @tomerb.
- 🐛 Fix local Traefik proxy network config to fix Gateway Timeouts. PR #1184 by @JoelGotsch.
- ♻️ Fix tests when first superuser password is changed in .env. PR #1165 by @billzhong.
- 🐛 Fix bug when resetting password. PR #1171 by @alejsdev.
- 🐛 Fix 403 when the frontend has a directory without an index.html. PR #1094 by @tiangolo.
Refactors
- 🚨 Fix Docker build warning. PR #1283 by @erip.
- ♻️ Regenerate client to use UUID instead of id integers and update frontend. PR #1281 by @rehanabdul.
- ♻️ Tweaks in frontend. PR #1273 by @alejsdev.
- ♻️ Add random password util and refactor tests. PR #1277 by @alejsdev.
- ♻️ Refactor models to use cascade delete relationships . PR #1276 by @alejsdev.
- 🔥 Remove
USERS_OPEN_REGISTRATION
config, make registration enabled by default. PR #1274 by @alejsdev. - 🔧 Reuse database url from config in alembic setup. PR #1229 by @patrick91.
- 🔧 Update Playwright config and tests to use env variables. PR #1266 by @alejsdev.
- ♻️ Edit refactor db models to use UUID's instead of integer ID's. PR #1259 by @estebanx64.
- ♻️ Update form inputs width. PR #1263 by @alejsdev.
- ♻️ Replace deprecated utcnow() with now(timezone.utc) in utils module. PR #1247 by @jalvarezz13.
- 🎨 Format frontend. PR #1262 by @alejsdev.
- ♻️ Abstraction of specific AddModal component out of the Navbar. PR #1246 by @ajbloureiro.
- ♻️ Update
login.tsx
to prevent error if username or password are empty. PR #1257 by @jmondaud. - ♻️ Refactor recover password. PR #1242 by @alejsdev.
- 🎨 Format and lint . PR #1243 by @alejsdev.
- 🎨 Run biome after OpenAPI client generation. PR #1226 by @tomerb.
- ♻️ Update DeleteConfirmation component to use new service. PR #1224 by @alejsdev.
- ♻️ Update client services. PR #1223 by @alejsdev.
- ⚒️ Add minor frontend tweaks. PR #1210 by @alejsdev.
- 🚚 Move assets to public folder. PR #1206 by @alejsdev.
- ♻️ Refactor redirect labels to simplify removing the frontend. PR #1208 by @tiangolo.
- 🔒️ Refactor migrate from python-jose to PyJWT. PR #1203 by @estebanx64.
- 🔥 Remove duplicated code. PR #1185 by @alejsdev.
- ♻️ Add delete_user_me endpoint and corresponding test cases. PR #1179 by @alejsdev.
- ✅ Update test to add verification database records. PR #1178 by @estebanx64.
- 🚸 Use
useSuspenseQuery
to fetch members and show skeleton. PR #1174 by @patrick91. - 🎨 Format Utils. PR #1173 by @alejsdev.
- ✨ Use suspense for items page. PR #1167 by @patrick91.
- 🚸 Mark login field as required. PR #1166 by @patrick91.
- 🚸 Improve login. PR #1163 by @patrick91.
- 🥅 Handle AxiosErrors in Login page. PR #1162 by @patrick91.
- 🎨 Format frontend. PR #1161 by @alejsdev.
- ♻️ Regenerate frontend client. PR #1156 by @alejsdev.
- ♻️ Refactor rename ModelsOut to ModelsPublic. PR #1154 by @estebanx64.
- ♻️ Migrate frontend client generation from
openapi-typescript-codegen
to@hey-api/openapi-ts
. PR #1151 by @alejsdev. - 🔥 Remove unused exports and update dependencies. PR #1146 by @alejsdev.
- 🔧 Update sentry dns initialization following the environment settings. PR #1145 by @estebanx64.
- ♻️ Refactor and tweaks, rename
UserCreateOpen
to...
0.6.0
Latest FastAPI, Pydantic, SQLModel 🚀
Brand new frontend with React, TS, Vite, Chakra UI, TanStack Query/Router, generated client/SDK 🎨
CI/CD - GitHub Actions 🤖
Test cov > 90% ✅
Features
- ✨ Adopt SQLModel, create models, start using it. PR #559 by @tiangolo.
- ✨ Upgrade items router with new SQLModel models, simplified logic, and new FastAPI Annotated dependencies. PR #560 by @tiangolo.
- ✨ Migrate from pgAdmin to Adminer. PR #692 by @tiangolo.
- ✨ Add support for setting
POSTGRES_PORT
. PR #333 by @uepoch. - ⬆ Upgrade Flower version and command. PR #447 by @maurob.
- 🎨 Improve styles. PR #673 by @alejsdev.
- 🎨 Update theme. PR #666 by @alejsdev.
- 👷 Add continuous deployment and refactors needed for it. PR #667 by @tiangolo.
- ✨ Create endpoint to show password recovery email content and update email template. PR #664 by @alejsdev.
- 🎨 Format with Prettier. PR #646 by @alejsdev.
- ✅ Add tests to raise coverage to at least 90% and fix recover password logic. PR #632 by @estebanx64.
- ⚙️ Add Prettier and ESLint config with pre-commit. PR #640 by @alejsdev.
- 👷 Add coverage with Smokeshow to CI and badge. PR #638 by @estebanx64.
- ✨ Migrate to TanStack Query (React Query) and TanStack Router. PR #637 by @alejsdev.
- ✅ Add setup and teardown database for tests. PR #626 by @estebanx64.
- ✨ Update new-frontend client. PR #625 by @alejsdev.
- ✨ Add password reset functionality. PR #624 by @alejsdev.
- ✨ Add private/public routing. PR #621 by @alejsdev.
- 🔧 Add VS Code debug configs. PR #620 by @tiangolo.
- ✨ Add
Not Found
page. PR #595 by @alejsdev. - ✨ Add new pages, components, panels, modals, and theme; refactor and improvements in existing components. PR #593 by @alejsdev.
- ✨ Support delete own account and other tweaks. PR #614 by @alejsdev.
- ✨ Restructure folders, allow editing of users/items, and implement other refactors and improvements. PR #603 by @alejsdev.
- ✨ Add Copier, migrate from Cookiecutter, in a way that supports using the project as is, forking or cloning it. PR #612 by @tiangolo.
- ➕ Replace black, isort, flake8, autoflake with ruff and upgrade mypy. PR #610 by @tiangolo.
- ♻ Refactor items and services endpoints to return count and data, and add CI tests. PR #599 by @estebanx64.
- ✨ Add support for updating items and upgrade SQLModel to 0.0.16 (which supports model object updates). PR #601 by @tiangolo.
- ✨ Add dark mode to new-frontend and conditional sidebar items. PR #600 by @alejsdev.
- ✨ Migrate to RouterProvider and other refactors . PR #598 by @alejsdev.
- ✨ Add delete_user; refactor delete_item. PR #594 by @alejsdev.
- ✨ Add state store to new frontend. PR #592 by @alejsdev.
- ✨ Add form validation to Admin, Items and Login. PR #616 by @alejsdev.
- ✨ Add Sidebar to new frontend. PR #587 by @alejsdev.
- ✨ Add Login to new frontend. PR #585 by @alejsdev.
- ✨ Include schemas in generated frontend client. PR #584 by @alejsdev.
- ✨ Regenerate frontend client with recent changes. PR #575 by @alejsdev.
- ♻️ Refactor API in
utils.py
. PR #573 by @alejsdev. - ✨ Update code for login API. PR #571 by @tiangolo.
- ✨ Add client in frontend and client generation. PR #569 by @alejsdev.
- 🐳 Set up Docker config for new-frontend. PR #564 by @alejsdev.
- ✨ Set up new frontend with Vite, TypeScript and React. PR #563 by @alejsdev.
- 📌 Add NodeJS version management and instructions. PR #551 by @alejsdev.
- Add consistent errors for env vars not set. PR #200.
- Upgrade Traefik to version 2, keeping in sync with DockerSwarm.rocks. PR #199.
- Run tests with
TestClient
. PR #160.
Fixes
- 🐛 Fix copier to handle string vars with spaces in quotes. PR #631 by @estebanx64.
- 🐛 Fix allowing a user to update the email to the same email they already have. PR #696 by @alejsdev.
- 🐛 Set up Sentry only when used. PR #671 by @tiangolo.
- 🔥 Remove unnecessary validation. PR #662 by @alejsdev.
- 🐛 Fix bug when editing own user. PR #651 by @alejsdev.
- 🐛 Add
onClose
toSidebarItems
. PR #589 by @alejsdev. - 🐛 Fix positional argument bug in
init_db.py
. PR #562 by @alejsdev. - 📌 Fix flower Docker image, pin version. PR #396 by @sanggusti.
- 🐛 Fix Celery worker command. PR #443 by @bechtold.
- 🐛 Fix Poetry installation in Dockerfile and upgrade Python version and packages to fix Docker build. PR #480 by @little7Li.
Refactors
- 🔧 Add missing dotenv variables. PR #554 by @tiangolo.
- ⏪ Revert "⚙️ Add Prettier and ESLint config with pre-commit". PR [#644](https://github....
0.5.0
- Make the Traefik public network a fixed default of
traefik-public
as done in DockerSwarm.rocks, to simplify development and iteration of the project generator. PR #150. - Update to PostgreSQL 12. PR #148. by @RCheese.
- Use Poetry for package management. Initial PR #144 by @RCheese.
- Fix Windows line endings for shell scripts after project generation with Cookiecutter hooks. PR #149.
- Upgrade Vue CLI to version 4. PR #120 by @br3ndonland.
- Remove duplicate
login
tag. PR #135 by @Nonameentered. - Fix showing email in dashboard when there's no user's full name. PR #129 by @rlonka.
- Format code with Black and Flake8. PR #121 by @br3ndonland.
- Simplify SQLAlchemy Base class. PR #117 by @airibarne.
- Update CRUD utils for users, handling password hashing. PR #106 by @mocsar.
- Use
.
instead ofsource
for interoperability. PR #98 by @gucharbon. - Use Pydantic's
BaseSettings
for settings/configs and env vars. PR #87 by @StephenBrown2. - Remove
package-lock.json
to let everyone lock their own versions (depending on OS, etc). - Simplify Traefik service labels PR #139.
- Add email validation. PR #40 by @kedod.
- Fix typo in README. PR #83 by @ashears.
- Fix typo in README. PR #80 by @abjoker.
- Fix function name
read_item
and response code. PR #74 by @jcaguirre89. - Fix typo in comment. PR #70 by @daniel-butler.
- Fix Flower Docker configuration. PR #37 by @dmontagu.
- Add new CRUD utils based on DB and Pydantic models. Initial PR #23 by @ebreton.
- Add normal user testing Pytest fixture. PR #20 by @ebreton.
0.4.0
-
Fix security on resetting a password. Receive token as body, not query. PR #34.
-
Fix security on resetting a password. Receive it as body, not query. PR #33 by @dmontagu.
-
Fix SQLAlchemy class lookup on initialization. PR #29 by @ebreton.
-
Fix SQLAlchemy operation errors on database restart. PR #32 by @ebreton.
-
Fix locations of scripts in generated README. PR #19 by @ebreton.
-
Forward arguments from script to
pytest
inside container. PR #17 by @ebreton. -
Update development scripts.
-
Create DB Item objects from all Pydantic model's fields.
-
Update Jupyter Lab installation and util script/environment variable for local development.
0.3.0
-
PR #14:
- Update CRUD utils to use types better.
- Simplify Pydantic model names, from
UserInCreate
toUserCreate
, etc. - Upgrade packages.
- Add new generic "Items" models, crud utils, endpoints, and tests. To facilitate re-using them to create new functionality. As they are simple and generic (not like Users), it's easier to copy-paste and adapt them to each use case.
- Update endpoints/path operations to simplify code and use new utilities, prefix and tags in
include_router
. - Update testing utils.
- Update linting rules, relax vulture to reduce false positives.
- Update migrations to include new Items.
- Update project README.md with tips about how to start with backend.
-
Upgrade Python to 3.7 as Celery is now compatible too. PR #10 by @ebreton.
0.2.2
0.2.1
0.2.0
- Simplify and update backend
Dockerfile
s. - Refactor and simplify backend code, improve naming, imports, modules and "namespaces".
- Improve and simplify Vuex integration with TypeScript accessors.
- Standardize frontend components layout, buttons order, etc.
- Add local development scripts (to develop this project generator itself).
- Add logs to startup modules to detect errors early.
- Improve FastAPI dependency utilities, to simplify and reduce code (to require a superuser).