contacts-api/
├── app/ # Основний код додатку
│ ├── __init__.py # Ініціалізація пакету
│ ├── main.py # Головний файл FastAPI
│ ├── database.py # Налаштування SQLAlchemy
│ ├── models.py # Моделі бази даних
│ ├── schemas.py # Pydantic схеми
│ ├── crud.py # CRUD операції
│ └── routers/ # API роутери
│ ├── __init__.py
│ └── contacts.py # Endpoints для контактів
├── tests/ # Тести
│ ├── __init__.py
│ ├── conftest.py # Налаштування pytest
│ └── test_contacts.py # Тести API контактів
├── scripts/ # Допоміжні скрипти
│ └── seed_data.py # Створення тестових даних
├── alembic/ # Міграції бази даних
│ ├── versions/ # Файли міграцій
│ ├── env.py # Налаштування Alembic
│ ├── script.py.mako # Шаблон міграцій
│ └── README # Документація Alembic
├── .env # Змінні середовища (не в git)
├── .env.example # Приклад змінних середовища
├── .gitignore # Git ignore файл
├── .dockerignore # Docker ignore файл
├── pyproject.toml # Poetry конфігурація
├── poetry.lock # Lock файл Poetry
├── alembic.ini # Конфігурація Alembic
├── Dockerfile # Docker конфігурація
├── docker-compose.yml # Docker Compose
└── README.md # Документація проекту
- main.py - точка входу FastAPI додатку
- database.py - налаштування підключення до БД
- models.py - SQLAlchemy моделі таблиць
- schemas.py - Pydantic схеми для валідації
- crud.py - функції для роботи з БД
- routers/ - API endpoints організовані за модулями
- conftest.py - фікстури та налаштування pytest
- test_contacts.py - тести для API контактів
- test_*.py - додаткові тести (за потребою)
- seed_data.py - генерація тестових даних
- backup.py - резервне копіювання (опціонально)
- migrate.py - допоміжні міграції (опціонально)
- versions/ - історія змін схеми БД
- env.py - конфігурація середовища Alembic
- script.py.mako - шаблон для нових міграцій
# Створення основної структури
mkdir -p contacts-api/{app/routers,tests,scripts,alembic/versions}
# Створення порожніх __init__.py файлів
touch contacts-api/app/__init__.py
touch contacts-api/app/routers/__init__.py
touch contacts-api/tests/__init__.py
# Перехід в директорію проекту
cd contacts-api
# Ініціалізація Poetry проекту
poetry init
# Створення віртуального середовища
poetry shell-
Базові конфігураційні файли:
# Poetry та Python pyproject.toml .env.example .gitignore .dockerignore # Docker Dockerfile docker-compose.yml
-
Основний код додатку:
app/__init__.py app/database.py # Спочатку БД app/models.py # Потім моделі app/schemas.py # Схеми валідації app/crud.py # CRUD операції app/routers/__init__.py app/routers/contacts.py # API endpoints app/main.py # Головний файл (останнім)
-
Допоміжні скрипти:
scripts/seed_data.py
-
Тести:
tests/__init__.py tests/conftest.py tests/test_contacts.py
-
Міграції (опціонально):
alembic.ini alembic/env.py alembic/script.py.mako
-
Документація:
README.md
Якщо потрібно використовувати Alembic для міграцій:
# Ініціалізація Alembic
alembic init alembic
# Створення першої міграції
alembic revision --autogenerate -m "Create contacts table"
# Застосування міграцій
alembic upgrade head# Клонувати/створити проект
git clone <repo> && cd contacts-api
# Встановити залежності
poetry install
# Скопіювати змінні середовища
cp .env.example .env# Через Docker
docker run --name postgres \
-e POSTGRES_PASSWORD=password \
-p 5432:5432 -d postgres:15
# Або через Docker Compose
docker-compose up -d db# Активувати віртуальне середовище
poetry shell
# Створити тестові дані
python scripts/seed_data.py# Режим розробки
uvicorn app.main:app --reload
# Або через Docker Compose
docker-compose up -d web# Тест API
curl http://localhost:8000/health
# Відкрити документацію
open http://localhost:8000/docs- Створити структуру директорій
- Налаштувати Poetry (
pyproject.toml) - Створити файли середовища (
.env.example) - Написати основний код (
app/) - Налаштувати Docker (
Dockerfile,docker-compose.yml) - Створити тестові дані (
scripts/seed_data.py) - Написати тести (
tests/) - Налаштувати Git (
.gitignore) - Написати документацію (
README.md) - Протестувати локальний запуск
- Протестувати Docker запуск
Після створення всіх файлів, проект повинен:
- ✅ Запускатися локально через Poetry
- ✅ Запускатися через Docker Compose
- ✅ Мати робочу документацію API
- ✅ Проходити всі тести
- ✅ Генерувати тестові дані
- ✅ Підтримувати всі CRUD операції
- ✅ Мати функцію пошуку
- ✅ Показувати найближчі дні народження
Структура готова для розробки та розгортання! 🚀