Современная платформа для онлайн-обучения с модульной архитектурой.
- Frontend: React + Vite + TypeScript + TailwindCSS
- Backend: Node.js + NestJS + Prisma + PostgreSQL
- State Management: React Query
- Authentication: JWT
- Code Quality: ESLint + Prettier + Husky
EduMVP/
├── src/ # Frontend код
│ ├── app/ # Входные файлы и роутинг
│ ├── modules/ # Функциональные модули
│ │ ├── auth/ # Авторизация
│ │ ├── courses/ # Курсы
│ │ └── profile/ # Профиль
│ ├── hooks/ # Кастомные хуки
│ ├── services/ # API сервисы
│ ├── utils/ # Утилиты
│ └── styles/ # Глобальные стили
├── server/ # Backend код
│ ├── src/
│ │ ├── modules/ # NestJS модули
│ │ │ ├── auth/ # Модуль авторизации
│ │ │ ├── users/ # Модуль пользователей
│ │ │ └── courses/ # Модуль курсов
│ │ └── common/ # Общие утилиты
│ └── prisma/ # Prisma схема
└── dist/ # Сборка
- Node.js >= 18.0.0
- PostgreSQL >= 14.0
- npm или yarn
```bash git clone cd EduMVP ```
```bash
npm install
cd server npm install cd .. ```
Скопируйте файл .env.example в .env:
```bash cp .env.example .env ```
Отредактируйте .env файл и укажите ваши настройки:
```env
VITE_API_URL=http://localhost:3001
PORT=3001 NODE_ENV=development
DATABASE_URL=postgresql://user:password@localhost:5432/edumvp
JWT_SECRET=your-super-secret-jwt-key JWT_EXPIRES_IN=7d ```
```bash
cd server
npx prisma migrate dev
npx prisma generate
npx prisma db seed ```
В двух терминалах:
Терминал 1 - Backend: ```bash cd server npm run start:dev ```
Терминал 2 - Frontend: ```bash npm run dev ```
Или запустите оба одновременно: ```bash
npm run dev:server
npm run dev ```
Приложение будет доступно по адресам:
- Frontend: http://localhost:5173
- Backend: http://localhost:3001
```bash
npm run build
npm run build:server
cd server npm run start:prod ```
- `npm run dev` - Запустить dev сервер
- `npm run build` - Собрать production версию
- `npm run preview` - Предпросмотр production сборки
- `npm run lint` - Проверить код с ESLint
- `npm run lint:fix` - Исправить ошибки ESLint
- `npm run format` - Форматировать код с Prettier
- `npm run format:check` - Проверить форматирование
- `npm run type-check` - Проверить типы TypeScript
- `npm run start:dev` - Запустить dev сервер с hot-reload
- `npm run start:prod` - Запустить production сервер
- `npm run build` - Собрать backend
- `npm run lint` - Проверить код с ESLint
- `npm test` - Запустить тесты
```bash
npm test
npm run test:cov
cd server npm run test:e2e ```
- Модульная структура: Каждый функциональный модуль (auth, courses, profile) имеет свою папку с компонентами, хуками и утилитами
- API Layer: Централизованные сервисы для работы с API
- Custom Hooks: Переиспользуемая логика в хуках
- Path Aliases: Удобные алиасы путей для импортов
- NestJS модули: Каждая функциональность вынесена в отдельный модуль
- Prisma ORM: Типобезопасная работа с базой данных
- JWT авторизация: Безопасная аутентификация пользователей
- Guards: Защита маршрутов от неавторизованного доступа
- `POST /auth/register` - Регистрация
- `POST /auth/login` - Вход
- `POST /auth/profile` - Получить профиль
- `GET /users` - Получить всех пользователей
- `GET /users/:id` - Получить пользователя
- `PUT /users/:id` - Обновить пользователя
- `DELETE /users/:id` - Удалить пользователя
- `GET /courses` - Получить все курсы
- `GET /courses/:id` - Получить курс
- `GET /courses/subject/:subject` - Получить курс по предмету
Приложение использует JWT токены для авторизации. Токен сохраняется в localStorage и автоматически добавляется ко всем API запросам.
Проект настроен с GitHub Actions для автоматического:
- Линтинга кода
- Проверки типов
- Тестирования
- Деплоя на production
- Создайте форк проекта
- Создайте ветку для вашей функции (`git checkout -b feature/AmazingFeature`)
- Закоммитьте изменения (`git commit -m 'Add some AmazingFeature'`)
- Отправьте в ветку (`git push origin feature/AmazingFeature`)
- Откройте Pull Request
Этот проект лицензирован под MIT License.
- Разработчик