https://github.com/424nkita-csharsfta4/skillwave
SkillWeave - это мобильное приложение с обучающими курсами
https://github.com/424nkita-csharsfta4/skillwave
api backend-api bloc csharp dart fastapi figma flutter material-design mobile-development moldova nodejs rest-api supabase tiraspol udemy-course ui uml-diagram ux
Last synced: about 2 months ago
JSON representation
SkillWeave - это мобильное приложение с обучающими курсами
- Host: GitHub
- URL: https://github.com/424nkita-csharsfta4/skillwave
- Owner: 424Nkita-Csharsfta4
- Created: 2023-12-12T19:08:48.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-03-16T13:33:20.000Z (about 1 year ago)
- Last Synced: 2025-01-23T01:41:43.668Z (3 months ago)
- Topics: api, backend-api, bloc, csharp, dart, fastapi, figma, flutter, material-design, mobile-development, moldova, nodejs, rest-api, supabase, tiraspol, udemy-course, ui, uml-diagram, ux
- Language: Dart
- Homepage: https://65fa0a62568faa25891ba8e2--scintillating-kulfi-d4afe3.netlify.app/
- Size: 522 KB
- Stars: 2
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# SkillWave
- Описание
- Стек технологий
- Функциональные возможности
- Функционал
- Дополнительные возможности
- Развитие сообщества
- Программа менторства
- Интеграция с индустрией
- Перспективы
- UI/UX
- Bloc/Cubit
- SupaBase
- Патерны
- Архетектура
- Визуализация
- Заключение
## Описание
Skillwave - это мобильное приложение обучающей платформы, предназначенной для людей, желающих расширить свои знания и навыки.
В приложении доступны разнообразные курсы, аналогичные тем, что представлены на платформах Stepik и Udemy.
## Стек технологий
Skillwave разработан с использованием следующих технологий:
- Dart/Flutter для мобильной разработки
- Bloc для управления состоянием
- Supabase для базы данных
- Node.js для backend
- UI/UX

## Функциональные возможности
### Плюсы
- Доступ к широкому выбору обучающих курсов
- Интерактивный и дружественный пользовательский интерфейс
- Возможность оформления подписки для получения дополнительных материалов и функций
### Минусы
- Возможны ограничения доступа к некоторым курсам без подписки
- Требуется подключение к интернету для загрузки курсов и обновлений
## Функционал
- Регистрация и аутентификация пользователей
- Просмотр информации о каждом курсе, включая описание, автора, рейтинг и отзывы
- Возможность просмотра примеров кода из курсов
- Поддержка различных форматов обучения, включая видеоуроки, статьи и задания
- Возможность обновления профиля пользователя
- Механизм оплаты подписки и управления ею

## Дополнительные возможности
Адаптивный дизайн
- Skillwave обеспечивает отличное пользовательское взаимодействие на устройствах с разными разрешениями экрана, благодаря своему адаптивному дизайну.
## Развитие сообщества
- Партнерство с образовательными учреждениями
- Skillwave может установить партнерские отношения с университетами и другими образовательными учреждениями для предоставления доступа к их курсам и сертификатам через приложение.
## Программа менторства
- Платформа может запустить программу менторства, где опытные пользователи могут помогать новичкам в освоении новых тем и консультировать их по вопросам обучения.
## Интеграция с индустрией
- Skillwave может предложить интеграцию с компаниями и предприятиями, чтобы предоставлять им возможность создания собственных обучающих материалов или проведения корпоративного обучения через приложение.
## Перспективы
- Skillwave постоянно развивается и стремится предоставить пользователям ещё больше возможностей для обучения и саморазвития.
- С постоянным добавлением новых курсов, улучшением функциональности и расширением сообщества пользователей, приложение продолжает быть лидером в области онлайн-обучения.
## UI/UX
- Дизайн в Figma
- Скоро ссылку загружу

## Bloc/Cubit
- Bloc (Business Logic Component) и Cubit - это паттерны управления состоянием в приложениях Flutter,
- которые позволяют эффективно разделять бизнес-логику и пользовательский интерфейс.
- Они обеспечивают чистоту кода, упрощают тестирование и делают приложение более масштабируемым,
- позволяя разработчикам создавать отдельные компоненты для управления состоянием и событиями.
- Использование Bloc/Cubit помогает улучшить архитектуру приложения и делает его более
- поддерживаемым и понятным для разработчиков.
- Основная дока для работы с Flutter и BLOC
## SupaBase
- Supabase - это открытая платформа для разработки приложений с базами данных PostgreSQL.
- Supabase предоставляет разработчикам готовое API для работы с базой данных, аутентификацией пользователей и многое другое.
- Документация по работе с Supabase в Flutter/Dart предоставляет инструкции по настройке подключения к базе данных, выполнению запросов и обработке результатов в мобильных приложениях на Flutter.
- Основная дока для работы с Flutter и Supabase

## Патерны
Паттерн проектирования — это часто встречающееся решение определённой проблемы при проектировании архитектуры программ.
В отличие от готовых функций или библиотек, паттерн нельзя просто взять и скопировать в программу.
Паттерн представляет собой не какой-то конкретный код, а общую концепцию решения той или иной проблемы, которую нужно будет ещё подстроить под нужды вашей программы.
Патерны которые используются в проекте
-
Адаптер
Адаптер — это структурный паттерн проектирования, который позволяет объектам с несовместимыми интерфейсами работать вместе.
-
Наблюдатель
Наблюдатель — это поведенческий паттерн проектирования, который создаёт механизм подписки, позволяющий одним объектам следить и реагировать на события, происходящие в других объектах.
-
Одиночка
Одиночка — это порождающий паттерн проектирования, который гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа.
-
Стратегия
Стратегия — это поведенческий паттерн проектирования, который определяет семейство схожих алгоритмов и помещает каждый из них в собственный класс, после чего алгоритмы можно взаимозаменять прямо во время исполнения программы.
-
Фасад
Фасад — это структурный паттерн проектирования, который предоставляет простой интерфейс к сложной системе классов, библиотеке или фреймворку.
## Архетектура
Clean Architecture - это методология разработки программного обеспечения, которая ставит целью создание приложений с высокой степенью модульности, гибкости и чистоты кода. В ее основе лежит принцип разделения программы на слои с четкими границами и зависимостями, чтобы уменьшить связанность компонентов и облегчить их замену и модификацию. Главная идея - разделить код на уровни, начиная от внешних интерфейсов и заканчивая внутренней бизнес-логикой, с соблюдением принципов единственной ответственности и инверсии зависимостей. Это помогает создавать более поддерживаемые, тестируемые и масштабируемые приложения.

Чистая архитектура - это концепция построения архитектуры систем, предложенная Робертом Мартином (также известного как "дядюшка Боб"). Концепция предполагает построение приложения в виде набора независимых слоёв, что облегчает тестирование, уменьшает связность и делает приложение более простым для понимания.

Приложение состояло из четырёх слоев:
- data - слой работы с данными. На этом уровне, например, описываем работу с внешним API.
- domain - слой бизнес-логики.
- internal - слой приложения. На этом уровне происходит внедрение зависимостей.
- presentation - слой представления. На этом уровне описываем UI приложения.
## Визуализация

## Заключение
Skillwave - это мощный инструмент для тех, кто стремится к саморазвитию и обучению новым навыкам.
Благодаря его широкому выбору курсов, удобному интерфейсу и разнообразию функциональных возможностей пользователи могут найти именно то, что им нужно для роста и достижения своих целей.

```mermaid
graph TD
lib --> bloc
lib --> course
lib --> screens
lib --> services
lib --> utils
lib --> json
lib --> router
bloc --> onboarding_events.dart
bloc --> onboarding_states.dart
bloc --> onboarding_bloc.dart
course --> local_storage
course --> model
course --> udemy_api.dart
screens --> course_detail_screen.dart
screens --> dashboard_screen.dart
services --> udemy_api_service.dart
utils --> error_handler.dart
utils --> widgets
json --> course.json
router --> router.dart
router --> screens
screens --> auntification
screens --> block
screens --> login
screens --> interface
screens --> model
screens --> view
screens --> viewmodel
screens --> sign
screens --> onbourding
screens --> profile
screens --> update_profile
screens --> theme
auntification --> login_state_block.dart
login --> registration_strategy.dart
login --> model
login --> view
login --> viewmodel
sign --> sign.dart
onbourding --> onboarding_screen.dart
onbourding --> onboarding_screen_1.dart
profile --> const
profile --> profile.dart
profile --> profile_menu.dart
update_profile --> update_profile.dart
theme --> theme_switch.dart
main.dart
```