You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There is a project generator that you can use to get started, with a lot of the initial set up, security, database and first API endpoints already done for you.
3
+
You can use a project generator to get started, as it includes a lot of the initial set up, security, database and first API endpoints already done for you.
4
4
5
-
## Full-Stack-FastAPI-PostgreSQL
5
+
A project generator will always have a very opinionated setup that you should update and adapt for your own needs, but it might be a good starting point for your project.
***Short**: Minimize code duplication. Multiple features from each parameter declaration.
20
22
***Robust**: Get production-ready code. With automatic interactive documentation.
21
23
***Standards-based**: Based on (and fully compatible with) the open standards for APIs: <ahref="https://github.com/OAI/OpenAPI-Specification"class="external-link"target="_blank">OpenAPI</a> and <ahref="http://json-schema.org/"class="external-link"target="_blank">JSON Schema</a>.
22
-
* Many other features including automatic validation, serialization, interactive documentation, authentication with OAuth2 JWT tokens, etc.
24
+
*<ahref="https://fastapi.tiangolo.com/features/"class="external-link"target="_blank">**Many other features**</a> including automatic validation, serialization, interactive documentation, authentication with OAuth2 JWT tokens, etc.
23
25
***Secure password** hashing by default.
24
26
***JWT token** authentication.
25
27
***SQLAlchemy** models (independent of Flask extensions, so they can be used with Celery workers directly).
26
28
* Basic starting models for users (modify and remove as you need).
27
29
***Alembic** migrations.
28
30
***CORS** (Cross Origin Resource Sharing).
29
-
***Celery** worker that can import and use models and code from the rest of the backend selectively (you don't have to install the complete app in each worker).
31
+
***Celery** worker that can import and use models and code from the rest of the backend selectively.
30
32
* REST backend tests based on **Pytest**, integrated with Docker, so you can test the full API interaction, independent on the database. As it runs in Docker, it can build a new data store from scratch each time (so you can use ElasticSearch, MongoDB, CouchDB, or whatever you want, and just test that the API works).
31
33
* Easy Python integration with **Jupyter Kernels** for remote or in-Docker development with extensions like Atom Hydrogen or Visual Studio Code Jupyter.
***Fast**: Very high performance, on par with **NodeJS** and **Go** (thanks to Starlette and Pydantic).
65
-
***Intuitive**: Great editor support. <abbrtitle="also known as auto-complete, autocompletion, IntelliSense">Completion</abbr> everywhere. Less time debugging.
66
-
***Easy**: Designed to be easy to use and learn. Less time reading docs.
67
-
***Short**: Minimize code duplication. Multiple features from each parameter declaration.
68
-
***Robust**: Get production-ready code. With automatic interactive documentation.
69
-
***Standards-based**: <ahref="https://github.com/OAI/OpenAPI-Specification"class="external-link"target="_blank">OpenAPI</a> and <ahref="http://json-schema.org/"class="external-link"target="_blank">JSON Schema</a>.
70
-
* Many other features including automatic validation, serialization, interactive documentation, authentication with OAuth2 JWT tokens, etc.
71
-
***Secure password** hashing by default.
72
-
***JWT token** authentication.
73
-
***CORS** (Cross Origin Resource Sharing).
74
-
***Celery** worker that can import and use code from the rest of the backend selectively (you don't have to install the complete app in each worker).
75
-
***NoSQL Couchbase** database that supports direct synchronization via Couchbase Sync Gateway for offline-first applications.
76
-
***Full Text Search** integrated, using Couchbase.
77
-
* REST backend tests based on Pytest, integrated with Docker, so you can test the full API interaction, independent on the database. As it runs in Docker, it can build a new data store from scratch each time (so you can use ElasticSearch, MongoDB, or whatever you want, and just test that the API works).
78
-
* Easy Python integration with **Jupyter** Kernels for remote or in-Docker development with extensions like Atom Hydrogen or Visual Studio Code Jupyter.
79
-
***Email notifications** for account creation and password recovery, compatible with:
80
-
* Mailgun
81
-
* SparkPost
82
-
* SendGrid
83
-
* ...any other provider that can generate standard SMTP credentials.
84
-
***Vue** frontend:
85
-
* Generated with Vue CLI.
86
-
***JWT Authentication** handling.
87
-
* Login view.
88
-
* After login, main dashboard view.
89
-
* Main dashboard with user creation and edition.
90
-
* Self user edition.
91
-
***Vuex**.
92
-
***Vue-router**.
93
-
***Vuetify** for beautiful material design components.
94
-
***TypeScript**.
95
-
* Docker server based on **Nginx** (configured to play nicely with Vue-router).
96
-
* Docker multi-stage building, so you don't need to save or commit compiled code.
97
-
* Frontend tests ran at build time (can be disabled too).
98
-
* Made as modular as possible, so it works out of the box, but you can re-generate with Vue CLI or create it as you need, and re-use what you want.
99
-
***Flower** for Celery jobs monitoring.
100
-
* Load balancing between frontend and backend with **Traefik**, so you can have both under the same domain, separated by path, but served by different containers.
101
-
* Traefik integration, including Let's Encrypt **HTTPS** certificates automatic generation.
102
-
* GitLab **CI** (continuous integration), including frontend and backend testing.
61
+
If you are starting a new project from scratch, check the alternatives here.
62
+
63
+
For example, the project generator <ahref="https://github.com/tiangolo/full-stack-fastapi-postgresql"class="external-link"target="_blank">Full Stack FastAPI PostgreSQL</a> might be a better alternative, as it is actively maintained and used. And it includes all the new features and improvements.
64
+
65
+
You are still free to use the Couchbase-based generator if you want to, it should probably still work fine, and if you already have a project generated with it that's fine as well (and you probably already updated it to suit your needs).
66
+
67
+
You can read more about it in the docs for the repo.
68
+
69
+
## Full Stack FastAPI MongoDB
70
+
71
+
...might come later, depending on my time availability and other factors. 😅 🎉
0 commit comments