← Все работы

Социально-образовательная платформа для школ · 2026

MAKTABNET

Социально-образовательная платформа, объединяющая учеников, учителей и администрацию школы в одной цифровой среде.

Ссылки скоро

Инженерный обзор

  • 29 Моделей данных
  • 100+ Эндпоинтов API
  • 20+ Модулей backend
  • 3 Платформы
  • 627+ Автотестов

Технологии

Backend
  • NestJS 11
  • Node.js
  • TypeScript
  • Prisma ORM
  • PostgreSQL
  • JWT + Passport
  • EventEmitter2
  • Multer
  • Jest
  • Supertest
Web
  • React 19
  • Vite
  • TypeScript
  • Tailwind CSS
  • i18next
  • Lucide
Mobile
  • React Native
  • Expo
  • TypeScript
Infrastructure
  • pnpm monorepo
  • Shared TS packages
  • Docker
  • Docker Compose
  • Nginx
  • Let's Encrypt
  • Hetzner VPS

Задача

В школах Узбекистана общение между учениками, учителями и администрацией разбросано по Telegram-группам, доскам объявлений и устным договорённостям. Идеи, проблемы и события легко теряются, а структурного взаимодействия между школами почти нет.

Maktabnet заменяет это единой, организованной и прозрачной средой.

Решение

Maktabnet объединяет учеников, учителей и администрацию школы в одной социально-образовательной платформе. Пользователи публикуют посты, предлагают идеи и голосуют за них, сообщают о проблемах, ведут проекты и организуют события — а школы могут устанавливать официальное сотрудничество друг с другом.

Слой уведомлений на событиях держит нужных людей в курсе, когда происходят действия вроде лайков, комментариев, заявок на вступление или новых постов.

Моя роль

Я разработал проект в одиночку — от архитектуры до продакшена.

Это включало проектирование backend и базы данных, REST API, аутентификацию и систему прав на основе ролей, веб-приложение на React, мобильное приложение на React Native, конвейер загрузки медиа и валидации изображений, локализацию и тёмную тему, а также деплой.

Я также настроил сервер так, чтобы Maktabnet работал на том же VPS рядом с отдельным, не связанным продакшен-проектом, не мешая ему.

Архитектура

API-first. Backend на NestJS + PostgreSQL + Prisma: 29 моделей данных, 100+ эндпоинтов и 20+ доменных модулей.

Веб и мобайл общаются с backend через общий типизированный пакет @maktab/api-client, поэтому контракт API одинаков на всех платформах.

Уведомления построены на событиях: доменные сервисы генерируют события, центральный слушатель принимает их и передаёт сервису уведомлений, который сохраняет их.

Доменные модули
  • Posts
  • Ideas
  • Problems
  • Projects
  • Events
  • Collaboration
  • Moderation
  • Notifications
  • Authentication
  • Users
Поток уведомлений
  1. Пост · Идея · Вступление
  2. Событие
  3. Центральный слушатель
  4. Сервис уведомлений
  5. Сохранение в БД

Логика уведомлений остаётся отделённой от основной бизнес-логики.

Сложности

Главной задачей была матрица прав, которая остаётся корректной для четырёх ролей — Ученик, Учитель, Админ школы, Админ платформы — и для состояний членства (PENDING / APPROVED / REJECTED) и модерации (WARNED / RESTRICTED / SUSPENDED).

Один тонкий случай: отделить реального автора контента от контекста, в котором он показан, и от контента, опубликованного от имени школы.

Вторая задача — деплой. Добавление Maktabnet на VPS, где уже работал не связанный продакшен-проект, требовало избегать конфликтов в сети, именовании контейнеров, конфигурации обратного прокси и SSL-сертификатах.

Результат

Maktabnet — работающий продукт на трёх платформах: backend, веб и мобайл — развёрнут в продакшене на реальном домене.

Система покрыта 370+ модульными и 257+ e2e-тестами, а архитектура рассчитана на добавление новых функций и ролей без переработки.

Ключевые функции

  • Аутентификация и авторизация
  • Права на основе ролей
  • Посты
  • Идеи и голосование
  • Проблемы
  • Проекты
  • События
  • Сотрудничество школ
  • Модерация
  • Уведомления в реальном времени
  • Загрузка медиа
  • Мультиязычность
  • Тёмная тема
  • Веб + мобайл
  • Админ-функции

Overview

Maktabnet is a social-educational platform that brings students, teachers and school administration into one digital environment.

It is built as a three-platform product — a NestJS API-first backend, a React web application and a React Native mobile application sharing a typed API client. The system combines social interaction, cross-school collaboration, moderation and event-driven notifications in a single ecosystem.

Хотите, чтобы вам собрали что-то подобное? Обсудить →