Что там по проекту "ВсяЕда" ?- Дизайн основного приложения - готов ✅- Дизайн для партнерского приложения - в процессе (Отдал ТЗ дизайнеру, обговорено)☑️Какая архитектура проекта планируется📝1️⃣ Отдельный репозиторий (плагин) с общими свойствами для двух проектов (ВсяЕда, ВсяЕда Партнер), который будет включать в себя:🔹 функции расширения;🔹 код для http запросов (скорее всего будет обертка над dio с базовыми url и интерцепторами для подхвата jwt токена и т.п.);🔹 код для обработки ошибок при сетевых запросах;🔹 transitions (переходы);🔹 и всякого рода сахар, который отупляет мозг облегчает разработку.2️⃣ Отдельный плагин с дизайн-системой:🔹кнопки;🔹лоадеры;🔹инпуты для ввода текста;🔹шрифты;🔹иконки;🔹цвета;🔹прочий ui;Дизайн-систему уже начал пилить. Проделана работа с цветами, шрифтами и добавил иконки. Иконки зилил как шрифты (У меня есть пост, где я рассказал зачем это и как это)3️⃣ Приложение ВсяЕда4️⃣ Приложения ВсяЕда ПартнерЧто планирую делать в самих приложениях:основные зависимости:🔹bloc для state management'а🔹json_serializable для генерации DTO моделей;🔹go_router для навигации;🔹dio для http запросов;Дальше перечислять не буду, но планирую на сколько это возможно избегать большого их количества. Особенно не хочется юзать freezed, injectable, retrofit и другие либы, где надо генерить код (кстати, поэтому и go_router, а не auto_route). Пока что единственным исключением является json_serializable, к нему я просто привык.Ну и придерживаться Clean architecture на сколько это возможно, а также соблюдать принципы DRY и KISS и то, что лучше всего получается помню из SOLID. (Я прям как будто собес прошел😅). Как-то так 💁♂️
Дневник Flutter разработчика
@flutterdiary
Собираю полезности и излагаю мысли обо всей этой движухе.GitHub: https://github.com/GereyTatarkhanov
Похожие каналы
Все →Последние посты
Уже слышали про Model Context Protocol (MCP)? Если коротко и простыми словами - это стандартизированный способ обмена информацией с ИИ (и вроде как между ИИ) 🛠И так, твой первый вопрос - "Зачем это нужно?". Представь себе, что тебе нужно быстро переключаться между ИИ в рамках одной системы и одного инструмента или подключать ИИ модель к внешним ресурам. Без стандартного подхода придется делать интеграцию с каждой моделью по отдельности с нуля, а MCP предлагает быстрый способ создания подобных "мостов" 🌉 между клиентом и искусственной думалкой. 🎬 Резкая смена кадра, тусклый флешбек и переносимся к редактору кода - Cursor 💻 Для тех, кто пропустил - это редактор кода с встроенными ai функциями. У тебя возникает второй вопрос "И что тут такого?" 🤨 Ну да, он умеет "интегрироваться" в проект (изучать и делать правки в файлах, а не в тупую кидать код в чат, чтобы ты его скопировал). Вон Copilot так умеет тоже. Ответ: еще одной фишкой редактора является быстрое создание так называемых MCP серверов 🚀 Твой следующий вопрос "Что это за очередная хрень?" 🤷♂️Я объясню примером из своих недавних действий. Я связал с помощью такого сервера Cursor с Figma и "попросил" сверстать экран, который там нарисован. Получилось, кстати, плохо. Ужасный код и верстка похожа на дизайн из макета не сильно (хотя он даже svg скачал и вставлял в код).А потом я сделал наоборот 🔄 Я сказал чат-боту нарисовать новый скрин в Figma и при этом использовать уже готовые компоненты из других нарисованных дизайнером экранов. Получилось еще хуже 😅 ИИ создал новый скрин, но тупо не попал элементами на созданный фрейм.В целом опыт считаю удачным ✅Полагаю, что код и дизайн получились ужасными (а могли быть просто средними) потому, что у меня использовалась бесплатная версия Cursor, где доступны только подобные модели со сбитым прицелом, которые скорее всего обучались на skillbox и подобных курсах.Таким образом, MCP открывает двери для подобных интеграций моделей с разными системами, что может заметно о
Хочу поделиться довольно полезными правилами📝Недавно начал читать "Чистый код" Роберта Мартина (да-да заезженная тема и все, кому не лень ее читали, я знаю, заткнись). И в самом начале говорится о правилах 5S - это японские правила соблюдения порядка, которые применимы и в кодинге. Давайте продублирую, лишним не будет:1) Seiri (Сортировка) 🗂Сортируем нужное и ненужное: ветки в git'е, зависимости и код, который "когда-нибудь пригодится" (он не пригодится, поверьте). Оставляем все, что нужно для конкретного проекта или конкретной задачи. Не надо складывать все приколюхи в utils.2) Seiton (Соблюдение порядка) 📂Чёткая структура: ui компоненты — в widgets/, dto — в models/, газировку — в кружку (а не на клавиатуру, как я. Сейчас придется новую покупать).3) Seiso (Содержание в чистоте) 🧼Удаляем мусор: print'ы для дебага с текстом "тут ашыбка", закомментированные куски и прочее.4) Seiketsu (Стандартизация) 📜Один кодстайл на всех. Форматируем, используем запятые по договоренности, схожий нейминг для схожих элементов и т.д.5) Shitsuke (Совершенствование) 🚀Автоматизируем рутину, рефакторим код и учимся на ошибках (желательно на чужих).

А это варианты иконок для нашего проекта. Интересно узнать ваше мнение о них, какой вариант лучше❓
На днях словил очень мерзкий баг связанный с пушами🚫Мерзкий тем, что пуши не отображались на Android.Сначала выяснял почему у меня на Android эмуляторе все работает как часы, а у моих коллег-тестеров, которым я скидываю APK все работает не как часы, вернее вообще не работает.Мысль о том, что для других я собираю release apk, а для себя debug пришла не сразу, я думаю вы уже догадались, что причина была в этом (Ну половина причины🤷).На stackoverflow нашел решение: якобы надо sha-1 ключ, которым подписываю релизный APK загрузить в firebase. Но хрен там... Не помогло. Не знаю почему все про это говорили - и без этого ключа все пуши ходили, просто не отображались в release (это я выяснил позже по логам в graylog).Найти проблему помог скайнет из алиэкспресс под названием deepseek 🈵Оказалось, что во время сборки release версий стирались (и/или обфусцировались) важные данные связанные с пушами. А занимался этим "шовинизмом" по отношению к пушам ProGuard. Да. Вот так.Проблему можно решить отключив беспредельщика в файле android/app/build.gradle вот так: buildTypes { release { shrinkResources false signingConfig signingConfigs.release } }Или написать правила, чтоб он обходил пуши.Кстати, в документации к flutter_local_notifications есть часть этому посвященная.Может кому пригодится🙃

Давно отечественные боты с низкой социальной ответственностью начали заглядывать в зарубежные Flutter паблики?😁 Их и в наших-то не мало

Меня давно не было, но сейчас я врываюсь с новостями❗️👇Дизайн нашего мобильного приложения ВсяЕда для клиентов уже готов🎊🍕🍣И на мой взгляд получился очень красивым! А отдельный primary color для каждой категории (кулинария/кондитерские изделия/кофейни) и карта с отмеченными на ней заведениями, которые будут в приложении должны сделать приложение еще круче 😎Конечно, я видел дизайн и раньше, но мне не хотелось делиться с вами его изображениями, пока он полностью не был готов, хотя очень хотелось😊Если вдруг увидите, что где-то что-то не то, не стесняйтесь написать об этом, буду рад вас послать критике, ведь с ней проект может стать еще лучше⚡️Еще на листочке записаны несколько крутых идей, которые не войдут в MVP, но обязательно будут реализованы в будущем!Буду и дальше делиться с вами новостями. ТЗ для партнерского приложения еще не готово, но для партнеров ожидается очень гибкая и настраиваемая бомба!💥Меня давно не было, но сейчас я врываюсь с новостями❗️👇Дизайн нашего мобильного приложения ВсяЕда для клиентов уже готов🎊🍕🍣И на мой взгляд получился очень красивым! А отдельный primary color для каждой категории (кулинария/кондитерские изделия/кофейни) и карта с отмеченными на ней заведениями, которые будут в приложении должны сделать приложение еще круче 😎Конечно, я видел дизайн и раньше, но мне не хотелось делиться с вами его изображениями, пока он полностью не был готов, хотя очень хотелось😊Если вдруг увидите, что где-то что-то не то, не стесняйтесь написать об этом, буду рад вас послать критике, ведь с ней проект может стать еще лучше⚡️Еще на листочке записаны несколько крутых идей, которые не войдут в MVP, но обязательно будут реализованы в будущем!Буду и дальше делиться с вами новостями. ТЗ для партнерского приложения еще не готово, но для партнеров ожидается очень гибкая и настраиваемая бомба!💥
Если у вас, как и у меня, возникла необходимость закрыть экран macbook так, чтобы он не перешел в режим сна, и при этом вы не хотите ставить ноут на зарядку (а только так можно этого добиться с помощью стандартных настроек, ну или я слепой и не нашел) - то вы можете юзать в терминале такие команды:sudo pmset disablesleep 1 - Отключить засыпаниеsudo pmset disablesleep 0 - Включить засыпаниеНу а я пошел чуть дальше и чтоб не возиться с терминалом написал App для MacOS.Важный момент: в app используются те же команды, а они выполняются через суперюзера (sudo который), и чтобы у вас Аntisleep работал корректно необходимо добавить в файл sudoers несколько строк (которые отключат запрашивание пароля именно для этих двух команд) и вот как это сделать:❗️В терминале выполните команду: sudo visudo.❗️Добавьте следующие 2 строки в конец файла:ваш_пользователь ALL=(ALL) NOPASSWD: /usr/bin/pmset disablesleep 0ваш_пользователь ALL=(ALL) NOPASSWD: /usr/bin/pmset disablesleep 1("ваш_пользователь" поменяйте на имя вашего пользователя).❗️Сохранить изменения (Нажать Esc и выполнить :w)❗️Выйти (Выполнить :x).Готово!
Друзья, вас уже чуть больше 200! Это не огромное количество, конечно, но и не скажешь, что мало🥹Спасибо, что подписываетесь, читаете, оставляете комментарии и реакции. Директ вообще завален вашими восторженными комментариями и просьбами отправить автограф, не успеваю отвечать всем. Хоть я и не часто выкладываю посты (думаю если это было бы иначе, вас было бы еще больше). Благодарен вам за это!2024 год заканчивается и пора подводить итоги. В этом году произошло не мало изменений в моей жизни: Я успел много раз переехать, устроился на крутейшую работу flutter разработчкиком в крупную компанию с офигенным коллективом, попробовал себя в роли ментора, запустил этот канал, познакомился с интересными и умными людьми, купил частный самолет, подружился с Илоном Маском, слетал на Венеру... Ладно, переборщил, переезжал я не так часто, а всего несколько раз😌А следующий год планирую провести еще интереснее, о чем расскажу ниже👇Сейчас новогодние праздники и пока у меня есть время, я хочу добить техническое задание для дизайнера своего проекта. Я почти дописал для клиентского приложения и необходимо будет написать для партнерского. Я обещал вам раскрыть идею проекта и думаю настало время!Идея невероятно банальна и совершенно ординарна - это агрегатор ресторанов!🍕🍣Хоть таких приложений очень много, но не в моем маленьком городке. И хотелось бы занять эту нишу здесь, где заказывать необходимо через whatsapp, телегу или даже инсту. И кто знает - может быть оно распространится и далеко за пределы моего города и станет мировым брендом №1 и все мишленовские рестораны захотят со мной работать. Да, именно так оно и будет. В общем и целом, как докончу писать ТЗ - расскажу вам более подробно о том, какие фичи в планах (думаю, что особенно интересным будет партнерское приложение, я планирую гибкий инструмент для настройки меню, акций и всяких прочих "ресторанских" дел). Буду делиться с вами о трудностях разработки и о проделанной работе.Поздравляю вас с наступающим новым годом, и пусть

На прошедшем FlutterInProduction показали вот такие участки кода. На мой взгляд нуу такое себе...😐Описание класса с указанием аргументов прямо после названия норм (но пока еще не понятно какой там синтаксис дальше), а вот декораторы (первый скриншот с описанием MyButton) как будто вообще не то.Вы что думаете?🤔На прошедшем FlutterInProduction показали вот такие участки кода. На мой взгляд нуу такое себе...😐Описание класса с указанием аргументов прямо после названия норм (но пока еще не понятно какой там синтаксис дальше), а вот декораторы (первый скриншот с описанием MyButton) как будто вообще не то.Вы что думаете?🤔