101 lines
3.4 KiB
Markdown
101 lines
3.4 KiB
Markdown
|
|
# mnemo_cards_web_v2
|
|||
|
|
|
|||
|
|
Flutter web приложение для изучения языков с использованием **yx_scope** и **yx_state**.
|
|||
|
|
|
|||
|
|
## 🏗️ Архитектура
|
|||
|
|
|
|||
|
|
### Скоупы (yx_scope):
|
|||
|
|
- **AppScope** - корневой скоуп (роутер, аналитика, авторизация)
|
|||
|
|
- **UserScope** - пользовательский скоуп (темы, игры, статистика)
|
|||
|
|
|
|||
|
|
### State Management (yx_state):
|
|||
|
|
- `ThemeStateManager` - управление темой
|
|||
|
|
- `UserStateManager` - состояние пользователя (гость/авторизован)
|
|||
|
|
- `PacksStateManager` - состояние тем/карточек
|
|||
|
|
- `GamesStateManager` - состояние игр
|
|||
|
|
|
|||
|
|
## 🚀 Быстрый старт
|
|||
|
|
|
|||
|
|
### Установка зависимостей:
|
|||
|
|
```bash
|
|||
|
|
flutter pub get
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Генерация кода (freezed):
|
|||
|
|
```bash
|
|||
|
|
flutter pub run build_runner build --delete-conflicting-outputs
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Запуск приложения:
|
|||
|
|
```bash
|
|||
|
|
flutter run -d chrome
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📁 Структура проекта
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
lib/
|
|||
|
|
├── di/ # Dependency Injection (yx_scope)
|
|||
|
|
│ ├── app_scope/ # AppScope
|
|||
|
|
│ └── user_scope/ # UserScope
|
|||
|
|
├── domain/ # Бизнес-логика
|
|||
|
|
│ ├── services/ # Сервисы
|
|||
|
|
│ └── state/ # State Managers
|
|||
|
|
├── presentation/ # UI слой
|
|||
|
|
│ ├── pages/ # Страницы
|
|||
|
|
│ ├── widgets/ # Виджеты
|
|||
|
|
│ ├── router/ # Роутинг
|
|||
|
|
│ └── theme/ # Темы
|
|||
|
|
├── app.dart # Главный виджет
|
|||
|
|
└── main.dart # Точка входа
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🎯 Основные функции
|
|||
|
|
|
|||
|
|
- ✅ Авторизация через Google и Telegram
|
|||
|
|
- ✅ Гостевой режим
|
|||
|
|
- ✅ 3 вкладки: Темы, Игры, Профиль
|
|||
|
|
- ✅ Светлая/темная тема
|
|||
|
|
- 🚧 Изучение карточек (TODO)
|
|||
|
|
- 🚧 Мини-игры (TODO)
|
|||
|
|
- 🚧 Статистика (TODO)
|
|||
|
|
|
|||
|
|
## 📚 Технологии
|
|||
|
|
|
|||
|
|
- Flutter Web
|
|||
|
|
- yx_scope / yx_state - DI и state management
|
|||
|
|
- go_router - роутинг
|
|||
|
|
- Firebase - аналитика, авторизация
|
|||
|
|
- freezed - code generation
|
|||
|
|
- dio - HTTP клиент
|
|||
|
|
|
|||
|
|
## 📖 Документация
|
|||
|
|
|
|||
|
|
См. [PLAN.md](./PLAN.md) для детального плана разработки.
|
|||
|
|
|
|||
|
|
## 🔧 Настройка Firebase
|
|||
|
|
|
|||
|
|
1. Установите Firebase CLI:
|
|||
|
|
```bash
|
|||
|
|
npm install -g firebase-tools
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. Настройте Firebase проект:
|
|||
|
|
```bash
|
|||
|
|
firebase login
|
|||
|
|
flutterfire configure
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. Это обновит `lib/firebase_options.dart` с правильными конфигурациями.
|
|||
|
|
|
|||
|
|
## ⚠️ Важные примечания
|
|||
|
|
|
|||
|
|
- **Web Only**: Этот проект предназначен ТОЛЬКО для web платформы
|
|||
|
|
- UserScope создается сразу при запуске (для гостевого режима)
|
|||
|
|
- При logout UserScope НЕ удаляется, только меняется состояние
|
|||
|
|
- Используйте `flutter pub run build_runner watch` для автоматической генерации кода
|
|||
|
|
|
|||
|
|
## 📝 TODO
|
|||
|
|
|
|||
|
|
См. текущие задачи в [PLAN.md](./PLAN.md) раздел "Этапы разработки".
|