Skip to content

Releases: fastapi/full-stack-fastapi-template

0.7.1

27 Sep 13:31
Compare
Choose a tag to compare

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 use dashboard.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 and dashboard.example.com for frontend, improve local development with localhost. 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

0.7.0

02 Aug 19:53
Compare
Choose a tag to compare

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...
Read more

0.6.0

12 Mar 20:56
Compare
Choose a tag to compare

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 to SidebarItems. 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....
Read more

0.5.0

19 Apr 06:53
Compare
Choose a tag to compare
  • 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 of source 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

29 May 05:59
Compare
Choose a tag to compare
  • 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.

  • Read Alembic configs from env vars. PR #9 by @ebreton.

  • 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

19 Apr 05:55
Compare
Choose a tag to compare
  • PR #14:

    • Update CRUD utils to use types better.
    • Simplify Pydantic model names, from UserInCreate to UserCreate, 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

11 Apr 17:46
Compare
Choose a tag to compare

0.2.1

29 Mar 14:37
Compare
Choose a tag to compare
  • Fix documentation for path operation to get user by ID. PR #97 by @mpclarkson.

  • Set /start-reload.sh as a command override for development by default.

  • Update generated README.

0.2.0

11 Mar 11:55
Compare
Choose a tag to compare

PR #2:

  • Simplify and update backend Dockerfiles.
  • 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).