diff --git a/.gitignore b/.gitignore
index 3b29fdb..a9b045b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,23 @@
 
 .idea/
+venv/
 __pycache__/
+.mypy_cache/
 *.pyc
+build/
+.env
+/autogenerated-structure-template/app/core/__init__.py
+/autogenerated-structure-template/app/core/config.py
+/autogenerated-structure-template/app/__init__.py
+/autogenerated-structure-template/app/database.py
+/autogenerated-structure-template/app/main.py
+/autogenerated-structure-template/tests/__init__.py
+/autogenerated-structure-template/.gitignore
+/autogenerated-structure-template/.pre-commit-config.yaml
+/autogenerated-structure-template/docker-compose.yaml
+/autogenerated-structure-template/Dockerfile
+/autogenerated-structure-template/gino-fastapi-layout.svg
+/autogenerated-structure-template/LICENSE
+/autogenerated-structure-template/README.md
+/autogenerated-structure-template/requirements.txt
+/autogenerated-structure-template/setup.cfg
diff --git a/README.md b/README.md
index c03be27..37b3181 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,73 @@
+# URLer - Uniform Resource Locator shortener.
+
+## How to start
+
+Use python 3.9 or 3.10.
+
+Create virtual environment
+```bash
+pip3 install virtualenv
+python3 -m virtualenv venv -p python3
+source venv/bin/activate
+```
+Install dependencies
+```bash
+pip install -r requirements.txt
+```
+The module `uvloop==0.14.0` is not being installed with python 3.11 due to an error `Could not build wheels for uvloop`.
+But it works with 3.10.
+
+Create `.env` file in the root of project:
+```bash
+PROJECT_NAME='Your-name-for-this-project'
+```
+e.g. set a name `PROJECT_NAME='URLer'`.
+
+**Run server**
+```bash
+ uvicorn src.main:app --host 127.0.0.1 --port 8080
+```
+_Note: 0.0.0.0 may not work in Safari browser_
+
+## How to test
+Open any link in any browser
+
+ * Swagger http://127.0.0.1:8080/docs
+ * ReDoc http://127.0.0.1:8080/redoc
+ * OpenAPI documentation (json) http://127.0.0.1:8080/openapi.json
+
+## A tidy up and a health check
+
+Install additional "developer's" requirements
+```bash
+pip install -r requirements-dev.txt
+```
+
+A linter
+```bash
+ruff src
+```
+
+A linter's fixing tool
+```bash
+ruff src --fix
+```
+
+A formatter
+```bash
+ruff format src
+```
+
+A default 'health-checking' linter
+```bash
+flake8 src
+```
+
+A static type checker tool
+```bash
+mypy src
+```
+
 # Проектное задание четвёртого спринта
 
 Спроектируйте и реализуйте сервис для создания сокращённой формы передаваемых URL и анализа активности их использования.
@@ -35,7 +105,7 @@ GET /<shorten-url-id>/status?[full-info]&[max-result=10]&[offset=0]
 
 Метод принимает в качестве параметра идентификатор сокращённого URL и возвращает информацию о количестве переходов, совершенных по ссылке.
 
-В ответе может содержаться как общее количество совершенных переходов, так и дополнительная детализированная информация о каждом переходе (наличие **query**-параметра **full-info** и параметров пагинации):
+В ответе может содержаться как **общее количество совершенных переходов**, так и дополнительная детализированная информация о каждом переходе (наличие **query**-параметра **full-info** и параметров пагинации):
 - дата и время перехода/использования ссылки;
 - информация о клиенте, выполнившем запрос;
 
@@ -44,10 +114,10 @@ GET /<shorten-url-id>/status?[full-info]&[max-result=10]&[offset=0]
 
 ## Дополнительные требования (отметьте [Х] выбранные пункты):
 
-- [ ] (1 балл) Реализуйте метод `GET /ping`, который возвращает информацию о статусе доступности БД.
-- [ ] (1 балл) Реализуйте возможность «удаления» сохранённого URL. Запись должна остаться, но помечаться как удалённая. При попытке получения полного URL возвращать ответ с кодом `410 Gone`.
+- [x] (1 балл) Реализуйте метод `GET /ping`, который возвращает информацию о статусе доступности БД.
+- [x] (1 балл) Реализуйте возможность «удаления» сохранённого URL. Запись должна остаться, но помечаться как удалённая. При попытке получения полного URL возвращать ответ с кодом `410 Gone`.
 - [ ] (2 балла) Реализуйте middlware, блокирующий доступ к сервису из запрещённых подсетей (black list).
-- [ ] (2 балла) Реализуйте возможность передавать ссылки пачками (batch upload).
+- [x] (2 балла) Реализуйте возможность передавать ссылки пачками (batch upload).
 
 <details>
 <summary> Описание изменений </summary>
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000..fc954b5
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,9 @@
+[tool.pytest.ini_options]
+addopts = '-sv'
+pythonpath = '.'
+
+[tool.ruff.lint]
+extend-select=['I']
+
+[tool.ruff.format]
+quote-style='single'
diff --git a/requirements-dev.txt b/requirements-dev.txt
new file mode 100644
index 0000000..9024721
--- /dev/null
+++ b/requirements-dev.txt
@@ -0,0 +1,5 @@
+
+flake8
+mypy
+ruff
+watchgod==0.8.2
diff --git a/requirements.txt b/requirements.txt
index e2b7913..a86be46 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,6 +1,6 @@
 
-fastapi==0.79.0
-orjson==3.4.1
+fastapi==0.93.0
 pydantic==1.9.0
+python-dotenv==1.0.1
 uvicorn==0.18.2
-uvloop==0.14.0; sys_platform != "win32" and implementation_name == "cpython"
+uvloop==0.17.0; sys_platform != "win32" and implementation_name == "cpython"
diff --git a/src/__init__.py b/src/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/src/core/config.py b/src/core/config.py
new file mode 100644
index 0000000..5ef6af6
--- /dev/null
+++ b/src/core/config.py
@@ -0,0 +1,23 @@
+"""
+Run through console:
+
+uvicorn src.main:app --host 127.0.0.1 --port 8080
+additional notes are in the `../README.md` file
+"""
+from pathlib import Path
+
+from pydantic import BaseSettings
+
+BASE_DIR = Path.cwd().parent.parent
+# print('BASE_DIR', BASE_DIR)
+
+
+class AppSettings(BaseSettings):
+    # Don't use this name, set any name in '.env' file.
+    PROJECT_NAME: str = "Default app's name"
+
+    class Config:
+        env_file = '.env'
+
+
+app_settings = AppSettings()
diff --git a/src/main.py b/src/main.py
index e69de29..9047c27 100644
--- a/src/main.py
+++ b/src/main.py
@@ -0,0 +1,21 @@
+"""
+Routs which work "from the box":
+
+docs_url: "/docs" - Swagger
+redoc_url: "/redoc" - ReDoc
+openapi_url: "/openapi.json" - OpenAPI documentation
+"""
+from fastapi import FastAPI
+
+from src.core import config
+
+
+def get_application():
+    _app = FastAPI(
+        title=config.app_settings.PROJECT_NAME,
+    )
+
+    return _app
+
+
+app = get_application()