Перейти до змісту

Архітектурний огляд

django-school-framework поєднує Django-модулі, REST API та окремий React-сайт. Згенерований проєкт підключає модулі через INSTALLED_APPS; навігація фронтенду використовує їх маніфест.


🏛️ Структура платформи

┌────────────────────────────────────────────────────────┐
│                   Клієнтський рівень                   │
│      React 19 SPA + CSS + засоби доступності          │
└───────────────────────────▲────────────────────────────┘
                            │ (JSON через REST API)
┌───────────────────────────▼────────────────────────────┐
│                    Рівень API (DRF)                    │
│   drf-spectacular (OpenAPI 3.0 / Swagger) + CORS/CSRF  │
└───────────────────────────▲────────────────────────────┘
                            │
┌───────────────────────────▼────────────────────────────┐
│                 Бізнес-модулі Django                   │
│  core │ legal │ admissions │ nutrition │ safety │ ...  │
└───────────────────────────▲────────────────────────────┘
                            │
┌───────────────────────────▼────────────────────────────┐
│                   Рівень бази даних                    │
│        Django ORM + налаштована СУБД                   │
└────────────────────────────────────────────────────────┘

🧩 Модульний підхід

Кожен функціональний напрямок школи виділено в ізольований Django-додаток:

Додаток Призначення Тематичний зв'язок
apps.core Реквізити школи, налаштування теми, CLI, маніфест Загальні положення ЗУ «Про освіту»
apps.legal Статут, ліцензії, публічні звіти, кошториси Стаття 30 (ч. 2, ч. 3)
apps.admissions Ліцензований обсяг, вільні місця, закріплена територія Стаття 30 (п. 5, 6, 7 ч. 2)
apps.nutrition Щоденні меню, вікові категорії, постачальники Постанова КМУ № 305, НАССР
apps.safety План протидії булінгу, анонімні звернення ЗУ № 2657-VIII
apps.news Офіційні повідомлення, термінові сповіщення Інформаційна відкритість
apps.schedule Розклад уроків та структура навчального року Ст. 10 ЗУ «Про повну заг. середню освіту»
apps.gallery Фотоальбоми шкільних заходів Захист персональних даних дітей

⚡ Профіль закладу освіти (SchoolProfile)

Команда school-admin create-school оновлює основний запис профілю. Модель має унікальне поле ЄДРПОУ, але не забороняє зберігати кілька різних закладів у одній БД. Маніфест /api/v1/core/manifest/ бере перший профіль, тож для типового сайту школи перевірте, що в базі потрібний запис.