BerryJournal - это современная цифровая образовательная платформа для автоматизации процессов контроля успеваемости в образовательных учреждениях. Система разработана для ГАПОУ СО «Каменск-Уральский политехнический колледж» и предоставляет возможности для:
- Выставления оценок преподавателями
- Просмотра успеваемости студентами
- Администрирования учебного процесса
- Формирования отчетности
Платформа оптимизирует взаимодействие между преподавателями, студентами и администрацией, повышая прозрачность и эффективность образовательного процесса.
Проект имеет двухуровневую архитектуру (клиент-сервер):
/
├── client/ # Клиентская часть (Next.js)
│ ├── app/ # Основные страницы приложения
│ ├── public/ # Статические файлы
│ ├── package.json # Зависимости клиентской части
│ ├── .env.example # Пример переменных окружения
│ └── next.config.ts # Конфигурация Next.js
│
├── server/ # Серверная часть (Laravel)
│ ├── app/ # Логика приложения
│ │ ├── Http/
│ │ │ ├── Controllers/ # Контроллеры
│ │ │ └── Middleware/ # Промежуточное ПО
│ │ └── Models/ # Модели данных
│ ├── database/
│ │ ├── migrations/ # Миграции базы данных
│ │ └── seeders/ # Начальные данные
│ ├── routes/ # Маршруты API
│ ├── public/ # Публичные файлы
│ ├── .env.example # Пример переменных окружения
│ └── composer.json # Зависимости серверной части
│
├── docker-compose.yml # Конфигурация Docker
├── Dockerfile # Докеризация приложения
├── .gitignore # Исключаемые файлы Git
├── README.md # Документация
└── bernyjournal.sql # Дамп базы данных
- Next.js 14 - React фреймворк с SSR
- TypeScript - Типизированный JavaScript
- Tailwind CSS - Утилитарный CSS фреймворк
- Axios - HTTP клиент для API запросов
- Laravel 10 - PHP фреймворк
- MySQL 8 - Реляционная база данных
- Eloquent ORM - Работа с базой данных
- JWT Authentication - Аутентификация
- Docker - Контейнеризация
- Docker Compose - Оркестрация контейнеров
- Просмотр текущей успеваемости
- Отслеживание оценок по предметам
- Просмотр пропусков занятий
- Выставление оценок
- Отметка посещаемости
- Ведение журналов по предметам
- Просмотр групп классного руководства
- Управление пользователями
- Редактирование групп и специальностей
- Настройка предметов
- Управление правами доступа
- Docker 20.10+
- Docker Compose
- 4 ГБ оперативной памяти
- 30 ГБ свободного места на диске
- Клонируйте репозиторий:
git clone https://github.com/BerryJournal/BerryJournal
cd BerryJournal- Настройте переменные окружения:
# Скопируйте примеры конфигурационных файлов
cp server/.env.example server/.env
cp client/.env.example client/.env
cp .env.example .envЗаполните конфигурационные файлы своими данными
- Запустите приложение:
docker-compose up -d- Приложение будет доступно по адресам:
- Клиент: http://localhost:3000
- API сервер: http://localhost:8000
- База данных: localhost:3306
cd server
# Установите зависимости
composer install
# Настройте базу данных в .env файле
cp .env.example .env
# Отредактируйте .env файл
# Сгенерируйте ключ приложения
php artisan key:generate
# Выполните миграции
php artisan migrate --seed
# Запустите сервер
php artisan servecd client
# Установите зависимости
npm install
# Настройте переменные окружения
cp .env.example .env
# Отредактируйте .env файл
# Запустите клиент
npm run dev// Пример запроса к API
const response = await axios.get('/api/student/grades', {
headers: {
'Authorization': `Bearer ${accessToken}`
}
});
// Ответ содержит:
{
"subjects": [
{
"id": 1,
"name": "Математика",
"grades": [
{"date": "2024-01-15", "grade": 5, "type": "экзамен"},
{"date": "2024-01-10", "grade": 4, "type": "практика"}
],
"average": 4.5
}
]
}// Пример запроса на добавление оценки
const response = await axios.post(
'/api/teacher/grades',
{
student_id: 123,
subject_id: 45,
grade: 5,
date: '2024-12-28',
type: 'экзамен',
},
{
headers: {
Authorization: `Bearer ${accessToken}`,
},
}
)npm run dev # Запуск в режиме разработки
npm run build # Сборка проекта
npm start # Запуск собранного проекта
npm run lint # Проверка кодаphp artisan serve # Запуск сервера
php artisan migrate # Выполнение миграций
php artisan db:seed # Заполнение базы данных
php artisan tinker # Консоль Laravel
php artisan test # Запуск тестов# Создание новой миграции
php artisan make:migration create_table_name
# Создание модели
php artisan make:model ModelName
# Создание контроллера
php artisan make:controller ControllerNamePOST /api/auth/login- Вход в системуPOST /api/auth/register- РегистрацияPOST /api/auth/logout- Выход из системы
GET /api/student/subjects- Список предметовGET /api/student/grades/{subject_id}- Оценки по предмету
GET /api/teacher/groups- Группы классного руководстваGET /api/teacher/journals- Все журналыPUT /api/teacher/grades/{id}- Обновление оценки
GET /api/admin/users- Управление пользователямиPOST /api/admin/groups- Добавление группыPUT /api/admin/subjects/{id}- Обновление предмета
Проект разработан для образовательных целей ГАПОУ СО «КУПК».
Разработчик: Черноскутов Е.И.
Руководитель проекта: Бодня Н.В.
Образовательное учреждение: ГАПОУ СО «Каменск-Уральский политехнический колледж»
Примечание: Для работы в продакшн режиме рекомендуется настроить SSL сертификаты, настроить брандмауэр и регулярно выполнять резервное копирование базы данных.