# FastAPI Users
Ready-to-use and customizable users management for FastAPI
[](https://github.com/fastapi-users/fastapi-users/actions)
[](https://codecov.io/gh/fastapi-users/fastapi-users)
[](https://badge.fury.io/py/fastapi-users)
[](https://pepy.tech/project/fastapi-users)
[](#contributors-)
---
**Documentation**: https://fastapi-users.github.io/fastapi-users/
**Source Code**: https://github.com/fastapi-users/fastapi-users
---
Add quickly a registration and authentication system to your [FastAPI](https://fastapi.tiangolo.com/) project. **FastAPI Users** is designed to be as customizable and adaptable as possible.
## Features
* [X] Extensible base user model
* [X] Ready-to-use register, login, reset password and verify e-mail routes
* [X] Ready-to-use social OAuth2 login flow
* [X] Dependency callables to inject current user in route
* [X] Pluggable password validation
* [X] Customizable database backend
* [X] SQLAlchemy async backend included thanks to [encode/databases](https://www.encode.io/databases/)
* [X] MongoDB async backend included thanks to [mongodb/motor](https://github.com/mongodb/motor)
* [X] [Tortoise ORM](https://tortoise-orm.readthedocs.io/en/latest/) backend included
* [X] [ormar](https://collerek.github.io/ormar/) backend included
* [X] Multiple customizable authentication backends
* [X] JWT authentication backend included
* [X] Cookie authentication backend included
* [X] Full OpenAPI schema support, even with several authentication backends
## π Discover my book: *Building Data Science Applications with FastAPI*
**Develop, manage, and deploy efficient machine learning applications with Python**
### What is this book about?
This book covers the following exciting features:
* Explore the basics of modern Python and async I/O programming
* Get to grips with basic and advanced concepts of the FastAPI framework
* Implement a FastAPI dependency to efficiently run a machine learning model
* Integrate a simple face detection algorithm in a FastAPI backend
* Integrate common Python data science libraries in a web backend
* Deploy a performant and reliable web backend for a data science application
If you feel this book is for you, get your [copy](https://amzn.to/3kTvgjG) today!
## Contributors and sponsors β¨βοΈ
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
## Development
### Setup environment
You should create a virtual environment and activate it:
```bash
python -m venv venv/
```
```bash
source venv/bin/activate
```
And then install the development dependencies:
```bash
pip install -r requirements.dev.txt
```
### Run unit tests
You can run all the tests with:
```bash
make test
```
The command will start a MongoDB container for the related unit tests. So you should have [Docker](https://www.docker.com/get-started) installed.
Alternatively, you can run `pytest` yourself. The MongoDB unit tests will be skipped if no server is available on your local machine:
```bash
pytest
```
There are quite a few unit tests, so you might run into ulimit issues where there are too many open file descriptors. You may be able to set a new, higher limit temporarily with:
```bash
ulimit -n 2048
```
### Format the code
Execute the following command to apply `isort` and `black` formatting:
```bash
make format
```
## License
This project is licensed under the terms of the MIT license.