Skip to content

Приложение построено на Django 5.2 с использованием архитектурного подхода DDD и Django Ninja для REST API.

Notifications You must be signed in to change notification settings

chapppington/employee_catalog_django

Repository files navigation

Employee Catalog Django

Онлайн-каталог сотрудников для компании с поддержкой иерархической структуры, разработанный на 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 (опционально, для локальной разработки)

Быстрый старт

  1. Клонируйте репозиторий:

    git clone <repository-url>
    cd employee_catalog_django_ddd
  2. Создайте файл .env в корне проекта:

    DJANGO_KEY=your-secret-key-here
    POSTGRES_DB=employee_catalog
    POSTGRES_USER=postgres
    POSTGRES_PASSWORD=postgres
    POSTGRES_HOST=postgres
    POSTGRES_PORT=5432
  3. Запустите приложение:

    make app
  4. Выполните миграции:

    make migrate
  5. Создайте суперпользователя (опционально):

    make superuser
  6. Соберите статические файлы:

    make collectstatic

Приложение будет доступно по адресу http://localhost:8000

📝 Доступные команды Make

Команда Описание
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 - схемы валидации данных

📊 Модель данных

Employee (Сотрудник)

  • 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 документация

После запуска приложения API документация доступна по адресу:

  • Swagger UI: http://localhost:8000/api/docs

About

Приложение построено на Django 5.2 с использованием архитектурного подхода DDD и Django Ninja для REST API.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published