Skip to content

Renakezo/BerryJournal

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BerryJournal - Цифровая образовательная платформа

Описание проекта

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 ГБ свободного места на диске

Быстрый запуск с Docker

  1. Клонируйте репозиторий:
git clone https://github.com/BerryJournal/BerryJournal
cd BerryJournal
  1. Настройте переменные окружения:
# Скопируйте примеры конфигурационных файлов
cp server/.env.example server/.env
cp client/.env.example client/.env
cp .env.example .env

Заполните конфигурационные файлы своими данными

  1. Запустите приложение:
docker-compose up -d
  1. Приложение будет доступно по адресам:

Ручная установка (без Docker)

Серверная часть (Laravel)

cd server

# Установите зависимости
composer install

# Настройте базу данных в .env файле
cp .env.example .env
# Отредактируйте .env файл

# Сгенерируйте ключ приложения
php artisan key:generate

# Выполните миграции
php artisan migrate --seed

# Запустите сервер
php artisan serve

Клиентская часть (Next.js)

cd client

# Установите зависимости
npm install

# Настройте переменные окружения
cp .env.example .env
# Отредактируйте .env файл

# Запустите клиент
npm run dev

Примеры использования

Получение оценок студента (API)

// Пример запроса к 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 ControllerName

API Endpoints

Аутентификация

  • POST /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 сертификаты, настроить брандмауэр и регулярно выполнять резервное копирование базы данных.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 50.1%
  • PHP 39.3%
  • Blade 8.1%
  • SCSS 2.2%
  • Other 0.3%