Онлайн-каталог сотрудников для компании с поддержкой иерархической структуры, разработанный на Django
Проект представляет собой веб-приложение для управления каталогом сотрудников с возможностью отображения иерархической структуры организации. Приложение построено на Django 5.2 с использованием архитектурного подхода DDD и Django Ninja для REST API.
- Python 3.13
- Django 5.2.8
- Django Ninja 1.4.5+ (REST API)
- PostgreSQL (база данных)
- Poetry (управление зависимостями)
- Docker & Docker Compose (контейнеризация)
- Pytest (тестирование)
employee_catalog_django_ddd/
├── core/ # Основной код приложения
│ ├── api/ # API слой
│ │ ├── v1/ # API версии 1
│ │ │ ├── employees/ # Эндпоинты для сотрудников
│ │ │ └── customers/ # Эндпоинты для клиентов/пользователей
│ │ ├── filters.py # Фильтры для API
│ │ └── schemas.py # Схемы данных
│ ├── apps/ # Доменные приложения
│ │ ├── employee/ # Модуль сотрудников
│ │ │ ├── entities/ # Доменные сущности
│ │ │ ├── models/ # Модели данных
│ │ │ ├── services/ # Бизнес-логика
│ │ │ └── filters/ # Фильтры для запросов
│ │ ├── customers/ # Модуль клиентов
│ │ │ ├── entities/ # Доменные сущности
│ │ │ ├── services/ # Бизнес-логика
│ │ │ └── exceptions/ # Исключения домена
│ │ └── common/ # Общие компоненты
│ └── project/ # Настройки проекта
│ ├── settings/ # Конфигурация
│ └── urls.py # Корневые URL
├── tests/ # Тесты
│ ├── factories/ # Фабрики для тестовых данных
│ └── services/ # Тесты сервисов
├── docker_compose/ # Docker Compose конфигурации
├── Dockerfile # Образ приложения
├── Makefile # Команды для разработки
├── pyproject.toml # Конфигурация Poetry
└── manage.py # Django management script
- Docker и Docker Compose
- Poetry (опционально, для локальной разработки)
-
Клонируйте репозиторий:
git clone <repository-url> cd employee_catalog_django_ddd
-
Создайте файл
.envв корне проекта:DJANGO_KEY=your-secret-key-here POSTGRES_DB=employee_catalog POSTGRES_USER=postgres POSTGRES_PASSWORD=postgres POSTGRES_HOST=postgres POSTGRES_PORT=5432
-
Запустите приложение:
make app
-
Выполните миграции:
make migrate
-
Создайте суперпользователя (опционально):
make superuser
-
Соберите статические файлы:
make collectstatic
Приложение будет доступно по адресу http://localhost:8000
| Команда | Описание |
|---|---|
make storages |
Запустить хранилища (PostgreSQL) |
make storages-down |
Остановить хранилища |
make storages-logs |
Просмотр логов PostgreSQL |
make app |
Запустить приложение |
make app-logs |
Просмотр логов приложения |
make app-down |
Остановить приложение |
make migrate |
Применить миграции |
make migrations |
Создать новые миграции |
make superuser |
Создать суперпользователя |
make collectstatic |
Собрать статические файлы |
make test |
Запустить тесты |
make precommit |
Запустить pre-commit проверки |
- Entities - доменные сущности, содержащие бизнес-логику
- Models - модели Django для работы с БД
- Services - сервисы с бизнес-логикой
- API Handlers - обработчики HTTP запросов
- Schemas - схемы валидации данных
id- уникальный идентификаторlast_name- фамилияfirst_name- имяmiddle_name- отчествоposition- должностьdate_hired- дата приёма на работуsalary- размер заработной платыmanager- начальник (ForeignKey на Employee)created_at- дата созданияupdated_at- дата обновления
Запуск тестов:
make testПроект использует isort для сортировки импортов. Конфигурация находится в pyproject.toml.
Запуск форматирования:
make precommitПосле запуска приложения API документация доступна по адресу:
- Swagger UI:
http://localhost:8000/api/docs