From 4949d0182f131fc0fc97bff82ad2bdc3b44bd738 Mon Sep 17 00:00:00 2001
From: Pavel Kirilin <win10@list.ru>
Date: Thu, 2 Sep 2021 22:55:40 +0400
Subject: [PATCH] Documnetation update.

Signed-off-by: Pavel Kirilin <win10@list.ru>
---
 README.md             |  19 +++++++------------
 images/ui-example.png | Bin 23550 -> 0 bytes
 pyproject.toml        |   2 +-
 3 files changed, 8 insertions(+), 13 deletions(-)
 delete mode 100644 images/ui-example.png

diff --git a/README.md b/README.md
index 3de5768..3bca5cd 100644
--- a/README.md
+++ b/README.md
@@ -2,12 +2,7 @@
 
 <div align="center">
 <img src="https://raw.githubusercontent.com/s3rius/FastAPI-template/master/images/logo.png" width=700>
-<div><i>Fast and flexible general-purpose template for your API.</i></div>
-</div>
-
-<div align="center">
-<img src="https://raw.githubusercontent.com/s3rius/FastAPI-template/master/images/ui-example.png" width=700>
-<div><i>With text user interface.</i></div>
+<div><i>Flexible and Lightweight general-purpose template for FastAPI.</i></div>
 </div>
 
 ## Usage
@@ -35,28 +30,28 @@ python3 -m fastapi_template
 
 ## Features
 
-Template is made with SQLAlchemy14 and uses sqlalchemy orm and sessions,
+Template is made with SQLAlchemy1.4 and uses sqlalchemy orm and sessions,
 instead of raw drivers.
 
 It has minimum to start new excellent project.
 
+Pre-commit integrations and excellent code documentation.
+
 Generator features:
 - Different databases to choose from.
 - Alembic integration;
 - redis support;
 - different CI\CD templates;
-- Kubernetes config.
+- Kubernetes config generation.
 
 This project can handle arguments passed through command line.
 
 ```shell
 $ python -m fastapi_template --help
 
-usage: FastAPI template [-h] [--name PROJECT_NAME]
-                        [--description PROJECT_DESCRIPTION]
+usage: FastAPI template [-h] [--name PROJECT_NAME] [--description PROJECT_DESCRIPTION]
                         [--db {DatabaseType.none,DatabaseType.sqlite,DatabaseType.mysql,DatabaseType.postgresql}]
-                        [--ci {CIType.none,CIType.gitlab_ci,CIType.github}]
-                        [--redis] [--alembic] [--kube] [--force]
+                        [--ci {CIType.none,CIType.gitlab_ci,CIType.github}] [--redis] [--alembic] [--kube] [--force]
 
 optional arguments:
   -h, --help            show this help message and exit
diff --git a/images/ui-example.png b/images/ui-example.png
deleted file mode 100644
index 7d2a6c08766a6f418073b6d0a5a2eb8d38d264e0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 23550
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

diff --git a/pyproject.toml b/pyproject.toml
index 048a53a..c8e94d3 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
 [tool.poetry]
 name = "fastapi_template"
-version = "2.1.5"
+version = "2.1.6"
 description = "Feature-rich robust FastAPI template"
 authors = ["Pavel Kirilin <win10@list.ru>"]
 packages = [
-- 
GitLab