🗂️ Реструктуризация vault: логичная организация папок
Изменения: - Интеграция СУП/ → Работа/Интеграция СУП/ (рабочие заметки вместе) - Релизы/ → Работа/Релизы/ (рабочие заметки вместе) - Другое/Собеседование .Net → Работа/ (рабочая тема) - Другое/Своя игра → Личное/ (хобби) - Smart home/ → Квартира/ (всё про квартиру в одном месте) - Flutter/, Go/ → Dev/Flutter/, Dev/Go/ (учебные роадмапы) - Dev/Pulse/competitors-analysis → Projects/Pulse/ (проект Pulse в одной папке) - Twilio.md → Dev/ (техническая заметка) - Tokens.md → Личное/Tokens (API keys).md - Игры.md → Личное/Игры.md - Удалены пустые папки: Другое/, Smart home/, Интеграция СУП/, Релизы/ Структура: Авто/ — автомобили Dev/ — разработка, изучение (Go, Flutter, репозитории) Квартира/ — квартира + умный дом Личное/ — личное, токены, игры, команды Мама/ — проекты для мамы Projects/ — Pulse App Работа/ — BPMSoft, интеграции, релизы Япония/ — путешествие saved-articles/ — сохранённые статьи voice-notes/ — голосовые заметки
This commit is contained in:
543
Dev/Flutter/Roadmap.md
Normal file
543
Dev/Flutter/Roadmap.md
Normal file
@@ -0,0 +1,543 @@
|
||||
---
|
||||
title: "Flutter & Dart Roadmap"
|
||||
date: 2026-03-26
|
||||
tags:
|
||||
- flutter
|
||||
- dart
|
||||
- mobile
|
||||
- roadmap
|
||||
- learning
|
||||
description: "Подробный план изучения Flutter и Dart для опытного разработчика (C#, Go, JS)"
|
||||
---
|
||||
|
||||
# 🚀 Flutter & Dart Roadmap
|
||||
|
||||
> **Цель:** Самостоятельно создавать мобильные приложения (iOS + Android)
|
||||
> **Опыт:** C#, Go, JavaScript — базовые концепции ООП, async, типизация уже знакомы
|
||||
> **Общая оценка:** ~120–160 часов / 3–4 месяца при 8–10 ч/неделю
|
||||
|
||||
---
|
||||
|
||||
## 📋 Оглавление
|
||||
|
||||
1. [[#Этап 1 — Dart за 1 неделю|Dart за 1 неделю]]
|
||||
2. [[#Этап 2 — Flutter основы|Flutter основы (2 недели)]]
|
||||
3. [[#Этап 3 — Навигация и архитектура|Навигация и архитектура (1.5 недели)]]
|
||||
4. [[#Этап 4 — State Management|State Management (2 недели)]]
|
||||
5. [[#Этап 5 — Работа с данными|Работа с данными (2 недели)]]
|
||||
6. [[#Этап 6 — UI мастерство|UI мастерство (1.5 недели)]]
|
||||
7. [[#Этап 7 — Нативные возможности|Нативные возможности (1 неделя)]]
|
||||
8. [[#Этап 8 — Тестирование и CI/CD|Тестирование и CI/CD (1 неделя)]]
|
||||
9. [[#Этап 9 — Публикация|Публикация в Store (1 неделя)]]
|
||||
10. [[#Этап 10 — Реальный проект|Реальный проект (4–6 недель)]]
|
||||
11. [[#Ресурсы — Каталог|Каталог ресурсов]]
|
||||
|
||||
---
|
||||
|
||||
## Этап 1 — Dart за 1 неделю
|
||||
|
||||
⏱ **~8–12 часов** | С опытом в C# и JS пойдёт быстро
|
||||
|
||||
Dart — типизированный язык, похожий на гибрид C# и TypeScript. Основные отличия: null safety, mixins, extensions, Futures/Streams (аналог Task/Promise).
|
||||
|
||||
### Что изучить
|
||||
|
||||
- [ ] Синтаксис: переменные, типы, `final`/`const`, `late`
|
||||
- [ ] Null safety (`?`, `!`, `??`, `?.`)
|
||||
- [ ] Классы, наследование, mixins, abstract classes
|
||||
- [ ] Extensions (привет, C# extension methods)
|
||||
- [ ] Enums (enhanced enums с методами — Dart 3)
|
||||
- [ ] Generics (знакомо из C#)
|
||||
- [ ] Collections: `List`, `Map`, `Set` + spread operator
|
||||
- [ ] `async`/`await`, `Future`, `Stream`
|
||||
- [ ] Pattern matching и sealed classes (Dart 3) — аналог switch expressions в C#
|
||||
- [ ] Records (аналог tuples/анонимных типов)
|
||||
- [ ] Error handling: `try`/`catch`/`on`
|
||||
|
||||
### Ресурсы
|
||||
|
||||
- [ ] 📖 [Dart Language Tour](https://dart.dev/language) — **главный ресурс**, пробежать за 3–4 часа
|
||||
- [ ] 📖 [Dart Codelabs](https://dart.dev/codelabs) — интерактивные упражнения
|
||||
- [ ] 🎮 [DartPad](https://dartpad.dev/) — онлайн-песочница для экспериментов
|
||||
- [ ] 📹 [Dart in 100 Seconds — Fireship](https://www.youtube.com/watch?v=NrO0CJCbYLA) — быстрый обзор
|
||||
- [ ] 📖 [Effective Dart](https://dart.dev/effective-dart) — стайл-гайд и идиомы
|
||||
|
||||
### 🛠 Мини-проект
|
||||
|
||||
**CLI-утилита на Dart** — парсер JSON/CSV, конвертер валют через API, или простой todo-list в терминале. Цель: потрогать язык руками.
|
||||
|
||||
```bash
|
||||
dart create my_cli_app
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Этап 2 — Flutter основы
|
||||
|
||||
⏱ **~16–20 часов / 2 недели**
|
||||
|
||||
### Что изучить
|
||||
|
||||
- [ ] Установка Flutter SDK + настройка IDE (VS Code / Android Studio)
|
||||
- [ ] Эмуляторы: Android (AVD) + iOS Simulator (если есть Mac)
|
||||
- [ ] Структура проекта Flutter: `lib/`, `pubspec.yaml`, `assets/`
|
||||
- [ ] **Widget tree** — всё является виджетом
|
||||
- [ ] `StatelessWidget` vs `StatefulWidget` + `setState()`
|
||||
- [ ] `BuildContext` и жизненный цикл виджетов
|
||||
- [ ] Основные виджеты: `Text`, `Container`, `Column`, `Row`, `Stack`, `ListView`, `GridView`
|
||||
- [ ] `Scaffold`, `AppBar`, `BottomNavigationBar`, `Drawer`
|
||||
- [ ] Layout: `Expanded`, `Flexible`, `SizedBox`, `Padding`, `Align`
|
||||
- [ ] Input: `TextField`, `Form`, `FormField`, валидация
|
||||
- [ ] Кнопки: `ElevatedButton`, `TextButton`, `IconButton`, `FloatingActionButton`
|
||||
- [ ] `Image`, `Icon`, работа с assets
|
||||
- [ ] Material Design 3 и `ThemeData`
|
||||
- [ ] **Hot Reload** — главная суперсила Flutter
|
||||
|
||||
### Ресурсы
|
||||
|
||||
- [ ] 📖 [Flutter Get Started](https://docs.flutter.dev/get-started) — офиц. туториал установки
|
||||
- [ ] 📖 [Flutter Widget Catalog](https://docs.flutter.dev/ui/widgets) — каталог виджетов с примерами
|
||||
- [ ] 📖 [Flutter Codelabs](https://docs.flutter.dev/codelabs) — пошаговые лабы от Google
|
||||
- [ ] 📹 [Flutter Crash Course for Beginners — Traversy Media](https://www.youtube.com/watch?v=1ukSR1GRtMU) — 1 час, быстрый старт
|
||||
- [ ] 📹 [Flutter Full Course — Mitch Koko](https://www.youtube.com/watch?v=TclK5gNM_PM) — от начала до продвинутого
|
||||
- [ ] 📹 [Flutter Widget of the Week — Google](https://www.youtube.com/playlist?list=PLjxrf2q8roU23XGwz3Km7sQZFTdB996iG) — короткие видео по виджетам
|
||||
- [ ] 📖 [Flutter Layout Cheat Sheet](https://medium.com/flutter-community/flutter-layout-cheat-sheet-5363348d037e)
|
||||
|
||||
### 🛠 Пет-проект: Визитка / Портфолио
|
||||
|
||||
Простое приложение-визитка с несколькими экранами:
|
||||
- [ ] Главный экран с аватаром, именем, описанием
|
||||
- [ ] Страница с контактами (ссылки, email)
|
||||
- [ ] Тёмная/светлая тема
|
||||
|
||||
---
|
||||
|
||||
## Этап 3 — Навигация и архитектура
|
||||
|
||||
⏱ **~12–15 часов / 1.5 недели**
|
||||
|
||||
### Что изучить
|
||||
|
||||
- [ ] `Navigator` 1.0: `push`, `pop`, named routes
|
||||
- [ ] `Navigator` 2.0 и декларативная навигация
|
||||
- [ ] **go_router** — стандарт навигации в 2025+ (рекомендован Google)
|
||||
- [ ] Deep links и параметры в маршрутах
|
||||
- [ ] Вложенная навигация (Shell routes, tab navigation)
|
||||
- [ ] Передача данных между экранами
|
||||
- [ ] Структура проекта:
|
||||
- Feature-first vs Layer-first
|
||||
- Рекомендуемая: `lib/features/<name>/{data, domain, presentation}/`
|
||||
- [ ] Dependency Injection: `get_it` + `injectable`
|
||||
- [ ] Repository pattern (знакомо из C#)
|
||||
|
||||
### Ресурсы
|
||||
|
||||
- [ ] 📖 [go_router docs](https://pub.dev/packages/go_router) — офиц. документация
|
||||
- [ ] 📖 [Flutter Navigation Guide](https://docs.flutter.dev/ui/navigation) — гайд от Google
|
||||
- [ ] 📹 [go_router Tutorial — Andrea Bizzotto](https://codewithandrea.com/articles/flutter-navigation-gorouter-go-vs-push/) — подробный разбор
|
||||
- [ ] 📖 [Flutter App Architecture — Andrea Bizzotto](https://codewithandrea.com/articles/flutter-app-architecture-riverpod-introduction/) — feature-first структура
|
||||
- [ ] 📹 [Flutter Project Structure — Reso Coder](https://www.youtube.com/watch?v=KjE2IDphA_U)
|
||||
|
||||
### 🛠 Пет-проект: Мульти-экранное приложение
|
||||
|
||||
Приложение-справочник (рецепты / заметки / фильмы):
|
||||
- [ ] Список элементов → детальный экран
|
||||
- [ ] go_router с параметрами
|
||||
- [ ] Bottom navigation с 3+ табами
|
||||
- [ ] Поиск и фильтрация
|
||||
|
||||
---
|
||||
|
||||
## Этап 4 — State Management
|
||||
|
||||
⏱ **~16–20 часов / 2 недели** | Самая важная тема
|
||||
|
||||
### Подходы (от простого к сложному)
|
||||
|
||||
- [ ] `setState` — для локального состояния
|
||||
- [ ] `InheritedWidget` — как работает "магия" под капотом
|
||||
- [ ] **Provider** — простой и понятный (хорош для старта)
|
||||
- [ ] **Riverpod** ⭐ — эволюция Provider, **рекомендация 2025+**
|
||||
- Compile-safe, testable, не зависит от BuildContext
|
||||
- `ref.watch`, `ref.read`, `ref.listen`
|
||||
- Providers: `Provider`, `StateProvider`, `NotifierProvider`, `AsyncNotifierProvider`, `FutureProvider`, `StreamProvider`
|
||||
- [ ] **BLoC** — для больших enterprise-приложений
|
||||
- Events → BLoC → States
|
||||
- Знакомый паттерн если работал с Redux/MediatR
|
||||
- [ ] Когда что использовать:
|
||||
- Маленькое приложение → Riverpod
|
||||
- Большое/командное → BLoC
|
||||
- Прототип → setState + Provider
|
||||
|
||||
### Ресурсы
|
||||
|
||||
- [ ] 📖 [Flutter State Management Guide](https://docs.flutter.dev/data-and-backend/state-mgmt/intro) — офиц. обзор
|
||||
- [ ] 📖 [Riverpod Documentation](https://riverpod.dev/) — **начни с этого**
|
||||
- [ ] 📹 [Riverpod 2.0 — Complete Guide — Andrea Bizzotto](https://codewithandrea.com/articles/flutter-state-management-riverpod/) — лучший гайд
|
||||
- [ ] 📹 [Flutter Riverpod Tutorial — Vandad Nahavandipoor](https://www.youtube.com/watch?v=vtGCteFYs4M)
|
||||
- [ ] 📖 [BLoC Library](https://bloclibrary.dev/) — офиц. сайт с туториалами
|
||||
- [ ] 📹 [BLoC Tutorial — Reso Coder](https://www.youtube.com/watch?v=THCkkQ-V1-8)
|
||||
- [ ] 📖 [Provider Package](https://pub.dev/packages/provider) — документация
|
||||
|
||||
### 🛠 Пет-проект: Todo App (с архитектурой)
|
||||
|
||||
- [ ] CRUD задач с Riverpod
|
||||
- [ ] Фильтры: все / активные / завершённые
|
||||
- [ ] Persistence (SharedPreferences или Hive)
|
||||
- [ ] Clean Architecture: Data → Domain → Presentation
|
||||
- [ ] Unit-тесты для бизнес-логики
|
||||
|
||||
---
|
||||
|
||||
## Этап 5 — Работа с данными
|
||||
|
||||
⏱ **~16–20 часов / 2 недели**
|
||||
|
||||
### HTTP и API
|
||||
|
||||
- [ ] Пакет `http` — базовые запросы
|
||||
- [ ] **Dio** — продвинутый HTTP-клиент (interceptors, retry, cancel)
|
||||
- [ ] Сериализация JSON: `json_serializable` + `build_runner`
|
||||
- [ ] **Freezed** — генерация data-классов и union types
|
||||
- [ ] Обработка ошибок сети: `Result` pattern, `Either`
|
||||
- [ ] Retrofit (знакомо из .NET!) — генерация API-клиента
|
||||
|
||||
### Локальное хранение
|
||||
|
||||
- [ ] `SharedPreferences` — key-value (как LocalStorage)
|
||||
- [ ] **Hive** — быстрая NoSQL база
|
||||
- [ ] **Drift** (бывший Moor) — type-safe SQLite ORM
|
||||
- [ ] `sqflite` — SQLite напрямую
|
||||
- [ ] `flutter_secure_storage` — для токенов/паролей
|
||||
|
||||
### Firebase (бесплатный tier)
|
||||
|
||||
- [ ] Firebase Auth — аутентификация
|
||||
- [ ] Cloud Firestore — NoSQL база
|
||||
- [ ] Firebase Storage — файлы
|
||||
- [ ] Firebase Messaging (FCM) — push-нотификации
|
||||
- [ ] [FlutterFire](https://firebase.flutter.dev/) — офиц. плагины
|
||||
|
||||
### Ресурсы
|
||||
|
||||
- [ ] 📖 [Flutter Networking Guide](https://docs.flutter.dev/data-and-backend/networking)
|
||||
- [ ] 📖 [Dio Package](https://pub.dev/packages/dio) — документация
|
||||
- [ ] 📖 [Freezed Package](https://pub.dev/packages/freezed) — генерация моделей
|
||||
- [ ] 📖 [FlutterFire Docs](https://firebase.flutter.dev/) — Firebase для Flutter
|
||||
- [ ] 📹 [Flutter REST API Tutorial — Vandad](https://www.youtube.com/watch?v=CQuxU8JGJnQ)
|
||||
- [ ] 📹 [Firebase Flutter Course — freeCodeCamp](https://www.youtube.com/watch?v=wUSkeTaBonA) — 5+ часов
|
||||
- [ ] 📖 [Drift Documentation](https://drift.simonbinder.eu/docs/getting-started/)
|
||||
|
||||
### 🛠 Пет-проект: Погодное приложение
|
||||
|
||||
- [ ] Запрос к Open-Meteo или OpenWeatherMap API
|
||||
- [ ] Модели через `freezed` + `json_serializable`
|
||||
- [ ] Поиск города, текущая погода + прогноз на 5 дней
|
||||
- [ ] Кэширование последнего запроса в Hive
|
||||
- [ ] Pull-to-refresh
|
||||
- [ ] Красивый UI с анимациями погоды
|
||||
|
||||
---
|
||||
|
||||
## Этап 6 — UI мастерство
|
||||
|
||||
⏱ **~12–15 часов / 1.5 недели**
|
||||
|
||||
### Что изучить
|
||||
|
||||
- [ ] Animations: implicit (`AnimatedContainer`, `AnimatedOpacity`) и explicit (`AnimationController`, `Tween`)
|
||||
- [ ] Hero animations (переходы между экранами)
|
||||
- [ ] Custom Paint — рисование кастомных элементов
|
||||
- [ ] `Sliver` виджеты: `CustomScrollView`, `SliverAppBar`, `SliverList`, `SliverGrid`
|
||||
- [ ] Responsive design: `LayoutBuilder`, `MediaQuery`, `OrientationBuilder`
|
||||
- [ ] Adaptive UI: Material (Android) + Cupertino (iOS)
|
||||
- [ ] Custom widgets: composition vs inheritance
|
||||
- [ ] Themes и дизайн-система (typography, color schemes, spacing)
|
||||
- [ ] Пакеты для UI:
|
||||
- `flutter_animate` — декларативные анимации
|
||||
- `shimmer` — loading placeholders
|
||||
- `cached_network_image` — кэширование картинок
|
||||
- `flutter_svg` — SVG поддержка
|
||||
|
||||
### Ресурсы
|
||||
|
||||
- [ ] 📖 [Flutter Animations Guide](https://docs.flutter.dev/ui/animations)
|
||||
- [ ] 📹 [Flutter Animations Course — Flutter Official](https://www.youtube.com/watch?v=IVTjpW3W33s)
|
||||
- [ ] 📖 [Flutter Adaptive Design](https://docs.flutter.dev/ui/adaptive-responsive)
|
||||
- [ ] 📹 [Sliver Widgets — Flutter](https://www.youtube.com/watch?v=Mz3kHQxBjGg)
|
||||
- [ ] 📖 [Material 3 in Flutter](https://docs.flutter.dev/ui/design/material)
|
||||
|
||||
### 🛠 Пет-проект: Клон UI известного приложения
|
||||
|
||||
Выбери и воспроизведи UI (без бэкенда):
|
||||
- [ ] Spotify / Netflix / Twitter — карточки, списки, анимации
|
||||
- [ ] Кастомные анимации переходов
|
||||
- [ ] Адаптивный дизайн под разные размеры экрана
|
||||
- [ ] Тёмная и светлая темы
|
||||
|
||||
---
|
||||
|
||||
## Этап 7 — Нативные возможности
|
||||
|
||||
⏱ **~8–10 часов / 1 неделя**
|
||||
|
||||
### Что изучить
|
||||
|
||||
- [ ] Platform channels — вызов нативного кода (Swift/Kotlin)
|
||||
- [ ] Камера: `camera`, `image_picker`
|
||||
- [ ] Геолокация: `geolocator`, `geocoding`
|
||||
- [ ] Карты: `google_maps_flutter` или `flutter_map` (OpenStreetMap)
|
||||
- [ ] Push-уведомления: `firebase_messaging` + `flutter_local_notifications`
|
||||
- [ ] Permissions: `permission_handler`
|
||||
- [ ] Biometrics: `local_auth`
|
||||
- [ ] Deep links и Universal links
|
||||
- [ ] Sharing: `share_plus`
|
||||
- [ ] URL launcher: `url_launcher`
|
||||
|
||||
### Ресурсы
|
||||
|
||||
- [ ] 📖 [Flutter Platform Integration](https://docs.flutter.dev/platform-integration/platform-channels)
|
||||
- [ ] 📖 [pub.dev](https://pub.dev/) — поиск пакетов, проверяй likes и pub points
|
||||
- [ ] 📹 [Google Maps in Flutter — Johannes Milke](https://www.youtube.com/watch?v=Zz5hMvgiWmY)
|
||||
- [ ] 📖 [Flutter Camera Plugin](https://pub.dev/packages/camera)
|
||||
|
||||
### 🛠 Мини-проект: Приложение с картой
|
||||
|
||||
- [ ] Показать текущее местоположение на карте
|
||||
- [ ] Добавление маркеров / POI
|
||||
- [ ] Поиск мест
|
||||
- [ ] Разрешения runtime
|
||||
|
||||
---
|
||||
|
||||
## Этап 8 — Тестирование и CI/CD
|
||||
|
||||
⏱ **~8–10 часов / 1 неделя**
|
||||
|
||||
### Что изучить
|
||||
|
||||
- [ ] **Unit tests** — тестирование бизнес-логики и репозиториев
|
||||
- [ ] **Widget tests** — тестирование UI-компонентов
|
||||
- [ ] **Integration tests** — E2E тестирование на устройстве/эмуляторе
|
||||
- [ ] Mocking: `mocktail` или `mockito`
|
||||
- [ ] Golden tests — скриншот-тесты UI
|
||||
- [ ] Code coverage: `flutter test --coverage`
|
||||
- [ ] CI/CD:
|
||||
- GitHub Actions / Codemagic / Fastlane
|
||||
- Автоматическая сборка APK/IPA
|
||||
- Автоматическая публикация в stores
|
||||
|
||||
### Ресурсы
|
||||
|
||||
- [ ] 📖 [Flutter Testing Guide](https://docs.flutter.dev/testing) — офиц. документация
|
||||
- [ ] 📹 [Flutter Testing Tutorial — Reso Coder](https://www.youtube.com/watch?v=RDY6UYh-4dg)
|
||||
- [ ] 📖 [Codemagic CI/CD](https://docs.codemagic.io/flutter/getting-started/) — бесплатный tier для Flutter
|
||||
- [ ] 📖 [Mocktail Package](https://pub.dev/packages/mocktail)
|
||||
|
||||
### 🛠 Практика
|
||||
|
||||
- [ ] Написать тесты для Todo App из Этапа 4
|
||||
- [ ] Unit tests для API-слоя (mock HTTP)
|
||||
- [ ] Widget tests для ключевых экранов
|
||||
- [ ] Настроить CI pipeline (GitHub Actions)
|
||||
|
||||
---
|
||||
|
||||
## Этап 9 — Публикация
|
||||
|
||||
⏱ **~6–8 часов / 1 неделя**
|
||||
|
||||
### Google Play Store
|
||||
|
||||
- [ ] Создать аккаунт разработчика ($25 одноразово)
|
||||
- [ ] Подписать APK/AAB (keystore)
|
||||
- [ ] Скриншоты, описание, иконка
|
||||
- [ ] Privacy Policy (можно сгенерировать)
|
||||
- [ ] Загрузить в Google Play Console
|
||||
- [ ] Internal testing → Closed testing → Production
|
||||
|
||||
### Apple App Store
|
||||
|
||||
- [ ] Apple Developer Program ($99/год)
|
||||
- [ ] Certificates, Identifiers, Profiles
|
||||
- [ ] Archive и загрузка через Xcode / Transporter
|
||||
- [ ] App Store Connect: метаданные, скриншоты
|
||||
- [ ] TestFlight для бета-тестирования
|
||||
- [ ] Ревью Apple (строгие правила)
|
||||
|
||||
### Ресурсы
|
||||
|
||||
- [ ] 📖 [Flutter Deployment — Android](https://docs.flutter.dev/deployment/android)
|
||||
- [ ] 📖 [Flutter Deployment — iOS](https://docs.flutter.dev/deployment/ios)
|
||||
- [ ] 📹 [Publish Flutter App — Mitch Koko](https://www.youtube.com/watch?v=g0GNuoCOtaQ)
|
||||
- [ ] 📖 [Fastlane for Flutter](https://docs.flutter.dev/deployment/cd)
|
||||
|
||||
---
|
||||
|
||||
## Этап 10 — Реальный проект
|
||||
|
||||
⏱ **~40–60 часов / 4–6 недель** | Всё вместе
|
||||
|
||||
### План создания реального приложения
|
||||
|
||||
> Пример: **Personal Finance Tracker** (или любое приложение по интересу)
|
||||
|
||||
#### Фаза 1: Планирование (2–3 дня)
|
||||
- [ ] Определить MVP: 3–5 ключевых фич
|
||||
- [ ] Wireframes (можно в Figma — бесплатно)
|
||||
- [ ] Выбрать стек: Riverpod + go_router + Dio + Drift/Hive
|
||||
- [ ] Спроектировать data models
|
||||
|
||||
#### Фаза 2: Скелет (1 неделя)
|
||||
- [ ] Настроить проект с правильной структурой (feature-first)
|
||||
- [ ] Настроить DI (get_it + injectable)
|
||||
- [ ] Навигация (go_router)
|
||||
- [ ] Базовый UI каждого экрана (placeholder)
|
||||
- [ ] Тема и дизайн-система
|
||||
|
||||
#### Фаза 3: Core Features (2–3 недели)
|
||||
- [ ] Реализовать основную бизнес-логику
|
||||
- [ ] Подключить API / базу данных
|
||||
- [ ] State management для каждой фичи
|
||||
- [ ] Обработка ошибок и loading states
|
||||
- [ ] Offline-first: локальный кэш + синхронизация
|
||||
|
||||
#### Фаза 4: Polish (1 неделя)
|
||||
- [ ] Анимации и micro-interactions
|
||||
- [ ] Responsive дизайн
|
||||
- [ ] Обработка edge-cases
|
||||
- [ ] Performance: profiling с DevTools
|
||||
- [ ] Accessibility (семантика для screen readers)
|
||||
|
||||
#### Фаза 5: Launch (3–5 дней)
|
||||
- [ ] Написать unit + widget тесты (coverage >60%)
|
||||
- [ ] CI/CD pipeline
|
||||
- [ ] Подготовить store listing
|
||||
- [ ] Бета-тест через TestFlight / Internal Testing
|
||||
- [ ] Релиз 🚀
|
||||
|
||||
### Идеи для реальных проектов
|
||||
|
||||
| Проект | Чему научит |
|
||||
|--------|-------------|
|
||||
| 💰 Финансовый трекер | CRUD, графики, локальная БД, экспорт |
|
||||
| 📝 Заметки/Markdown | Редактор, файловая система, синхронизация |
|
||||
| 🏋️ Трекер тренировок | Таймеры, анимации, статистика |
|
||||
| 🍕 Доставка еды (клон) | Карты, API, корзина, навигация |
|
||||
| 📰 Новостной агрегатор | RSS, API, кэширование, push |
|
||||
| 🎵 Музыкальный плеер | Аудио, фоновое воспроизведение, UI |
|
||||
|
||||
---
|
||||
|
||||
## Ресурсы — Каталог
|
||||
|
||||
### 📖 Документация (читать первым делом)
|
||||
|
||||
| Ресурс | Описание |
|
||||
|--------|----------|
|
||||
| [dart.dev](https://dart.dev/) | Официальная документация Dart |
|
||||
| [docs.flutter.dev](https://docs.flutter.dev/) | Официальная документация Flutter |
|
||||
| [pub.dev](https://pub.dev/) | Репозиторий пакетов (как npm/nuget) |
|
||||
| [Flutter API Reference](https://api.flutter.dev/) | Полный API reference |
|
||||
| [Material 3 Guidelines](https://m3.material.io/) | Гайдлайны Material Design |
|
||||
|
||||
### 📹 YouTube каналы
|
||||
|
||||
| Канал | Описание |
|
||||
|-------|----------|
|
||||
| [Flutter Official](https://www.youtube.com/@flutterdev) | Widget of the Week, Decoding Flutter |
|
||||
| [Fireship](https://www.youtube.com/@Fireship) | Быстрые обзоры, "in 100 seconds" |
|
||||
| [Vandad Nahavandipoor](https://www.youtube.com/@VandadNP) | Google Developer Expert, подробные курсы |
|
||||
| [Reso Coder](https://www.youtube.com/@ResoCoder) | Clean Architecture, TDD, BLoC |
|
||||
| [Mitch Koko](https://www.youtube.com/@createdbykoko) | Практичные проекты от 0 до деплоя |
|
||||
| [Code With Andrea](https://www.youtube.com/@CodeWithAndrea) | Riverpod, архитектура, best practices |
|
||||
| [The Flutter Way](https://www.youtube.com/@TheFlutterWay) | Красивые UI клоны |
|
||||
| [dbestech](https://www.youtube.com/@daboratechltd) | Полные проекты с бэкендом |
|
||||
| [Johannes Milke](https://www.youtube.com/@JohannesMilke) | Короткие туториалы по конкретным фичам |
|
||||
| [freeCodeCamp](https://www.youtube.com/@freecodecamp) | Длинные полные курсы (37+ часов) |
|
||||
|
||||
### 📚 Бесплатные курсы и туториалы
|
||||
|
||||
| Ресурс | Описание |
|
||||
|--------|----------|
|
||||
| [Flutter Codelabs](https://docs.flutter.dev/codelabs) | Пошаговые лабы от Google |
|
||||
| [Dart Codelabs](https://dart.dev/codelabs) | Интерактивные упражнения по Dart |
|
||||
| [Flutter Apprentice (raywenderlich)](https://www.kodeco.com/flutter) | Бесплатные статьи и туториалы |
|
||||
| [Flutter Gems](https://fluttergems.dev/) | Каталог полезных пакетов по категориям |
|
||||
| [Awesome Flutter](https://github.com/Solido/awesome-flutter) | Кураторский список ресурсов на GitHub |
|
||||
| [Flutter Examples](https://github.com/nisrulz/flutter-examples) | Сотни примеров кода |
|
||||
| [It's All Widgets](https://itsallwidgets.com/) | Галерея Flutter-приложений с исходниками |
|
||||
|
||||
### 🧰 Инструменты
|
||||
|
||||
| Инструмент | Описание |
|
||||
|------------|----------|
|
||||
| [DartPad](https://dartpad.dev/) | Онлайн-песочница |
|
||||
| [Flutter DevTools](https://docs.flutter.dev/tools/devtools) | Профилирование, отладка, инспектор |
|
||||
| [Very Good CLI](https://github.com/VeryGoodOpenSource/very_good_cli) | Генератор проектов с best practices |
|
||||
| [Mason](https://github.com/felangel/mason) | Шаблоны кода (как Yeoman) |
|
||||
| [Widgetbook](https://www.widgetbook.io/) | Storybook для Flutter виджетов |
|
||||
|
||||
### 📦 Must-have пакеты
|
||||
|
||||
| Пакет | Категория | Описание |
|
||||
|-------|-----------|----------|
|
||||
| `riverpod` | State Management | Реактивное управление состоянием |
|
||||
| `go_router` | Навигация | Декларативный роутинг |
|
||||
| `dio` | Networking | HTTP-клиент |
|
||||
| `freezed` | Code Generation | Immutable модели |
|
||||
| `json_serializable` | Serialization | JSON ↔ Dart |
|
||||
| `hive` | Storage | NoSQL БД |
|
||||
| `drift` | Storage | SQLite ORM |
|
||||
| `get_it` | DI | Service locator |
|
||||
| `injectable` | DI | Кодогенерация для get_it |
|
||||
| `flutter_hooks` | UI | React-style hooks |
|
||||
| `cached_network_image` | UI | Кэширование картинок |
|
||||
| `flutter_svg` | UI | SVG поддержка |
|
||||
| `intl` | i18n | Локализация |
|
||||
| `mocktail` | Testing | Мокирование |
|
||||
|
||||
---
|
||||
|
||||
## 💡 Советы от опытного разработчика к опытному
|
||||
|
||||
1. **Не читай — делай.** С опытом в C#/Go/JS ты быстро схватишь синтаксис. Открывай DartPad, пиши код.
|
||||
|
||||
2. **Flutter ≠ React Native.** Здесь нет DOM. Всё — виджеты. Widget tree пересоздаётся каждый кадр (Flutter рендерит как игровой движок).
|
||||
|
||||
3. **`const` everywhere.** Flutter использует `const` конструкторы для оптимизации rebuilds. Привыкай.
|
||||
|
||||
4. **Riverpod > Provider** для новых проектов. Provider legacy, Riverpod — его автор переосмыслил подход.
|
||||
|
||||
5. **Не бойся кодогенерации.** `build_runner` — это норма. `freezed` + `json_serializable` сэкономят тонны boilerplate.
|
||||
|
||||
6. **Декомпозиция виджетов.** Если `build()` больше 50 строк — разбивай. Extract widget > extract method.
|
||||
|
||||
7. **DevTools — твой друг.** Widget Inspector, Performance, Network — используй с первого дня.
|
||||
|
||||
8. **Dart — это не JavaScript.** Null safety строгий. Sound typing. Не борись с системой типов — используй её.
|
||||
|
||||
---
|
||||
|
||||
## 📊 Timeline Summary
|
||||
|
||||
| Этап | Тема | Часы | Недели |
|
||||
|------|------|------|--------|
|
||||
| 1 | Dart | 8–12 | 1 |
|
||||
| 2 | Flutter основы | 16–20 | 2 |
|
||||
| 3 | Навигация и архитектура | 12–15 | 1.5 |
|
||||
| 4 | State Management | 16–20 | 2 |
|
||||
| 5 | Работа с данными | 16–20 | 2 |
|
||||
| 6 | UI мастерство | 12–15 | 1.5 |
|
||||
| 7 | Нативные возможности | 8–10 | 1 |
|
||||
| 8 | Тестирование | 8–10 | 1 |
|
||||
| 9 | Публикация | 6–8 | 1 |
|
||||
| 10 | Реальный проект | 40–60 | 4–6 |
|
||||
| **Итого** | | **~140–190** | **~17–19** |
|
||||
|
||||
> При 8–10 часах в неделю = **~4–5 месяцев** до первого приложения в store 🎯
|
||||
|
||||
---
|
||||
|
||||
*Создано: 2026-03-26 | Автор: Cosmo ✨*
|
||||
*Последнее обновление: 2026-03-26*
|
||||
798
Dev/Go/Roadmap.md
Normal file
798
Dev/Go/Roadmap.md
Normal file
@@ -0,0 +1,798 @@
|
||||
# 🚀 Roadmap: Go (Golang) — от нуля до Middle разработчика
|
||||
|
||||
> **Для:** Даниил — разработчик с опытом C#/.NET, знакомый с основами Go
|
||||
> **Цель:** Системно пройти весь путь и выйти на уровень уверенного Middle Go-разработчика
|
||||
> **Общий срок:** ~6-9 месяцев при занятиях 1-2 часа в день
|
||||
> **Дата создания:** Февраль 2026
|
||||
|
||||
---
|
||||
|
||||
## 📋 Содержание
|
||||
|
||||
1. [Этап 1: Основы языка](#этап-1-основы-языка-3-4-недели)
|
||||
2. [Этап 2: Продвинутые концепции](#этап-2-продвинутые-концепции-4-5-недель)
|
||||
3. [Этап 3: Стандартная библиотека](#этап-3-стандартная-библиотека-4-5-недель)
|
||||
4. [Этап 4: Паттерны и архитектура](#этап-4-паттерны-и-архитектура-4-6-недель)
|
||||
5. [Этап 5: Инструменты экосистемы](#этап-5-инструменты-экосистемы-2-3-недели)
|
||||
6. [Этап 6: Продвинутый уровень](#этап-6-продвинутый-уровень-4-6-недель)
|
||||
7. [Пет-проекты](#-пет-проекты)
|
||||
8. [Ресурсы](#-ресурсы)
|
||||
9. [Инструменты разработчика](#-инструменты-разработчика)
|
||||
10. [Подборка статей](#-подборка-статей-топ-25)
|
||||
|
||||
---
|
||||
|
||||
## Этап 1: Основы языка (3-4 недели)
|
||||
|
||||
> 💡 *У тебя есть опыт C#, поэтому этот этап можно пройти быстрее, но не пропускай — Go принципиально отличается философией от C#.*
|
||||
|
||||
### Темы
|
||||
|
||||
| Тема | Описание |
|
||||
|------|----------|
|
||||
| **Установка и настройка** | Go toolchain, GOPATH vs Go Modules, workspace |
|
||||
| **Базовый синтаксис** | Переменные, константы, `:=`, базовые типы (`int`, `float64`, `string`, `bool`) |
|
||||
| **Составные типы** | Массивы, слайсы (slices), карты (maps), структуры (structs) |
|
||||
| **Управление потоком** | `if/else`, `for` (единственный цикл!), `switch`, `defer` |
|
||||
| **Функции** | Множественные возвращаемые значения, именованные возвраты, variadic функции |
|
||||
| **Указатели** | `*` и `&`, передача по значению vs по ссылке (аналогии с C#: `ref`/`out`) |
|
||||
| **Пакеты и модули** | `go mod init`, импорты, видимость (заглавная буква = public) |
|
||||
| **Обработка ошибок** | Паттерн `if err != nil`, `errors.New`, `fmt.Errorf` с `%w` |
|
||||
| **Строки и руны** | UTF-8, `rune` vs `byte`, пакет `strings` |
|
||||
|
||||
### Ресурсы для этапа
|
||||
|
||||
- 📖 [A Tour of Go](https://go.dev/tour/) — интерактивный тур от создателей Go (обязательно!)
|
||||
- 📖 [Go by Example](https://gobyexample.com/) — краткие примеры на каждую тему
|
||||
- 📖 [Effective Go](https://go.dev/doc/effective_go) — официальный гайд по идиоматичному Go
|
||||
- 📖 [Go Documentation](https://go.dev/doc/) — вся официальная документация
|
||||
- 🎥 [Golang Tutorial for Beginners — TechWorld with Nana](https://www.youtube.com/watch?v=yyUHQIec83I) — полный курс для начинающих
|
||||
- 🎥 [Learn Go Programming — FreeCodeCamp (YouTube)](https://www.youtube.com/watch?v=un6ZyFkqFKo) — 6+ часов бесплатного курса
|
||||
- 📝 [Learn Go with Tests](https://quii.gitbook.io/learn-go-with-tests) — учим Go через написание тестов (TDD)
|
||||
|
||||
### Практические задания
|
||||
|
||||
1. ✅ Пройти весь [Tour of Go](https://go.dev/tour/)
|
||||
2. ✅ Решить 15-20 задач на [Exercism (Go track)](https://exercism.org/tracks/go)
|
||||
3. ✅ Написать программу «Угадай число» с вводом из консоли
|
||||
4. ✅ Реализовать калькулятор с поддержкой операций +, -, *, / через CLI-аргументы
|
||||
5. ✅ Написать утилиту подсчёта слов в файле (аналог `wc`)
|
||||
6. ✅ Реализовать простую телефонную книгу с сохранением в JSON-файл
|
||||
|
||||
### ✅ Чеклист: что должен уметь после этапа
|
||||
|
||||
- [ ] Создать Go-проект с нуля (`go mod init`)
|
||||
- [ ] Объяснить разницу между слайсом и массивом
|
||||
- [ ] Работать со структурами и методами
|
||||
- [ ] Корректно обрабатывать ошибки (не игнорировать `err`)
|
||||
- [ ] Использовать `defer` для очистки ресурсов
|
||||
- [ ] Работать с указателями
|
||||
- [ ] Понимать систему пакетов и видимость
|
||||
- [ ] Читать и записывать файлы
|
||||
- [ ] Объяснить, почему в Go нет `while`, `class`, наследования и исключений
|
||||
|
||||
---
|
||||
|
||||
## Этап 2: Продвинутые концепции (4-5 недель)
|
||||
|
||||
### Темы
|
||||
|
||||
| Тема | Описание |
|
||||
|------|----------|
|
||||
| **Интерфейсы** | Неявная реализация, пустой интерфейс `any`, type assertion, type switch |
|
||||
| **Горутины (goroutines)** | Легковесные потоки, `go func()`, lifecycle |
|
||||
| **Каналы (channels)** | Буферизованные и небуферизованные, направленные каналы |
|
||||
| **Select** | Мультиплексирование каналов, таймауты, `default` |
|
||||
| **Sync примитивы** | `sync.Mutex`, `sync.RWMutex`, `sync.WaitGroup`, `sync.Once`, `sync.Map` |
|
||||
| **Context** | `context.Background()`, `WithCancel`, `WithTimeout`, `WithValue`, пробрасывание |
|
||||
| **Generics** | Type parameters, constraints, `comparable`, `any`, когда использовать |
|
||||
| **Embedding** | Встраивание структур и интерфейсов (вместо наследования) |
|
||||
| **Обработка ошибок (продвинуто)** | `errors.Is`, `errors.As`, wrapping, sentinel errors, custom error types |
|
||||
| **Паттерн init()** | Порядок инициализации, `init()` функции |
|
||||
|
||||
### Ресурсы для этапа
|
||||
|
||||
- 📖 [Go Concurrency Patterns (Go Blog)](https://go.dev/blog/pipelines) — паттерны конкурентности
|
||||
- 📖 [Share Memory by Communicating (Go Blog)](https://go.dev/blog/codelab-share) — ключевая философия Go
|
||||
- 📖 [Введение в Generics (Go Blog)](https://go.dev/blog/intro-generics) — официальное введение в дженерики
|
||||
- 📖 [Go Concurrency Guide (GitHub)](https://github.com/luk4z7/go-concurrency-guide) — подробный гайд по конкурентности
|
||||
- 🎥 [Concurrency in Go (YouTube)](https://www.youtube.com/watch?v=LvgVSSpwND8) — Jake Wright
|
||||
- 📖 [Паттерны многопоточности в Go (Habr)](https://habr.com/ru/articles/852556/) — отличная статья на русском
|
||||
- 📖 [Контекст в Go: как правильно (Habr)](https://habr.com/ru/articles/714370/) — про context
|
||||
|
||||
### Практические задания
|
||||
|
||||
1. ✅ Pipeline: написать конвейер обработки данных через каналы (генератор → фильтр → обработчик)
|
||||
2. ✅ Fan-Out/Fan-In: параллельно скачать 10 URL и собрать результаты
|
||||
3. ✅ Worker Pool: реализовать пул воркеров с ограничением конкурентности
|
||||
4. ✅ Graceful Shutdown: HTTP-сервер с корректным завершением по сигналу
|
||||
5. ✅ Реализовать потокобезопасный кеш с TTL через `sync.RWMutex`
|
||||
6. ✅ Написать generic-функции `Map`, `Filter`, `Reduce` для слайсов
|
||||
7. ✅ Rate Limiter через каналы и `time.Ticker`
|
||||
|
||||
### ✅ Чеклист: что должен уметь после этапа
|
||||
|
||||
- [ ] Объяснить разницу между горутинами и потоками ОС
|
||||
- [ ] Использовать каналы для коммуникации между горутинами
|
||||
- [ ] Предотвращать дедлоки и утечки горутин
|
||||
- [ ] Корректно использовать `context` для отмены и таймаутов
|
||||
- [ ] Реализовать интерфейс и понимать неявную реализацию
|
||||
- [ ] Написать generic-функцию с constraint'ами
|
||||
- [ ] Использовать `sync.WaitGroup` для ожидания горутин
|
||||
- [ ] Знать когда использовать mutex, а когда — каналы
|
||||
- [ ] Объяснить embedding vs наследование
|
||||
|
||||
---
|
||||
|
||||
## Этап 3: Стандартная библиотека (4-5 недель)
|
||||
|
||||
### Темы
|
||||
|
||||
| Тема | Описание |
|
||||
|------|----------|
|
||||
| **net/http** | HTTP-сервер, роутинг (Go 1.22+ pattern routing), middleware, `http.Client` |
|
||||
| **encoding/json** | Marshal/Unmarshal, теги структур, `json.RawMessage`, streaming decoder |
|
||||
| **io / io/fs** | Reader/Writer интерфейсы, `io.Copy`, `io.Pipe`, файловые системы |
|
||||
| **os / os/exec** | Работа с файлами, переменные окружения, запуск процессов |
|
||||
| **testing** | Unit-тесты, table-driven tests, бенчмарки, subtests, `testing.T` |
|
||||
| **log/slog** | Структурированное логирование (Go 1.21+) |
|
||||
| **database/sql** | Подключение к БД, prepared statements, транзакции, connection pool |
|
||||
| **html/template, text/template** | Шаблонизация |
|
||||
| **regexp** | Регулярные выражения |
|
||||
| **time** | Работа с датой/временем, таймеры, тикеры, `time.Format` |
|
||||
| **flag / os.Args** | Парсинг CLI-аргументов |
|
||||
| **crypto** | Хеширование, bcrypt, JWT-основы |
|
||||
| **embed** | Встраивание файлов в бинарник (`//go:embed`) |
|
||||
|
||||
### Ресурсы для этапа
|
||||
|
||||
- 📖 [Go Standard Library Documentation](https://pkg.go.dev/std) — полный список пакетов стандартной библиотеки
|
||||
- 📖 [Writing Web Applications (Go Wiki)](https://go.dev/doc/articles/wiki/) — официальный туториал по веб
|
||||
- 📖 [How to use the net/http package (Go Blog)](https://go.dev/blog/routing-enhancements) — улучшения роутинга в Go 1.22
|
||||
- 📖 [Using Go's testing Package](https://go.dev/doc/tutorial/add-a-test) — официальный туториал по тестам
|
||||
- 📖 [Structured Logging with slog (Go Blog)](https://go.dev/blog/slog) — про новый slog
|
||||
- 🎥 [Let's Go (Alex Edwards) — книга + примеры](https://lets-go.alexedwards.net/) — лучший ресурс по веб-разработке на Go
|
||||
- 📖 [Go Database/SQL Tutorial](https://go.dev/doc/database/) — работа с базами данных
|
||||
|
||||
### Практические задания
|
||||
|
||||
1. ✅ HTTP-сервер с CRUD API для заметок (хранение в памяти)
|
||||
2. ✅ Добавить к API middleware: логирование, recovery, CORS
|
||||
3. ✅ JSON-парсер конфигурации с валидацией
|
||||
4. ✅ Unit-тесты с table-driven подходом для всех API-эндпоинтов
|
||||
5. ✅ Бенчмарк сравнения разных подходов к конкатенации строк
|
||||
6. ✅ CLI-утилита с подкомандами (аналог `git`: add, commit, log)
|
||||
7. ✅ HTTP-клиент с retry-логикой, таймаутами и обработкой ошибок
|
||||
8. ✅ Подключить PostgreSQL через `database/sql` + миграции
|
||||
|
||||
### ✅ Чеклист: что должен уметь после этапа
|
||||
|
||||
- [ ] Создать HTTP API с роутингом на `net/http` (без фреймворков)
|
||||
- [ ] Написать middleware-цепочку
|
||||
- [ ] Сериализовать/десериализовать JSON со вложенными структурами
|
||||
- [ ] Писать table-driven тесты и бенчмарки
|
||||
- [ ] Использовать `slog` для структурированного логирования
|
||||
- [ ] Работать с `database/sql` (подключение, CRUD, транзакции)
|
||||
- [ ] Парсить CLI-флаги и аргументы
|
||||
- [ ] Понимать интерфейсы `io.Reader` / `io.Writer` и их композицию
|
||||
- [ ] Использовать `//go:embed` для встраивания статики
|
||||
|
||||
---
|
||||
|
||||
## Этап 4: Паттерны и архитектура (4-6 недель)
|
||||
|
||||
### Темы
|
||||
|
||||
| Тема | Описание |
|
||||
|------|----------|
|
||||
| **Структура проекта** | `/cmd`, `/internal`, `/pkg`, [Standard Go Project Layout](https://github.com/golang-standards/project-layout) |
|
||||
| **Clean Architecture** | Слои: domain, usecase, repository, delivery; зависимости внутрь |
|
||||
| **DDD в Go** | Entities, Value Objects, Aggregates, Repositories в контексте Go |
|
||||
| **SOLID в Go** | Как применять принципы в языке без классов и наследования |
|
||||
| **Dependency Injection** | Ручной DI через конструкторы (без контейнеров как в C#) |
|
||||
| **Repository Pattern** | Абстракция над хранилищем данных через интерфейсы |
|
||||
| **Паттерны ошибок** | Sentinel errors, typed errors, error wrapping стратегии |
|
||||
| **Configuration** | ENV, YAML/TOML конфиги, `viper`, 12-factor apps |
|
||||
| **Middleware/Decorator** | Обёртки для бизнес-логики и HTTP |
|
||||
| **Graceful Degradation** | Circuit breaker, retry, timeout patterns |
|
||||
|
||||
### Ресурсы для этапа
|
||||
|
||||
- 📖 [Standard Go Project Layout (GitHub)](https://github.com/golang-standards/project-layout) — стандартная структура проекта
|
||||
- 📖 [Go-микросервисы: Clean Architecture и DDD (Habr)](https://habr.com/ru/articles/911018/) — отличная статья на русском
|
||||
- 📖 [Go Clean Architecture Template (GitHub, 7.2k⭐)](https://github.com/evrone/go-clean-template) — шаблон от Evrone
|
||||
- 📖 [Wild Workouts — Go DDD Example (GitHub, 6k⭐)](https://github.com/ThreeDotsLabs/wild-workouts-go-ddd-example) — полный пример DDD + CQRS
|
||||
- 📖 [Todo API Microservice Example (GitHub)](https://github.com/MarioCarrion/todo-api-microservice-example) — DDD + Clean Architecture пример
|
||||
- 📖 [Practical Go: Real World Advice](https://dave.cheney.net/practical-go/presentations/qcon-china.html) — Dave Cheney
|
||||
- 📖 [Паттерны проектирования в Golang (Habr)](https://habr.com/ru/articles/875794/) — обзор основных паттернов
|
||||
- 🎥 [MarioCarrion YouTube](https://www.youtube.com/@MarioCarrion) — Go + DDD + Microservices видео
|
||||
- 📖 [Go Patterns (GitHub, 25k⭐)](https://github.com/tmrts/go-patterns) — коллекция паттернов
|
||||
|
||||
### Практические задания
|
||||
|
||||
1. ✅ Рефакторить API из этапа 3 в Clean Architecture
|
||||
2. ✅ Выделить domain-слой с Value Objects и бизнес-правилами
|
||||
3. ✅ Реализовать Repository Pattern с двумя реализациями (PostgreSQL + in-memory)
|
||||
4. ✅ Добавить DI через конструкторы (wire up в `main.go`)
|
||||
5. ✅ Написать конфигурацию через ENV + YAML с fallback
|
||||
6. ✅ Реализовать Circuit Breaker для внешнего API-вызова
|
||||
7. ✅ Написать integration-тесты с testcontainers
|
||||
|
||||
### ✅ Чеклист: что должен уметь после этапа
|
||||
|
||||
- [ ] Организовать Go-проект по Clean Architecture
|
||||
- [ ] Использовать интерфейсы для DI без фреймворков
|
||||
- [ ] Объяснить разницу между `/internal` и `/pkg`
|
||||
- [ ] Применять SOLID-принципы в Go-контексте
|
||||
- [ ] Проектировать слои приложения с чёткими границами
|
||||
- [ ] Работать с конфигурацией по 12-factor
|
||||
- [ ] Использовать DDD-подход для бизнес-логики
|
||||
- [ ] Писать интеграционные тесты
|
||||
|
||||
---
|
||||
|
||||
## Этап 5: Инструменты экосистемы (2-3 недели)
|
||||
|
||||
### Темы
|
||||
|
||||
| Тема | Описание |
|
||||
|------|----------|
|
||||
| **Docker** | Multi-stage Dockerfile для Go, scratch/distroless, оптимизация размера |
|
||||
| **CI/CD** | GitHub Actions для Go (lint, test, build, deploy) |
|
||||
| **golangci-lint** | Настройка `.golangci.yml`, популярные линтеры |
|
||||
| **Makefile** | Автоматизация сборки, тестов, миграций |
|
||||
| **Swagger/OpenAPI** | Генерация документации: `swaggo/swag`, `oapi-codegen` |
|
||||
| **gRPC + Protobuf** | Межсервисное взаимодействие, кодогенерация |
|
||||
| **Миграции БД** | `golang-migrate`, `goose` |
|
||||
| **ORM и query builders** | `sqlx`, `pgx`, `GORM`, `sqlc` |
|
||||
| **Мониторинг** | Prometheus метрики, health checks |
|
||||
| **Логирование** | `slog`, `zap`, `zerolog` — структурированные логгеры |
|
||||
|
||||
### Ресурсы для этапа
|
||||
|
||||
- 📖 [golangci-lint Documentation](https://golangci-lint.run/) — официальная документация
|
||||
- 📖 [GoLand 2025.1 — поддержка golangci-lint](https://blog.jetbrains.com/go/2025/04/16/goland-2025-1-is-out/) — JetBrains блог
|
||||
- 📖 [The Go Ecosystem in 2025 (JetBrains)](https://blog.jetbrains.com/go/2025/11/10/go-language-trends-ecosystem-2025/) — обзор трендов экосистемы
|
||||
- 📖 [Docker Official Go Guide](https://docs.docker.com/language/golang/) — Docker для Go
|
||||
- 📖 [sqlc Documentation](https://docs.sqlc.dev/) — type-safe SQL
|
||||
- 📖 [gRPC Go Quickstart](https://grpc.io/docs/languages/go/quickstart/) — начало работы с gRPC
|
||||
- 📖 [golang-migrate (GitHub)](https://github.com/golang-migrate/migrate) — миграции
|
||||
|
||||
### Практические задания
|
||||
|
||||
1. ✅ Написать multi-stage Dockerfile для Go-приложения (<20MB образ)
|
||||
2. ✅ Настроить GitHub Actions: lint → test → build → push Docker image
|
||||
3. ✅ Настроить `golangci-lint` с `.golangci.yml` (минимум 10 линтеров)
|
||||
4. ✅ Создать Makefile с командами: `build`, `test`, `lint`, `run`, `migrate`
|
||||
5. ✅ Добавить Swagger-документацию к REST API
|
||||
6. ✅ Написать gRPC-сервис с protobuf
|
||||
7. ✅ Добавить Prometheus-метрики к HTTP-серверу
|
||||
|
||||
### ✅ Чеклист: что должен уметь после этапа
|
||||
|
||||
- [ ] Собирать Go в Docker с multi-stage build
|
||||
- [ ] Настроить CI/CD pipeline для Go-проекта
|
||||
- [ ] Использовать golangci-lint и понимать основные линтеры
|
||||
- [ ] Генерировать API-документацию (Swagger)
|
||||
- [ ] Работать с gRPC + Protobuf
|
||||
- [ ] Управлять миграциями БД
|
||||
- [ ] Добавлять метрики и health checks
|
||||
- [ ] Писать `Makefile` для автоматизации
|
||||
|
||||
---
|
||||
|
||||
## Этап 6: Продвинутый уровень (4-6 недель)
|
||||
|
||||
### Темы
|
||||
|
||||
| Тема | Описание |
|
||||
|------|----------|
|
||||
| **Concurrency Patterns** | Pipeline, Fan-Out/Fan-In, Or-Done, Tee, Bridge |
|
||||
| **Performance** | Escape analysis, stack vs heap, memory alignment, reducing allocations |
|
||||
| **Profiling (pprof)** | CPU/Memory профилирование, `go tool pprof`, flame graphs |
|
||||
| **Tracing** | `go tool trace`, distributed tracing (OpenTelemetry) |
|
||||
| **Benchmarking** | `testing.B`, `benchstat`, профилирование горячего кода |
|
||||
| **Unsafe** | `unsafe.Pointer`, когда (не) использовать |
|
||||
| **CGO** | Интеграция с C-библиотеками, накладные расходы |
|
||||
| **Reflection** | `reflect` пакет, performance cost, альтернативы через generics |
|
||||
| **Garbage Collector** | Как работает GC в Go, тюнинг через `GOGC`, `GOMEMLIMIT` |
|
||||
| **Build tags и Cross-compilation** | Условная компиляция, сборка под разные платформы |
|
||||
| **Fuzzing** | Встроенное fuzz-тестирование (Go 1.18+) |
|
||||
|
||||
### Ресурсы для этапа
|
||||
|
||||
- 📖 [Go Concurrency Patterns: Pipelines (Go Blog)](https://go.dev/blog/pipelines) — официальный пост
|
||||
- 📖 [Profiling Go Programs (Go Blog)](https://go.dev/blog/pprof) — пособие по pprof
|
||||
- 📖 [Getting to Go: The Journey of Go's Garbage Collector (Go Blog)](https://go.dev/blog/ismmkeynote) — GC deep dive
|
||||
- 📖 [5 паттернов параллельного программирования в GO (Habr)](https://habr.com/ru/companies/otus/articles/722880/)
|
||||
- 📖 [7 Powerful Golang Concurrency Patterns](https://cristiancurteanu.com/7-powerful-golang-concurrency-patterns-that-will-transform-your-code-in-2025/) — concurrency patterns 2025
|
||||
- 📖 [Pprof Through Examples](https://betterprogramming.pub/pprof-through-examples-exploring-optimizations-in-go-444fa08cf15f)
|
||||
- 📖 [Go Fuzzing (Official)](https://go.dev/doc/security/fuzz/) — документация по фаззингу
|
||||
- 🎥 [Kavya Joshi — Understanding Channels (GopherCon)](https://www.youtube.com/watch?v=KBZlN0izeiY) — как устроены каналы внутри
|
||||
|
||||
### Практические задания
|
||||
|
||||
1. ✅ Профилировать реальное приложение с `pprof`, найти и устранить bottleneck
|
||||
2. ✅ Написать бенчмарки для критичного кода и оптимизировать (минимум 2x ускорение)
|
||||
3. ✅ Реализовать паттерн Pipeline с graceful shutdown
|
||||
4. ✅ Написать fuzz-тесты для парсера/валидатора
|
||||
5. ✅ Реализовать свой connection pool с ограничением конкурентности
|
||||
6. ✅ Собрать приложение под 3+ платформы через cross-compilation
|
||||
7. ✅ Добавить OpenTelemetry tracing к микросервису
|
||||
|
||||
### ✅ Чеклист: что должен уметь после этапа
|
||||
|
||||
- [ ] Профилировать CPU и память через pprof
|
||||
- [ ] Оптимизировать код на основе данных бенчмарков
|
||||
- [ ] Реализовать продвинутые concurrency patterns
|
||||
- [ ] Настроить distributed tracing
|
||||
- [ ] Понимать как работает GC и влиять на его поведение
|
||||
- [ ] Использовать fuzz-тестирование
|
||||
- [ ] Cross-компилировать Go-приложения
|
||||
- [ ] Знать когда (не) использовать unsafe и reflection
|
||||
|
||||
---
|
||||
|
||||
## 🛠 Пет-проекты
|
||||
|
||||
### Проект 1: CLI-утилита — `gowatch` (File Watcher)
|
||||
|
||||
> **Уровень:** Начальный → Средний
|
||||
> **Когда делать:** После этапа 1-2
|
||||
> **Срок:** 1-2 недели
|
||||
|
||||
**Описание:** Утилита, которая отслеживает изменения файлов в директории и выполняет указанные команды. Аналог `nodemon` / `entr`.
|
||||
|
||||
**Функционал:**
|
||||
- Рекурсивный watch по файловой маске (`*.go`, `*.yaml`)
|
||||
- Дебаунс повторных событий
|
||||
- Выполнение произвольных команд при изменении
|
||||
- Конфигурация через YAML или CLI-флаги
|
||||
- Graceful restart отслеживаемого процесса
|
||||
|
||||
**Стек:** Go stdlib, `fsnotify`, `cobra` (CLI), `viper` (конфиг)
|
||||
|
||||
**Аналоги для вдохновения:**
|
||||
- [air (GitHub, 18k⭐)](https://github.com/air-verse/air) — live reload для Go
|
||||
- [watchexec](https://github.com/watchexec/watchexec) — на Rust, но отличный UX
|
||||
- [entr](https://eradman.com/entrproject/) — классика Unix
|
||||
|
||||
**Чему научишься:** Работа с файловой системой, горутины, каналы, CLI-парсинг, конфигурация.
|
||||
|
||||
---
|
||||
|
||||
### Проект 2: REST API — Сервис управления задачами (Task Manager)
|
||||
|
||||
> **Уровень:** Средний
|
||||
> **Когда делать:** После этапа 3-4
|
||||
> **Срок:** 2-3 недели
|
||||
|
||||
**Описание:** Полноценный REST API для управления задачами с аутентификацией, ролями и пагинацией. Типичный backend, аналог того, что делаешь на C#/ASP.NET.
|
||||
|
||||
**Функционал:**
|
||||
- CRUD задач с проектами и тегами
|
||||
- JWT-аутентификация (регистрация/логин)
|
||||
- Ролевая модель (admin/user)
|
||||
- Пагинация, сортировка, фильтрация
|
||||
- Swagger-документация
|
||||
- Docker Compose (app + PostgreSQL + Redis)
|
||||
- Unit + Integration тесты
|
||||
|
||||
**Стек:** `net/http` (Go 1.22+) или `chi`, PostgreSQL, `pgx`/`sqlc`, `golang-migrate`, Redis, JWT, Docker
|
||||
|
||||
**Аналоги для вдохновения:**
|
||||
- [go-clean-template (Evrone)](https://github.com/evrone/go-clean-template) — чистый шаблон
|
||||
- [Todolist API (MarioCarrion)](https://github.com/MarioCarrion/todo-api-microservice-example) — DDD пример
|
||||
- [realworld-go](https://github.com/gothinkster/realworld) — RealWorld spec implementation
|
||||
|
||||
**Чему научишься:** Clean Architecture, работа с БД, аутентификация, middleware, тестирование, Docker.
|
||||
|
||||
---
|
||||
|
||||
### Проект 3: Telegram-бот — Персональный ассистент
|
||||
|
||||
> **Уровень:** Средний
|
||||
> **Когда делать:** После этапа 3
|
||||
> **Срок:** 1-2 недели
|
||||
|
||||
**Описание:** Telegram-бот с полезным функционалом: заметки, напоминания, интеграция с API (погода, курсы валют).
|
||||
|
||||
**Функционал:**
|
||||
- Сохранение заметок с категориями
|
||||
- Напоминания (cron-based)
|
||||
- Получение курса валют / погоды через внешние API
|
||||
- Inline-кнопки и callback'и
|
||||
- Persistent storage (SQLite/PostgreSQL)
|
||||
- Graceful shutdown
|
||||
|
||||
**Стек:** [telebot](https://github.com/tucnak/telebot) или [telegram-bot-api](https://github.com/go-telegram-bot-api/telegram-bot-api), `cron`, `sqlite3`/`pgx`
|
||||
|
||||
**Аналоги для вдохновения:**
|
||||
- [go-telegram-bot-api (GitHub)](https://github.com/go-telegram-bot-api/telegram-bot-api) — популярная библиотека
|
||||
- [telebot (GitHub)](https://github.com/tucnak/telebot) — ещё одна популярная либа
|
||||
|
||||
**Чему научишься:** Работа с внешними API, webhook/polling, state management, scheduled tasks.
|
||||
|
||||
---
|
||||
|
||||
### Проект 4: Микросервис с очередями — Система уведомлений
|
||||
|
||||
> **Уровень:** Средний → Продвинутый
|
||||
> **Когда делать:** После этапа 4-5
|
||||
> **Срок:** 3-4 недели
|
||||
|
||||
**Описание:** Система из нескольких микросервисов, общающихся через очереди сообщений. Producer принимает запросы на уведомления, consumer'ы отправляют через разные каналы (email, Telegram, webhook).
|
||||
|
||||
**Функционал:**
|
||||
- API-сервис (producer): приём запросов на уведомления
|
||||
- Worker-сервисы (consumers): email, Telegram, webhook
|
||||
- Retry-логика и Dead Letter Queue
|
||||
- gRPC для синхронной коммуникации между сервисами
|
||||
- Distributed tracing (OpenTelemetry)
|
||||
- Docker Compose для всей инфраструктуры
|
||||
- Prometheus + Grafana для мониторинга
|
||||
|
||||
**Стек:** RabbitMQ или Kafka, gRPC, Protobuf, PostgreSQL, Docker Compose, OpenTelemetry, Prometheus
|
||||
|
||||
**Аналоги для вдохновения:**
|
||||
- [shop-golang-microservices (GitHub)](https://github.com/meysamhadeli/shop-golang-microservices) — микросервисы на Go + RabbitMQ + gRPC
|
||||
- [Wild Workouts (ThreeDotsLabs)](https://github.com/ThreeDotsLabs/wild-workouts-go-ddd-example) — DDD + CQRS
|
||||
- [Watermill (ThreeDotsLabs)](https://github.com/ThreeDotsLabs/watermill) — библиотека для event-driven
|
||||
|
||||
**Чему научишься:** Микросервисная архитектура, message queues, gRPC, observability, distributed systems.
|
||||
|
||||
---
|
||||
|
||||
### Проект 5: Open-Source инструмент — `goscan` (Code Quality Scanner)
|
||||
|
||||
> **Уровень:** Продвинутый
|
||||
> **Когда делать:** После этапа 6
|
||||
> **Срок:** 4-6 недель
|
||||
|
||||
**Описание:** CLI-инструмент для анализа Go-кода: поиск антипаттернов, проверка архитектурных правил, генерация отчётов. Альтернатива: свой linter, генератор кода, или инструмент для DevOps.
|
||||
|
||||
**Варианты проектов:**
|
||||
1. **Code scanner** — AST-анализатор для поиска антипаттернов
|
||||
2. **API mock generator** — генерация моков из OpenAPI-спеки
|
||||
3. **DB schema diff tool** — сравнение схем БД и генерация миграций
|
||||
4. **Log aggregator** — сборщик логов из нескольких сервисов с поиском
|
||||
|
||||
**Функционал (для code scanner):**
|
||||
- Парсинг Go AST (`go/ast`, `go/parser`)
|
||||
- Кастомные правила через YAML-конфиг
|
||||
- Отчёты в разных форматах (text, JSON, HTML)
|
||||
- CI-интеграция (exit code, GitHub annotations)
|
||||
- Публикация на GitHub с README, CI, GoDoc
|
||||
|
||||
**Стек:** `go/ast`, `go/parser`, `go/types`, `cobra`, CI/CD
|
||||
|
||||
**Аналоги для вдохновения:**
|
||||
- [golangci-lint (GitHub, 15k⭐)](https://github.com/golangci/golangci-lint) — мега-линтер
|
||||
- [staticcheck (GitHub)](https://github.com/dominikh/go-tools) — статический анализатор
|
||||
- [go-critic (GitHub)](https://github.com/go-critic/go-critic) — кастомные проверки
|
||||
|
||||
**Чему научишься:** Go AST, кодогенерация, open-source workflow, документация, CI/CD, публикация.
|
||||
|
||||
---
|
||||
|
||||
## 📚 Ресурсы
|
||||
|
||||
### Книги
|
||||
|
||||
#### Обязательные (Must Read)
|
||||
|
||||
| Книга | Автор | Описание |
|
||||
|-------|-------|----------|
|
||||
| **The Go Programming Language** | Donovan & Kernighan | "Библия Go" — фундаментальная книга, написанная соавтором «K&R C». Покрывает всё от основ до продвинутых тем |
|
||||
| **Learning Go, 2nd Ed.** | Jon Bodner (O'Reilly, 2024) | Идеальна для перехода с другого языка. Покрывает generics, slog, новые фичи Go 1.21+ |
|
||||
| **100 Go Mistakes and How to Avoid Them** | Teiva Harsanyi (Manning, 2022) | 100 реальных ошибок Go-разработчиков с объяснениями. Незаменима для роста |
|
||||
| **Concurrency in Go** | Katherine Cox-Buday (O'Reilly) | Глубокое погружение в конкурентность: горутины, каналы, паттерны |
|
||||
|
||||
#### Рекомендуемые
|
||||
|
||||
| Книга | Автор | Описание |
|
||||
|-------|-------|----------|
|
||||
| **Go: идиомы и паттерны проектирования** | Jon Bodner (Питер, перевод) | Русское издание с паттернами Go |
|
||||
| **Domain-Driven Design with Golang** | Matt Boyle (Packt, 2022) | DDD специфично для Go |
|
||||
| **Let's Go / Let's Go Further** | Alex Edwards | Лучшие книги по веб-разработке на Go (практичные, с реальным проектом) |
|
||||
| **Mastering Go, 4th Ed.** | Mihalis Tsoukalos (Packt, 2024) | Продвинутые темы: networking, системное программирование, безопасность |
|
||||
| **The Power of Go: Tools** | John Arundel (Bitfield, 2024) | Написание CLI-утилит на Go |
|
||||
| **Go at Scale: Patterns for Professional Development** | 2025 | Паттерны для production Go |
|
||||
| **Cloud Native Go** | Matthew A. Titmus (O'Reilly) | Облачные приложения на Go |
|
||||
| **Distributed Services with Go** | Travis Jeffery (Pragmatic Bookshelf) | Распределённые системы на Go |
|
||||
|
||||
### Онлайн-курсы
|
||||
|
||||
#### Бесплатные
|
||||
|
||||
| Курс | Платформа | Описание |
|
||||
|------|-----------|----------|
|
||||
| [A Tour of Go](https://go.dev/tour/) | go.dev | Официальный интерактивный тур — обязательный стартовый ресурс |
|
||||
| [Learn Go with Tests](https://quii.gitbook.io/learn-go-with-tests) | GitBook | TDD-подход к изучению Go. Отлично для практиков |
|
||||
| [Go by Example](https://gobyexample.com/) | gobyexample.com | Краткие примеры на каждую тему |
|
||||
| [Exercism Go Track](https://exercism.org/tracks/go) | exercism.org | 140+ упражнений с менторингом от сообщества |
|
||||
| [Gophercises](https://gophercises.com/) | gophercises.com | Бесплатные упражнения с видео-решениями от Jon Calhoun |
|
||||
| [Go Recipes (GitHub)](https://github.com/nikolaydubina/go-recipes) | GitHub | Огромная подборка рецептов и инструментов |
|
||||
|
||||
#### Платные
|
||||
|
||||
| Курс | Платформа | Описание |
|
||||
|------|-----------|----------|
|
||||
| [Learn Go (Boot.dev)](https://www.boot.dev/courses/learn-golang) | boot.dev | Интерактивный курс с проектами, один из лучших в 2025 |
|
||||
| [Go: The Complete Developer's Guide](https://www.udemy.com/course/go-the-complete-developers-guide/) | Udemy | Stephen Grider — хорошо структурированный курс |
|
||||
| [Web Development w/ Go](https://www.udemy.com/course/go-programming-language/) | Udemy | Todd McLeod — легенда Go-обучения |
|
||||
| [Ultimate Go Programming](https://www.ardanlabs.com/training/ultimate-go/) | Ardan Labs | William Kennedy — самый глубокий курс. Для серьёзного изучения |
|
||||
| [Let's Go / Let's Go Further](https://lets-go.alexedwards.net/) | alexedwards.net | Практический курс веб-разработки (книга + код) |
|
||||
| [Backend-разработчик на Go (Skillfactory)](https://skillfactory.ru/) | Skillfactory | Расширенный курс на русском |
|
||||
|
||||
### YouTube-каналы
|
||||
|
||||
| Канал | Описание |
|
||||
|-------|----------|
|
||||
| [The Go Programming Language (@golang)](https://www.youtube.com/@golang) | Официальный канал Go — доклады с GopherCon, обновления языка |
|
||||
| [Anthony GG](https://www.youtube.com/@anthonygg_) | Практичные туториалы, микросервисы, архитектура на Go |
|
||||
| [NicJackson](https://www.youtube.com/@nicjackson) | Nic Jackson (HashiCorp) — Go + DevOps, микросервисы |
|
||||
| [MarioCarrion](https://www.youtube.com/@MarioCarrion) | Go + DDD + Clean Architecture, production-проекты |
|
||||
| [Melkey](https://www.youtube.com/@MelkeyDev) | Go-проекты, системный дизайн |
|
||||
| [justforfunc](https://www.youtube.com/@justforfunc) | Francesc Campoy (ex-Google) — глубокие разборы Go |
|
||||
| [TechWorld with Nana](https://www.youtube.com/@TechWorldwithNana) | Хороший стартовый курс по Go |
|
||||
| [Николай Тузов (Skillbox)](https://www.youtube.com/@nikolay_tuzov) | Go на русском языке |
|
||||
|
||||
### Telegram-каналы и сообщества
|
||||
|
||||
| Канал/Чат | Ссылка | Описание |
|
||||
|-----------|--------|----------|
|
||||
| **Библиотека Go-разработчика** | [@goproglib](https://t.me/goproglib) | 23K+ подписчиков, статьи, новости, вакансии |
|
||||
| **4gophers** | [@gophernews](https://t.me/gophernews) | Новости Go-экосистемы |
|
||||
| **Golang — pair programming** | [@golang_pair](https://t.me/golang_pair) | Парное программирование на Go |
|
||||
| **Gopher Club** | Сообщество Go разработчиков | Обсуждение Go и разработки |
|
||||
| **Golang Go** | Сообщество СНГ Go разработчиков | Вопросы и обсуждения |
|
||||
| **Go (Pair programming)** | — | Чат для совместного кодинга |
|
||||
| **r/golang (Reddit)** | [reddit.com/r/golang](https://www.reddit.com/r/golang/) | Крупнейшее англоязычное сообщество |
|
||||
| **Gophers Slack** | [gophers.slack.com](https://gophers.slack.com) | Международный Slack Go-разработчиков |
|
||||
|
||||
### GitHub-репозитории для изучения
|
||||
|
||||
> Хорошо написанный Go-код, на котором стоит учиться:
|
||||
|
||||
| Репозиторий | Описание |
|
||||
|-------------|----------|
|
||||
| [avelino/awesome-go](https://github.com/avelino/awesome-go) | 🏆 Каталог всех Go-библиотек и фреймворков (140k⭐) |
|
||||
| [golang/go](https://github.com/golang/go) | Исходный код самого Go — эталон стиля |
|
||||
| [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes) | Крупнейший Go-проект. Можно изучать архитектуру |
|
||||
| [docker/cli](https://github.com/docker/cli) | Docker CLI на Go — отличный пример CLI-утилиты |
|
||||
| [hashicorp/terraform](https://github.com/hashicorp/terraform) | Terraform — пример enterprise Go |
|
||||
| [prometheus/prometheus](https://github.com/prometheus/prometheus) | Prometheus — мониторинг, хорошая архитектура |
|
||||
| [go-chi/chi](https://github.com/go-chi/chi) | Лёгкий HTTP-роутер — чистый идиоматичный код |
|
||||
| [uber-go/zap](https://github.com/uber-go/zap) | Высокопроизводительный логгер от Uber |
|
||||
| [evrone/go-clean-template](https://github.com/evrone/go-clean-template) | Шаблон Clean Architecture для Go (7.2k⭐) |
|
||||
| [tmrts/go-patterns](https://github.com/tmrts/go-patterns) | Паттерны проектирования в Go (25k⭐) |
|
||||
| [ThreeDotsLabs/wild-workouts-go-ddd-example](https://github.com/ThreeDotsLabs/wild-workouts-go-ddd-example) | DDD + CQRS + Clean Architecture пример (6k⭐) |
|
||||
| [nikolaydubina/go-recipes](https://github.com/nikolaydubina/go-recipes) | Рецепты и полезные трюки Go (4k⭐) |
|
||||
| [a8m/golang-cheat-sheet](https://github.com/a8m/golang-cheat-sheet) | Шпаргалка по синтаксису Go |
|
||||
|
||||
### Подкасты
|
||||
|
||||
| Подкаст | Описание |
|
||||
|---------|----------|
|
||||
| [Go Time (Changelog)](https://changelog.com/gotime) | Главный подкаст о Go — архив из 300+ эпизодов. Финальный выпуск вышел в 2024, но архив бесценен |
|
||||
| [Cup o' Go](https://cupogo.dev/) | Еженедельные новости Go за ~15 минут. Актуальный и лёгкий формат |
|
||||
| [GolangShow](https://golangshow.com/) | Подкаст на английском и русском (от русскоязычных авторов) |
|
||||
| [Go Gab](https://www.gogab.io/) | Короткие эпизоды (~3 мин) о Go |
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Инструменты разработчика
|
||||
|
||||
### IDE / Редактор
|
||||
|
||||
| Инструмент | Описание | Ссылка |
|
||||
|------------|----------|--------|
|
||||
| **GoLand** (JetBrains) | Лучшая IDE для Go. Рефакторинг, отладка, поддержка golangci-lint (с 2025.1). Платная, но есть бесплатная Community Edition | [jetbrains.com/go](https://www.jetbrains.com/go/) |
|
||||
| **VS Code + Go Extension** | Бесплатная альтернатива. Extension от Go Team: gopls, delve, golangci-lint | [VS Code Go](https://marketplace.visualstudio.com/items?itemName=golang.Go) |
|
||||
| **Neovim + gopls** | Для любителей Vim. `gopls` как LSP, `nvim-lspconfig` | [gopls](https://pkg.go.dev/golang.org/x/tools/gopls) |
|
||||
|
||||
**Рекомендация для тебя:** GoLand (ты привык к JetBrains с Rider/ReSharper в C#-мире) или VS Code (если хочешь универсальность).
|
||||
|
||||
**Обязательные плагины VS Code:**
|
||||
- `golang.Go` — основной плагин
|
||||
- `EditorConfig` — единый стиль кода
|
||||
- `REST Client` — тестирование API
|
||||
- `Docker` — работа с контейнерами
|
||||
- `GitLens` — улучшенный Git
|
||||
|
||||
### Линтеры
|
||||
|
||||
| Инструмент | Описание |
|
||||
|------------|----------|
|
||||
| **[golangci-lint](https://golangci-lint.run/)** | 🏆 Мета-линтер — агрегирует 100+ линтеров в одном инструменте. Обязателен |
|
||||
| **[staticcheck](https://staticcheck.dev/)** | Статический анализатор, входит в golangci-lint |
|
||||
| **[gosec](https://github.com/securego/gosec)** | Проверка безопасности кода |
|
||||
| **[errcheck](https://github.com/kisielk/errcheck)** | Проверка необработанных ошибок |
|
||||
| **[govet](https://pkg.go.dev/cmd/vet)** | Встроенный в Go, ищет подозрительные конструкции |
|
||||
| **[gofumpt](https://github.com/mvdan/gofumpt)** | Строгая версия `gofmt` |
|
||||
| **[revive](https://github.com/mgechev/revive)** | Быстрый, настраиваемый линтер |
|
||||
|
||||
**Минимальный `.golangci.yml`:**
|
||||
```yaml
|
||||
linters:
|
||||
enable:
|
||||
- errcheck
|
||||
- gosimple
|
||||
- govet
|
||||
- ineffassign
|
||||
- staticcheck
|
||||
- unused
|
||||
- gosec
|
||||
- gofumpt
|
||||
- revive
|
||||
- gocritic
|
||||
- exhaustive
|
||||
- prealloc
|
||||
- misspell
|
||||
|
||||
linters-settings:
|
||||
gocritic:
|
||||
enabled-tags:
|
||||
- diagnostic
|
||||
- style
|
||||
- performance
|
||||
```
|
||||
|
||||
### Профилирование
|
||||
|
||||
| Инструмент | Описание |
|
||||
|------------|----------|
|
||||
| **[pprof](https://pkg.go.dev/net/http/pprof)** | Встроенный профилировщик Go: CPU, memory, goroutines, block |
|
||||
| **`go tool pprof`** | CLI для анализа pprof-данных |
|
||||
| **`go tool trace`** | Трассировка выполнения программы — визуализация горутин, GC |
|
||||
| **[Pyroscope](https://pyroscope.io/)** | Continuous profiling — профилирование в production |
|
||||
| **[fgprof](https://github.com/felixge/fgprof)** | Full goroutine profiling (wall-clock time) |
|
||||
|
||||
**Быстрый старт pprof:**
|
||||
```go
|
||||
import _ "net/http/pprof"
|
||||
|
||||
go func() {
|
||||
log.Println(http.ListenAndServe("localhost:6060", nil))
|
||||
}()
|
||||
```
|
||||
```bash
|
||||
go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30
|
||||
go tool pprof http://localhost:6060/debug/pprof/heap
|
||||
```
|
||||
|
||||
### Тестирование
|
||||
|
||||
| Инструмент | Описание |
|
||||
|------------|----------|
|
||||
| **[testing](https://pkg.go.dev/testing)** | Встроенный пакет тестирования — `go test ./...` |
|
||||
| **[testify](https://github.com/stretchr/testify)** | Assertions, mocks, suites — самая популярная тест-библиотека |
|
||||
| **[gomock](https://github.com/uber-go/mock)** | Генерация моков из интерфейсов (uber-go/mock — актуальный форк) |
|
||||
| **[testcontainers-go](https://github.com/testcontainers/testcontainers-go)** | Docker-контейнеры для интеграционных тестов |
|
||||
| **[go-cmp](https://github.com/google/go-cmp)** | Умное сравнение значений от Google |
|
||||
| **[httptest](https://pkg.go.dev/net/http/httptest)** | Встроенный пакет для тестирования HTTP |
|
||||
| **Fuzzing** | `go test -fuzz=FuzzXxx` — встроенное fuzz-тестирование (Go 1.18+) |
|
||||
| **[gotestsum](https://github.com/gotestyourself/gotestsum)** | Красивый вывод тестов |
|
||||
|
||||
### Отладка
|
||||
|
||||
| Инструмент | Описание |
|
||||
|------------|----------|
|
||||
| **[Delve (dlv)](https://github.com/go-delve/delve)** | Основной отладчик Go. Breakpoints, step, goroutine inspection |
|
||||
| **GoLand Debugger** | Встроен в GoLand, использует Delve |
|
||||
| **VS Code Go Debugger** | Также на базе Delve, настройка через `launch.json` |
|
||||
|
||||
**Команды Delve:**
|
||||
```bash
|
||||
dlv debug ./cmd/server # запуск с отладкой
|
||||
dlv test ./pkg/service # отладка тестов
|
||||
dlv attach <pid> # подключение к процессу
|
||||
```
|
||||
|
||||
### Управление зависимостями
|
||||
|
||||
```bash
|
||||
go mod init github.com/user/project # инициализация модуля
|
||||
go mod tidy # очистка зависимостей
|
||||
go mod vendor # вендоринг
|
||||
go mod graph # граф зависимостей
|
||||
go get github.com/pkg@latest # добавить/обновить зависимость
|
||||
go work init # Go workspaces (мульти-модуль)
|
||||
```
|
||||
|
||||
### Полезные CLI-утилиты
|
||||
|
||||
| Утилита | Описание |
|
||||
|---------|----------|
|
||||
| `go generate` | Кодогенерация через `//go:generate` комментарии |
|
||||
| `go vet` | Статический анализ |
|
||||
| `gofmt` / `goimports` | Форматирование кода |
|
||||
| `gofumpt` | Строгое форматирование |
|
||||
| `godoc` | Локальная документация |
|
||||
| [gore](https://github.com/x-motemen/gore) | Go REPL для экспериментов |
|
||||
| [gojq](https://github.com/itchyny/gojq) | jq, написанный на Go |
|
||||
| [goreleaser](https://goreleaser.com/) | Автоматизация релизов Go-приложений |
|
||||
| [ko](https://ko.build/) | Сборка Go в OCI-образы без Dockerfile |
|
||||
| [buf](https://buf.build/) | Линтер и генератор для Protobuf |
|
||||
| [task](https://taskfile.dev/) | Альтернатива Make на Go |
|
||||
| [air](https://github.com/air-verse/air) | Live reload для Go-разработки |
|
||||
|
||||
---
|
||||
|
||||
## 📰 Подборка статей (топ-25+)
|
||||
|
||||
### Официальный блог Go (go.dev/blog)
|
||||
|
||||
1. [Effective Go](https://go.dev/doc/effective_go) — основа основ, обязательно прочитать
|
||||
2. [Go Concurrency Patterns](https://go.dev/blog/pipelines) — паттерны конкурентности (pipelines)
|
||||
3. [Advanced Go Concurrency Patterns](https://go.dev/blog/io2013-talk-concurrency) — продвинутые паттерны
|
||||
4. [Share Memory by Communicating](https://go.dev/blog/codelab-share) — философия Go concurrency
|
||||
5. [Error Handling and Go](https://go.dev/blog/error-handling-and-go) — обработка ошибок
|
||||
6. [Working with Errors in Go 1.13](https://go.dev/blog/go1.13-errors) — errors.Is, errors.As, wrapping
|
||||
7. [An Introduction to Generics](https://go.dev/blog/intro-generics) — введение в дженерики
|
||||
8. [Structured Logging with slog](https://go.dev/blog/slog) — новый пакет логирования
|
||||
9. [Routing Enhancements in Go 1.22](https://go.dev/blog/routing-enhancements) — улучшения net/http
|
||||
10. [Profiling Go Programs](https://go.dev/blog/pprof) — профилирование
|
||||
11. [Getting to Go: Journey of Go's Garbage Collector](https://go.dev/blog/ismmkeynote) — GC deep dive
|
||||
12. [Go at Google: Language Design](https://go.dev/talks/2012/splash.article) — философия проектирования Go (Rob Pike)
|
||||
|
||||
### Лучшие статьи на Habr
|
||||
|
||||
13. [Паттерны проектирования в Golang](https://habr.com/ru/articles/875794/) — обзор основных паттернов (2025)
|
||||
14. [Паттерны многопоточности в Go](https://habr.com/ru/articles/852556/) — concurrency patterns
|
||||
15. [Go-микросервисы: Clean Architecture и DDD](https://habr.com/ru/articles/911018/) — стандартизация архитектуры (2025)
|
||||
16. [Обработка ошибок в Go](https://habr.com/ru/articles/916904/) — полный гайд (2025)
|
||||
17. [Ошибки в Go: Обработка, Обёртки и Лучшие Практики](https://habr.com/ru/articles/904712/) — практичный подход (2025)
|
||||
18. [5 паттернов параллельного программирования в GO](https://habr.com/ru/companies/otus/articles/722880/) — OTUS
|
||||
19. [5 паттернов проектирования в Go на примере котиков](https://habr.com/ru/companies/otus/articles/864748/) — Singleton, Factory, etc. (2024)
|
||||
20. [Книга «Go: идиомы и паттерны проектирования»](https://habr.com/ru/companies/piter/articles/672402/) — обзор от Питер
|
||||
|
||||
### Англоязычные must-read статьи
|
||||
|
||||
21. [The "10x" Commandments of Highly Effective Go (JetBrains)](https://blog.jetbrains.com/go/2025/10/16/the-10x-commandments-of-highly-effective-go/) — 10 заповедей Go (2025)
|
||||
22. [The Go Ecosystem in 2025 (JetBrains)](https://blog.jetbrains.com/go/2025/11/10/go-language-trends-ecosystem-2025/) — тренды экосистемы
|
||||
23. [Practical Go: Real World Advice (Dave Cheney)](https://dave.cheney.net/practical-go/presentations/qcon-china.html) — практические советы
|
||||
24. [Go Coding Official Standards and Best Practices](https://dev.to/leapcell/go-coding-official-standards-and-best-practices-284k) — стандарты и best practices
|
||||
25. [What are the best Go books in 2026? (Bitfield Consulting)](https://bitfieldconsulting.com/posts/best-go-books) — обзор книг
|
||||
26. [Pprof Through Examples](https://betterprogramming.pub/pprof-through-examples-exploring-optimizations-in-go-444fa08cf15f) — профилирование на примерах
|
||||
27. [Go essentials reading list (GitHub)](https://github.com/mgaffney/go-essentials) — essential reading list
|
||||
28. [Awesome Go Articles (GitHub)](https://github.com/khigor777/awesome-go-articles) — курированный список статей
|
||||
|
||||
---
|
||||
|
||||
## 🗓 Сводная таблица прогресса
|
||||
|
||||
| Этап | Длительность | Статус |
|
||||
|------|-------------|--------|
|
||||
| 1. Основы | 3-4 недели | ⬜ |
|
||||
| 2. Продвинутые концепции | 4-5 недель | ⬜ |
|
||||
| 3. Стандартная библиотека | 4-5 недель | ⬜ |
|
||||
| 4. Паттерны и архитектура | 4-6 недель | ⬜ |
|
||||
| 5. Инструменты экосистемы | 2-3 недели | ⬜ |
|
||||
| 6. Продвинутый уровень | 4-6 недель | ⬜ |
|
||||
| **Пет-проект 1:** CLI-утилита | 1-2 недели | ⬜ |
|
||||
| **Пет-проект 2:** REST API | 2-3 недели | ⬜ |
|
||||
| **Пет-проект 3:** Telegram-бот | 1-2 недели | ⬜ |
|
||||
| **Пет-проект 4:** Микросервис | 3-4 недели | ⬜ |
|
||||
| **Пет-проект 5:** Open-source инструмент | 4-6 недель | ⬜ |
|
||||
|
||||
---
|
||||
|
||||
## 💡 Советы для перехода с C#/.NET на Go
|
||||
|
||||
1. **Нет классов и наследования** → используй структуры + интерфейсы + embedding. Go — про композицию.
|
||||
2. **Нет исключений** → `if err != nil { return err }` — это нормально и идиоматично. Привыкни.
|
||||
3. **Нет DI-контейнера** → всё через конструкторы. `func NewService(repo Repository) *Service`. Просто и прозрачно.
|
||||
4. **Нет LINQ** → для простых операций — `for` loops. Для сложных — generics (`Map`, `Filter`).
|
||||
5. **Нет async/await** → горутины + каналы. Модель CSP вместо Task-based.
|
||||
6. **Нет nuget** → `go mod` — проще и быстрее.
|
||||
7. **Пакеты вместо namespaces** → visibility через регистр букв (заглавная = public).
|
||||
8. **Минимализм** → Go-сообщество предпочитает stdlib и маленькие библиотеки вместо фреймворков.
|
||||
9. **gofmt** → один стиль для всех. Никаких споров о форматировании.
|
||||
10. **Быстрая компиляция** → Go компилируется за секунды. После C# это будет приятным сюрпризом.
|
||||
|
||||
---
|
||||
|
||||
> 📌 **Последнее обновление:** Февраль 2026
|
||||
> 📌 **Файл:** `/home/daniil/.openclaw/workspace/golang/roadmap.md`
|
||||
@@ -1,298 +0,0 @@
|
||||
# Анализ конкурентов для Pulse App
|
||||
|
||||
**Дата:** 15 февраля 2026
|
||||
**Цель:** Понять рынок habit tracker приложений и сформировать стратегию развития Pulse
|
||||
|
||||
---
|
||||
|
||||
## 📊 1. Сравнительная таблица
|
||||
|
||||
### Базовая информация
|
||||
|
||||
| Приложение | Платформы | Рейтинг | Загрузки | Целевая аудитория |
|
||||
|------------|-----------|---------|----------|-------------------|
|
||||
| **Habitify** | iOS, Android, Web, macOS, watchOS | 4.7★ | 3M+ | Продуктивные профессионалы, кросс-платформенные пользователи |
|
||||
| **Atoms** | iOS only | 4.5★ | 500K+ | Фанаты книги "Atomic Habits", premium сегмент |
|
||||
| **Streaks** | iOS, macOS, watchOS, Vision Pro | 4.8★ | 2M+ | Apple ecosystem пользователи, минималисты |
|
||||
| **Habitica** | iOS, Android, Web | 4.3★ | 10M+ | Геймеры, молодёжь, любители RPG |
|
||||
| **Loop Habit Tracker** | Android | 4.7★ | 5M+ | Privacy-focused, open-source энтузиасты |
|
||||
| **Fabulous** | iOS, Android | 4.6★ | 10M+ | Self-improvement seekers, wellness-focused |
|
||||
| **Done** | iOS only | 4.6★ | 500K+ | Простые пользователи, фокус на гибкости |
|
||||
| **Productive** | iOS only | 4.7★ | 3M+ | Пользователи iOS ищущие guided experience |
|
||||
| **Way of Life** | iOS, Android | 4.6★ | 1M+ | Data-driven пользователи, аналитики |
|
||||
| **HabitNow** | Android only | 4.6★ | 5M+ | Android пользователи, budget-conscious |
|
||||
|
||||
### Модель монетизации
|
||||
|
||||
| Приложение | Free план | Месяц | Год | Lifetime | Trial |
|
||||
|------------|-----------|-------|-----|----------|-------|
|
||||
| **Habitify** | 15 check-ins/нед | $4.99 | $34.99 | $64.99 | 7 дней |
|
||||
| **Atoms** | 1-3 привычки | $10 | $70 | — | 28 дней |
|
||||
| **Streaks** | — | — | — | $4.99 (one-time) | — |
|
||||
| **Habitica** | Полный функционал | $4.99 | $47.99 | — | — |
|
||||
| **Loop** | Полный (open-source) | Бесплатно | — | — | — |
|
||||
| **Fabulous** | Ограниченные journeys | $3.33 | $39.99 | — | 7 дней |
|
||||
| **Done** | Ограничено привычек | — | — | $24.99-$99.99* | — |
|
||||
| **Productive** | Ограничено | $6.99 | $34.99 | — | 7 дней |
|
||||
| **Way of Life** | 3 привычки | $4.99 | ~$30 | $49.99 | — |
|
||||
| **HabitNow** | 7 привычек | — | — | $11.99 | — |
|
||||
|
||||
*Done часто со скидками до 95%
|
||||
|
||||
### Ключевые функции
|
||||
|
||||
| Приложение | Daily | Weekly | Custom | Напоминания | Статистика | Виджеты | Watch | Health интеграция | Gamification | Социальные | Оффлайн |
|
||||
|------------|-------|--------|--------|-------------|------------|---------|-------|-------------------|--------------|------------|---------|
|
||||
| **Habitify** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Стрики | ❌ | ✅ |
|
||||
| **Atoms** | ✅ | ❌ | ❌ | ✅ | Базовая | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ |
|
||||
| **Streaks** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Стрики | Sharing | ✅ |
|
||||
| **Habitica** | ✅ | ❌ | ✅ | ✅ | Базовая | ❌ | ❌ | ❌ | 🎮 RPG полная | Parties/Guilds | ❌ |
|
||||
| **Loop** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | Стрики/Score | ❌ | ✅ |
|
||||
| **Fabulous** | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | Journeys | Circles | ❌ |
|
||||
| **Done** | ✅ | ✅ | ✅ | Premium | ✅ | ✅ | ❌ | ❌ | Стрики | ❌ | ✅ |
|
||||
| **Productive** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | Challenges | ❌ | ✅ |
|
||||
| **Way of Life** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | Chains | ❌ | ✅ |
|
||||
| **HabitNow** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | Стрики | ❌ | ✅ |
|
||||
|
||||
---
|
||||
|
||||
## 💰 2. Анализ монетизации
|
||||
|
||||
### Популярные модели
|
||||
|
||||
1. **Freemium с подпиской** (Habitify, Productive, Fabulous)
|
||||
- Free: ограниченное количество привычек или функций
|
||||
- Premium: $3-7/месяц или $30-40/год
|
||||
- Самая распространённая модель
|
||||
|
||||
2. **One-time purchase** (Streaks, HabitNow, Done)
|
||||
- $5-15 единоразово
|
||||
- Привлекает пользователей, не любящих подписки
|
||||
- Работает для iOS (Apple Store friendly)
|
||||
|
||||
3. **Open-source / Free** (Loop, Habitica Free)
|
||||
- Монетизация через donations или premium косметику
|
||||
- Привлекает privacy-conscious аудиторию
|
||||
|
||||
4. **Premium-first** (Atoms)
|
||||
- Высокая цена ($70-120/год)
|
||||
- Бренд автора (James Clear)
|
||||
- Узкая, но платёжеспособная аудитория
|
||||
|
||||
### Средние цены на рынке
|
||||
|
||||
| Тип | Диапазон | Среднее |
|
||||
|-----|----------|---------|
|
||||
| Месячная подписка | $3.33 - $10 | **$5-6** |
|
||||
| Годовая подписка | $30 - $70 | **$35-40** |
|
||||
| Lifetime | $25 - $100 | **$50-65** |
|
||||
| One-time (iOS) | $5 - $12 | **$6** |
|
||||
|
||||
### Что работает лучше
|
||||
|
||||
- **7-дневный trial** — стандарт индустрии
|
||||
- **Ограничение количества привычек** в free версии (3-7)
|
||||
- **Lifetime purchase** как upsell для лояльных пользователей
|
||||
- **Скидки 50-80%** на lifetime при запуске и праздниках
|
||||
|
||||
---
|
||||
|
||||
## ✅ 3. Must-have функции (базовый стандарт)
|
||||
|
||||
Функции, которые есть у **всех топовых приложений** — без них не конкурентоспособны:
|
||||
|
||||
### Типы привычек
|
||||
- ✅ **Daily habits** — ежедневные привычки
|
||||
- ✅ **Weekly habits** — X раз в неделю
|
||||
- ✅ **Custom schedule** — гибкое расписание (вт, чт, сб)
|
||||
|
||||
### Напоминания
|
||||
- ✅ **Push-уведомления** с выбором времени
|
||||
- ✅ **Несколько напоминаний** на одну привычку
|
||||
- ✅ **Smart reminders** (location-based — опционально)
|
||||
|
||||
### Отслеживание прогресса
|
||||
- ✅ **Streak counter** — текущая серия
|
||||
- ✅ **Calendar view** — визуализация выполнения
|
||||
- ✅ **Completion rate** — процент выполнения
|
||||
- ✅ **Graphs/Charts** — тренды за период
|
||||
|
||||
### UX
|
||||
- ✅ **Quick check-in** — отметка в 1-2 тапа
|
||||
- ✅ **Home screen widgets**
|
||||
- ✅ **Dark mode**
|
||||
- ✅ **Offline mode**
|
||||
|
||||
### Персонализация
|
||||
- ✅ **Icons/Emoji** для привычек
|
||||
- ✅ **Цветовая кодировка**
|
||||
- ✅ **Categories/Groups**
|
||||
|
||||
---
|
||||
|
||||
## 🌟 4. Differentiators (уникальные фичи лидеров)
|
||||
|
||||
### Habitify — Cross-platform sync
|
||||
- Бесшовная синхронизация между iOS, Android, Web, Mac, Watch
|
||||
- Один аккаунт везде — редкость на рынке
|
||||
|
||||
### Streaks — Apple Health интеграция
|
||||
- Автоматическая отметка привычек через HealthKit
|
||||
- "Walked 10K steps" → автоматически отмечено
|
||||
- Apple Watch complications
|
||||
|
||||
### Habitica — Full RPG gamification
|
||||
- Аватар, уровни, экипировка, питомцы
|
||||
- Parties для совместных квестов
|
||||
- Boss battles зависят от выполнения привычек
|
||||
- Единственное приложение с глубокой геймификацией
|
||||
|
||||
### Fabulous — Science-based coaching
|
||||
- "Journeys" — пошаговые программы изменений
|
||||
- Основано на исследованиях Duke University
|
||||
- Аудио-коучинг и медитации
|
||||
- Больше похоже на wellness app, чем на трекер
|
||||
|
||||
### Loop — Open-source & Privacy
|
||||
- Полностью бесплатное, нет рекламы
|
||||
- Данные только локально
|
||||
- "Habit Score" — уникальная формула силы привычки
|
||||
- Export в CSV/SQLite
|
||||
|
||||
### Atoms — Author brand power
|
||||
- James Clear (15M+ книг продано)
|
||||
- Daily Lessons из книги "Atomic Habits"
|
||||
- Premium positioning ($120/год)
|
||||
|
||||
### Way of Life — Flexible streaks
|
||||
- "Chains" с custom длиной (5 дней подряд, потом перерыв)
|
||||
- "Red chains" — отслеживание плохих серий
|
||||
- Journal notes к каждой записи
|
||||
|
||||
---
|
||||
|
||||
## 🚀 5. Рекомендации для Pulse
|
||||
|
||||
### Текущие преимущества Pulse
|
||||
- ✅ **Interval habits** (каждые N дней) — есть не у всех
|
||||
- ✅ **Freeze period** — уникальная фича
|
||||
- ✅ **Backfill** (отметка за прошлые дни) — важно
|
||||
- ✅ **Telegram bot** — уникальная интеграция
|
||||
- ✅ **Утренний/вечерний брифинг** — редкость
|
||||
- ✅ **Tasks + Habits** в одном месте
|
||||
- ✅ **PWA** — работает везде без app store
|
||||
|
||||
### Quick Wins (1-2 недели каждая)
|
||||
|
||||
| Фича | Сложность | Impact | Почему |
|
||||
|------|-----------|--------|--------|
|
||||
| **Home screen widgets** | Medium | High | Must-have, все топы имеют |
|
||||
| **Dark mode** | Easy | Medium | Ожидаемый стандарт |
|
||||
| **Улучшенная статистика** | Medium | High | Графики, calendar heatmap |
|
||||
| **Streak badges/rewards** | Easy | Medium | Простая геймификация |
|
||||
| **Categories/Groups** | Easy | Medium | Организация привычек |
|
||||
| **Emoji picker** | Easy | Low | UX улучшение |
|
||||
|
||||
### Для конкуренции с топами (1-3 месяца)
|
||||
|
||||
| Фича | Сложность | Impact | Референс |
|
||||
|------|-----------|--------|----------|
|
||||
| **Native iOS app** | High | Very High | Streaks, Done |
|
||||
| **Native Android app** | High | Very High | HabitNow, Loop |
|
||||
| **Apple Watch / WearOS** | High | Medium | Streaks, Habitify |
|
||||
| **Apple Health / Google Fit** | Medium | High | Streaks — автоотметка |
|
||||
| **Cloud sync** | Medium | High | Habitify |
|
||||
| **Onboarding flow** | Medium | High | Fabulous — лучший |
|
||||
| **Export (CSV/JSON)** | Easy | Medium | Loop, Way of Life |
|
||||
|
||||
### Уникальные фичи (не делает никто или почти никто)
|
||||
|
||||
| Идея | Конкуренты | Potential |
|
||||
|------|------------|-----------|
|
||||
| **Telegram-first трекер** | Никто | 🔥 Huge — уникальная ниша |
|
||||
| **AI habit suggestions** | Atoms (примитивно) | High — персонализация |
|
||||
| **Voice check-in** (голосовые сообщения) | Никто | Medium — accessibility |
|
||||
| **Habit templates marketplace** | Никто полноценно | Medium |
|
||||
| **Family/Team habits** | Habitica (parties) | Medium — accountability |
|
||||
| **Smart scheduling** (AI) | Reclaim.ai (calendar) | High — но сложно |
|
||||
| **Habit chains** (привычки зависят друг от друга) | Никто | Medium |
|
||||
| **Location-based triggers** | Некоторые примитивно | Medium |
|
||||
| **Mood correlation** | Way of Life (notes) | Medium — insights |
|
||||
|
||||
### Модель монетизации для Pulse
|
||||
|
||||
**Рекомендуемая стратегия:**
|
||||
|
||||
```
|
||||
FREE TIER:
|
||||
├── До 5 привычек
|
||||
├── До 10 задач
|
||||
├── Базовая статистика
|
||||
├── Telegram бот (уведомления)
|
||||
└── PWA доступ
|
||||
|
||||
PREMIUM ($4.99/мес или $29.99/год):
|
||||
├── Unlimited привычки и задачи
|
||||
├── Расширенная статистика (графики, heatmaps)
|
||||
├── Widgets (когда будут)
|
||||
├── Custom themes
|
||||
├── Export данных
|
||||
├── Priority support
|
||||
└── Утренний/вечерний брифинг (AI-улучшенный)
|
||||
|
||||
LIFETIME: $49.99 (launch price $29.99)
|
||||
```
|
||||
|
||||
**Почему эта модель:**
|
||||
- Цена ниже Habitify ($35/год) и Productive ($35/год)
|
||||
- Конкурентна с HabitNow ($12 lifetime)
|
||||
- Telegram-first = низкие costs = можно быть дешевле
|
||||
- Lifetime привлекает early adopters
|
||||
|
||||
---
|
||||
|
||||
## 📈 Roadmap предложение
|
||||
|
||||
### Phase 1: Foundation (Q1 2026)
|
||||
- [ ] Dark mode
|
||||
- [ ] Улучшенная статистика (графики)
|
||||
- [ ] Calendar heatmap view
|
||||
- [ ] Categories для привычек
|
||||
- [ ] Export CSV
|
||||
|
||||
### Phase 2: Engagement (Q2 2026)
|
||||
- [ ] Streak badges и rewards
|
||||
- [ ] PWA widgets (если поддержка браузеров улучшится)
|
||||
- [ ] Onboarding flow
|
||||
- [ ] Telegram inline buttons (quick check-in)
|
||||
|
||||
### Phase 3: Growth (Q3 2026)
|
||||
- [ ] Native iOS app
|
||||
- [ ] Apple Health integration
|
||||
- [ ] Apple Watch app
|
||||
- [ ] Premium tier launch
|
||||
|
||||
### Phase 4: Differentiation (Q4 2026)
|
||||
- [ ] AI habit suggestions
|
||||
- [ ] Native Android app
|
||||
- [ ] Google Fit integration
|
||||
- [ ] Habit templates library
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Ключевые выводы
|
||||
|
||||
1. **Рынок насыщен**, но большинство приложений похожи
|
||||
2. **Telegram-интеграция** — уникальное преимущество Pulse
|
||||
3. **Freeze period** и **interval habits** — сильные дифференциаторы
|
||||
4. **Must-have**: widgets, dark mode, лучшая статистика
|
||||
5. **Native apps** важны для mainstream, но PWA достаточно для MVP
|
||||
6. **Freemium модель** работает лучше всего
|
||||
7. **$30-40/год** — sweet spot для подписки
|
||||
8. **Gamification** работает для узкой аудитории (Habitica)
|
||||
9. **Cross-platform sync** — killer feature для серьёзных пользователей
|
||||
10. **Apple Health автоотметка** — wow-фактор для iOS пользователей
|
||||
|
||||
---
|
||||
|
||||
*Документ подготовлен на основе анализа 10 приложений, публичных обзоров, и данных app store на февраль 2026.*
|
||||
1
Dev/Twilio.md
Normal file
1
Dev/Twilio.md
Normal file
@@ -0,0 +1 @@
|
||||
DG8QLX7WL2H58QBBNUU4PH3S
|
||||
Reference in New Issue
Block a user