Skip to content

Commit d03c197

Browse files
authored
📝 Update project generation docs (fastapi#1287)
1 parent 06e42a4 commit d03c197

File tree

1 file changed

+21
-52
lines changed

1 file changed

+21
-52
lines changed

docs/en/docs/project-generation.md

Lines changed: 21 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
# Project Generation - Template
22

3-
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.
44

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.
6+
7+
## Full Stack FastAPI PostgreSQL
68

79
GitHub: <a href="https://github.com/tiangolo/full-stack-fastapi-postgresql" class="external-link" target="_blank">https://github.com/tiangolo/full-stack-fastapi-postgresql</a>
810

9-
### Full-Stack-FastAPI-PostgreSQL Features
11+
### Full Stack FastAPI PostgreSQL - Features
1012

1113
* Full **Docker** integration (Docker based).
1214
* Docker Swarm Mode deployment.
13-
* **Docker Compose** integration and optimization for local development
15+
* **Docker Compose** integration and optimization for local development.
1416
* **Production ready** Python web server using Uvicorn and Gunicorn.
1517
* Python <a href="https://github.com/tiangolo/fastapi" class="external-link" target="_blank">**FastAPI**</a> backend:
1618
* **Fast**: Very high performance, on par with **NodeJS** and **Go** (thanks to Starlette and Pydantic).
@@ -19,14 +21,14 @@ GitHub: <a href="https://github.com/tiangolo/full-stack-fastapi-postgresql" clas
1921
* **Short**: Minimize code duplication. Multiple features from each parameter declaration.
2022
* **Robust**: Get production-ready code. With automatic interactive documentation.
2123
* **Standards-based**: Based on (and fully compatible with) the open standards for APIs: <a href="https://github.com/OAI/OpenAPI-Specification" class="external-link" target="_blank">OpenAPI</a> and <a href="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+
* <a href="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.
2325
* **Secure password** hashing by default.
2426
* **JWT token** authentication.
2527
* **SQLAlchemy** models (independent of Flask extensions, so they can be used with Celery workers directly).
2628
* Basic starting models for users (modify and remove as you need).
2729
* **Alembic** migrations.
2830
* **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.
3032
* 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).
3133
* Easy Python integration with **Jupyter Kernels** for remote or in-Docker development with extensions like Atom Hydrogen or Visual Studio Code Jupyter.
3234
* **Vue** frontend:
@@ -50,53 +52,20 @@ GitHub: <a href="https://github.com/tiangolo/full-stack-fastapi-postgresql" clas
5052
* Traefik integration, including Let's Encrypt **HTTPS** certificates automatic generation.
5153
* GitLab **CI** (continuous integration), including frontend and backend testing.
5254

53-
## Full-Stack-FastAPI-Couchbase
55+
## Full Stack FastAPI Couchbase
5456

5557
GitHub: <a href="https://github.com/tiangolo/full-stack-fastapi-couchbase" class="external-link" target="_blank">https://github.com/tiangolo/full-stack-fastapi-couchbase</a>
5658

57-
### Full-Stack-FastAPI-Couchbase Features
59+
⚠️ **WARNING** ⚠️
5860

59-
* Full **Docker** integration (Docker based).
60-
* Docker Swarm Mode deployment.
61-
* **Docker Compose** integration and optimization for local development.
62-
* **Production ready** Python web server using Uvicorn and Gunicorn.
63-
* Python <a href="https://github.com/tiangolo/fastapi" class="external-link" target="_blank">**FastAPI**</a> backend:
64-
* **Fast**: Very high performance, on par with **NodeJS** and **Go** (thanks to Starlette and Pydantic).
65-
* **Intuitive**: Great editor support. <abbr title="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**: <a href="https://github.com/OAI/OpenAPI-Specification" class="external-link" target="_blank">OpenAPI</a> and <a href="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 <a href="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

Comments
 (0)