mirror of https://github.com/tiangolo/fastapi.git
104 lines
7.3 KiB
Markdown
104 lines
7.3 KiB
Markdown
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.
|
|
|
|
|
|
## Full-Stack-FastAPI-PostgreSQL
|
|
|
|
GitHub: <a href="https://github.com/tiangolo/full-stack-fastapi-postgresql" target="_blank">https://github.com/tiangolo/full-stack-fastapi-postgresql</a>
|
|
|
|
### Features
|
|
|
|
* Full **Docker** integration (Docker based).
|
|
* Docker Swarm Mode deployment.
|
|
* **Docker Compose** integration and optimization for local development
|
|
* **Production ready** Python web server using Uvicorn and Gunicorn.
|
|
* Python **[FastAPI](https://github.com/tiangolo/fastapi)** backend:
|
|
* **Fast**: Very high performance, on par with **NodeJS** and **Go** (thanks to Starlette and Pydantic).
|
|
* **Intuitive**: Great editor support. <abbr title="also known as auto-complete, autocompletion, IntelliSense">Completion</abbr> everywhere. Less time debugging.
|
|
* **Easy**: Designed to be easy to use and learn. Less time reading docs.
|
|
* **Short**: Minimize code duplication. Multiple features from each parameter declaration.
|
|
* **Robust**: Get production-ready code. With automatic interactive documentation.
|
|
* **Standards-based**: Based on (and fully compatible with) the open standards for APIs: <a href="https://github.com/OAI/OpenAPI-Specification" target="_blank">OpenAPI</a> and <a href="http://json-schema.org/" target="_blank">JSON Schema</a>.
|
|
* [**Many other features**](https://github.com/tiangolo/fastapi) including automatic validation, serialization, interactive documentation, authentication with OAuth2 JWT tokens, etc.
|
|
* **Secure password** hashing by default.
|
|
* **JWT token** authentication.
|
|
* **SQLAlchemy** models (independent of Flask extensions, so they can be used with Celery workers directly).
|
|
* Basic starting models for users (modify and remove as you need).
|
|
* **Alembic** migrations.
|
|
* **CORS** (Cross Origin Resource Sharing).
|
|
* **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).
|
|
* 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).
|
|
* Easy Python integration with **Jupyter Kernels** for remote or in-Docker development with extensions like Atom Hydrogen or Visual Studio Code Jupyter.
|
|
* **Vue** frontend:
|
|
* Generated with Vue CLI.
|
|
* **JWT Authentication** handling.
|
|
* Login view.
|
|
* After login, main dashboard view.
|
|
* Main dashboard with user creation and edition.
|
|
* Self user edition.
|
|
* **Vuex**.
|
|
* **Vue-router**.
|
|
* **Vuetify** for beautiful material design components.
|
|
* **TypeScript**.
|
|
* Docker server based on **Nginx** (configured to play nicely with Vue-router).
|
|
* Docker multi-stage building, so you don't need to save or commit compiled code.
|
|
* Frontend tests ran at build time (can be disabled too).
|
|
* 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.
|
|
* **PGAdmin** for PostgreSQL database, you can modify it to use PHPMyAdmin and MySQL easily.
|
|
* **Flower** for Celery jobs monitoring.
|
|
* 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.
|
|
* Traefik integration, including Let's Encrypt **HTTPS** certificates automatic generation.
|
|
* GitLab **CI** (continuous integration), including frontend and backend testing.
|
|
|
|
|
|
|
|
## Full-Stack-FastAPI-Couchbase
|
|
|
|
GitHub: <a href="https://github.com/tiangolo/full-stack-fastapi-couchbase" target="_blank">https://github.com/tiangolo/full-stack-fastapi-couchbase</a>
|
|
|
|
### Features
|
|
|
|
* Full **Docker** integration (Docker based).
|
|
* Docker Swarm Mode deployment.
|
|
* **Docker Compose** integration and optimization for local development.
|
|
* **Production ready** Python web server using Uvicorn and Gunicorn.
|
|
* Python **[FastAPI](https://github.com/tiangolo/fastapi)** backend:
|
|
* **Fast**: Very high performance, on par with **NodeJS** and **Go** (thanks to Starlette and Pydantic).
|
|
* **Intuitive**: Great editor support. <abbr title="also known as auto-complete, autocompletion, IntelliSense">Completion</abbr> everywhere. Less time debugging.
|
|
* **Easy**: Designed to be easy to use and learn. Less time reading docs.
|
|
* **Short**: Minimize code duplication. Multiple features from each parameter declaration.
|
|
* **Robust**: Get production-ready code. With automatic interactive documentation.
|
|
* **Standards-based**: Based on (and fully compatible with) the open standards for APIs: <a href="https://github.com/OAI/OpenAPI-Specification" target="_blank">OpenAPI</a> and <a href="http://json-schema.org/" target="_blank">JSON Schema</a>.
|
|
* [**Many other features**](https://github.com/tiangolo/fastapi) including automatic validation, serialization, interactive documentation, authentication with OAuth2 JWT tokens, etc.
|
|
* **Secure password** hashing by default.
|
|
* **JWT token** authentication.
|
|
* **CORS** (Cross Origin Resource Sharing).
|
|
* **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).
|
|
* **NoSQL Couchbase** database that supports direct synchronization via Couchbase Sync Gateway for offline-first applications.
|
|
* **Full Text Search** integrated, using Couchbase.
|
|
* 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).
|
|
* Easy Python integration with **Jupyter** Kernels for remote or in-Docker development with extensions like Atom Hydrogen or Visual Studio Code Jupyter.
|
|
* **Email notifications** for account creation and password recovery, compatible with:
|
|
* Mailgun
|
|
* SparkPost
|
|
* SendGrid
|
|
* ...any other provider that can generate standard SMTP credentials.
|
|
* **Vue** frontend:
|
|
* Generated with Vue CLI.
|
|
* **JWT Authentication** handling.
|
|
* Login view.
|
|
* After login, main dashboard view.
|
|
* Main dashboard with user creation and edition.
|
|
* Self user edition.
|
|
* **Vuex**.
|
|
* **Vue-router**.
|
|
* **Vuetify** for beautiful material design components.
|
|
* **TypeScript**.
|
|
* Docker server based on **Nginx** (configured to play nicely with Vue-router).
|
|
* Docker multi-stage building, so you don't need to save or commit compiled code.
|
|
* Frontend tests ran at build time (can be disabled too).
|
|
* 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.
|
|
* **Flower** for Celery jobs monitoring.
|
|
* 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.
|
|
* Traefik integration, including Let's Encrypt **HTTPS** certificates automatic generation.
|
|
* GitLab **CI** (continuous integration), including frontend and backend testing.
|