Архітектурний огляд
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/ бере перший профіль, тож для типового сайту школи перевірте, що в базі потрібний запис.