From 3225cab543e4d8d95a957a0439180cab1227ad36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Voron?= Date: Sun, 13 Oct 2019 11:05:59 +0200 Subject: [PATCH] Add logo for Github and update doc index --- docs/index.md | 18 ++++++++++++++++++ logo_github.png | Bin 0 -> 20084 bytes 2 files changed, 18 insertions(+) create mode 100644 logo_github.png diff --git a/docs/index.md b/docs/index.md index 2d639db4..78297f6c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,5 +1,9 @@ # FastAPI Users +

+ FastAPI Users +

+

Ready-to-use and customizable users management for FastAPI

@@ -11,3 +15,17 @@ **Source Code**: https://github.com/frankie567/fastapi-users --- + +## Work in progress 🚧 + +This library is currently in early stage development. First working version soon! + +## Features + +* Extensible base user model +* Ready-to-use register, login, *forgot and reset password routes ([#3](https://github.com/frankie567/fastapi-users/issues/3))* +* Customizable database backend + * SQLAlchemy backend included + * *MongoDB backend included ([#4](https://github.com/frankie567/fastapi-users/issues/4))* +* Customizable authentication backend + * JWT authentication backend included diff --git a/logo_github.png b/logo_github.png new file mode 100644 index 0000000000000000000000000000000000000000..9efebc9e2f7ffbe0b8ec19d7e909aa185596d285 GIT binary patch literal 20084 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°(Toed+SLkM5L-7ke_i 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 BT1fx^ literal 0 HcmV?d00001