tiangolo / full-stack-fastapi-template

Full stack, modern web application template. Using FastAPI, React, SQLModel, PostgreSQL, Docker, GitHub Actions, automatic HTTPS and more.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

🚀 Roadmap

tiangolo opened this issue · comments

Description

This is a tentative roadmap, I will update it as things evolve. Some things might be discarded, others might be added later. I didn't want to make it fully public as it could raise expectations, but it seems it would be more beneficial for the community to know all the ideas and objectives.

Work on this is alternated (and sometimes mixed) with work on FastAPI, Typer, SQLModel, Asyncer, and others.

In fact, I created SQLModel for this project. 🚀

Answering questions, issues, and PRs is also intermixed with this, but as in some cases one of these features would solve several issues or questions, or potentially solve something done by one or more PRs, in many cases I focus on this a bit more than on answering specific issues, questions, PRs.

Maintenance

The word "maintenance" or "maintainer" doesn't have a very strict definition, and it probably varies a lot from perspective.

A lot of the work related to maintaining FastAPI is done by contributors by answering questions, reviewing PRs, etc.

You can help me ensure each existing PR is in shape (has tests, solves the problem, etc.). Make sure you filter out the translation PRs (most of them) unless you speak the language and can review them.

Security

When there are security issues, those are handled with the highest priority. Those are normally not handled in issues and PRs but in emails, it's not public until the security disclosure is made, in most cases (always, up to now) with the version that fixes them.

Roadmap

Now, here's the current high-level tentative roadmap:

  • Upgrade to the latest FastAPI.
  • Migration from SQLAlchemy to SQLModel.
  • Upgrade to Pydantic v2.
  • Refactor and simplification of most of the code, a lot of the complexity won't be necessary anymore.
  • Automatic TypeScript frontend client generated from the FastAPI API (OpenAPI).
  • Migrate from Vue.js 2 to React with hooks and TypeScript.
  • Make the project work as is, allowing to clone and use (not requiring to generate a project with Cookiecutter or Copier)
  • Migrate from Cookiecutter to Copier
  • Move from Docker Swarm Model to Docker Compose for a simple deployment.
  • GitHub Actions for CI.
  • Migrate from pgAdmin to Adminer.
  • Remove Celery and Flower for now (I will probably define a proper better alternative later).

All this is intermixed with reviews for PRs, issues, and discussions.

Great!!!! I Love your Templates. And with react IT would even be better. Ist there a plan or a Chance mongodb will be integrated in the Future?

It's so Great!!!

@PhilippWu - Using mongodb isn't too difficult to add especially with the beanie module which makes defining Collection simple.

sqlmodel still requires pydantic version 1.10 so you'll need to upgrade it there or you'll end up having dependency issues.

I was wondering if there was a time frame for next release?

Move from Docker Swarm Model to Kubernetes. <--------- THIS

Hi! Is there a timeline for this Roadmap? I was thinking of using this template for a project but it might be a bit to urgent...

@KimNikB - I suggest using the backend as a scaffolding but you'll need to make your own. Python 3.7 was depreciated and other things make it unusable as it is but it is easy to build up your own backend.

Search the issues because some folks have made some fixes to get it to work if you're in a time crunch.

SQLModel is using Pydantic v1 => this project is using SQLAlchemy v2 instead of SQLModel

Hi @tiangolo, it's been two months since you posted this roadmap. It seems a lot of updates have been made to the repository but none to the roadmap. I'm curious to know how are things going vis-a-vis the original plan? Thanks!

Hi @tiangolo !
Any chance to see FastUI landing to you template?

Hey @tiangolo 👋 This is an amazing project and I'd love to see it usable. I will focus on this part as per your suggestion:

You can help me ensure each existing PR is in shape (has tests, solves the problem, etc.). Make sure you filter out the translation PRs (most of them) unless you speak the language and can review them.

If there's anything else I can do to speed up the delivery process, I'd be happy to know. Thank you for the amazing work you've already done 🙌

I have a question, is this Roadmap still up to date or are there already some checked?
I'm mostly interested in the backend, so if that has finished reconstruction, I would be happy about a status update.

Roadmap

Now, here's the current high-level tentative roadmap:

  • Upgrade to the latest FastAPI.
  • Migration from SQLAlchemy to SQLModel.
  • Upgrade to Pydantic v2.
  • Refactor and simplification of most of the code, a lot of the complexity won't be necessary anymore.
  • Migrate from Vue.js 2 to React with hooks and TypeScript.
  • Move from Docker Swarm Model to Kubernetes.
  • GitHub Actions for CI.

All this is intermixed with reviews for PRs, issues, and discussions.

Hi @tiangolo, what is the current progress of those things?

  • Upgrade to the latest FastAPI
  • Migration from SQLAlchemy to SQLModel
  • Upgrade to Pydantic v2

Can you provide an ETA?

Hi @PhilippWu , here is the MongoDB version of the app generator

https://github.com/mongodb-labs/full-stack-fastapi-mongodb

It currently uses ODMantic as an ODM.

Oh yeah!, stuff is happening!

Hello everyone! This is now done! 🎉

https://github.com/tiangolo/full-stack-fastapi-template/releases/tag/0.6.0

Some additional notes:


This now uses the latest FastAPI, Pydantic, SQLModel. 🚀

In fact, there were features added to SQLModel for this project. 😎

The code is much simpler now, it should be easier to understand, evolve, refactor, while keeping all the same flexibility if not more, but much more powerful and safer.

The frontend now uses React with Vite, TypeScript, TanStack Query, TanStack Router, Chakra UI, no additional state management, an auto-generated frontend client/SDK, dark mode support, and other things. There were many intermediate iterations trying out different alternatives and combinations of libraries to get to this point and these decisions. 🚀

The project now works as is, if you clone it, you can start using it. You can also use generation with Copier (instead of Cookiecutter), mainly to populate the configurations in .env.

There is no more support nor recommendation to use Docker Swarm Mode. Instead there are docs and files to deploy using Docker Compose, which now supports production deployments. This means that the Docker Compose files were significantly simplified and should be easier to understand and use.

Deploying to different platforms, like cloud services or Kubernetes is out of scope for this project, as any deployment in a system like that would depend a lot on the other components of the cluster or cloud provider, for example, there's no simple way to include Kubernetes files here without making lots of assumptions about the cluster. So, instead, there are files and documentation to make a simple deployment using Docker Compose, which can help as a starting point for each team to adjust to their deployment systems.

There is now support for GitHub Actions. The tests run in CI, including tracking test coverage, the coverage files can be tracked and the coverage badge can be set up with Smokeshow: https://github.com/samuelcolvin/smokeshow

pgAdmin was replaced with Adminer.

Celery and Flower were removed, this project doesn't really use that, and I currently wouldn't go for them if I needed that type of capability, once I figure out the alternative I would recommend I would add it to this repo too. You can read more details (and some of the options I want to try) in the PR: #694


There will be of course more features, fixes, etc. But the project is now ready again to be used as the template for your apps. I'm very happy and proud of the current state of the project! And I look forward to all you will build with it. 🚀

Thanks a lot for all the work to @alejsdev and @estebanx64 🙇