DayOFF: Поиск друзей 4/ Попытка сделать безопасность
Проснувшись рано утром, озаботился безопасностью прилки и решил перед стартом рабочего дня запилить нормальную авторизацию с валидацией подписи (сделать второй заход) и с созданием сессии, выдачей jwt и прочими приколами.
Снова была ебка на 2 часа. Сначала пытались валидировать подпись телеги - нихуя не получилось. Я весь код проверил сам, вроде все ровно по гайдлайну телеги, а хэши один хер не совпадают как их ни крути.
Потом я забил на это, думаю - хер с ним. Пусть без валидации, но будем создавать нормльно сессии и выдавать access токены. Но видимо этот функционал сырой и в lovable и в supabase. Сначала вроде как чето получилось, авторизация работала, сессии создавались, но я не мог редактировать профиль. Сервак не давал, выплевывал 406 ошибку мол у меня нет прав.
Я учинил скандал и стал чекать, в чем проблема и пытаться это промптить. В итоге я понял, что у supabase есть отдельный флоу авторизации пользователей через логин-пароль, который нельзя обойти. Отдельный интерфейс и фичи для авторизации типа. А я через телегу юзеров авторизовывать хочу. В связи с чем lovable предложил мне поднаебать supabase и чето там вместо пароля использовать. Естественно, не сработало. Потом сессии вообще перестали создаваться, меня это все заебало и я откатил до версии без нормальной авторизации.
В итоге, сейчас нормальной авторизации нет, войти под другим пользователем - как нехуй делать из за одной уязвимости, если ее знать. Но и ладно. Запускать будем так, а ближе к делу возьму консультацию какого нибудь нормального разраба и сделаем с ним авторизацию нормальную, чтобы и валидация работала, и сессии создавались. Все таки, канал называется х*як и в прод, так и будем работать:))
UPD: Все нормально, придумал промежуточное решение, теперь просто так под другим юзером не зайти. Для авторизации мастерим хитрый токен))
Вот уж действительно, если пилишь проект через ии - секс тебе не нужен. Сегодня делал окошко для создания события, думал ща за часик сделаю - и пойду купаться, но не тут то было. Вызов поджидал в поле выбора города события.
Я решил делать его в формате поиск + выпадающий список с выбором. Создал в бд табличку с городами, закинул туда 100 самых крупных городов рф для начала, написал через lovable код подгрузки списка городов с бэка и парсинга в список. И тут начался пиздец.
При раскрытии списка приложение ложилось с ошибкой. Сначала я пытался это фиксить через промпты. Не помогло. Потом подрядил chatgpt o3 помочь нам разобраться. Не помогло. Потом полез в код сам, все просмотрел, нашел место потенциальной ошибки. Оно оказалось верным, но исправить ошибку это не помогло. В итоге я просто 2 часа пытался фиксить эту проблему через промптинг, понял, что делать список с поиском через эту шткук - полный пиздец, и переделал это в обычный выпадающий список сразу со всеми городами. И похуй.
Дальше еще на несколько часов была свистопляска со стилями - по умолчанию в этот раз lovable сделал их полным говном, фона у выпадающих списков не было, сочетания цветов он проебывал, календарь для выбора даты и времени не работал. Вот один из моих рейдж-промптов, с которого я потом в голос угарал:
“Блять, я не понимаю, в чем твоя проблема со стилями и дизайном в этом проекте?
Календарь все еще не кликается, звездочки стали красные везде, кроме поля "Город". Ты че блять, отдельную звездочку для города чтоли используешь? Отдельным компонентом? Какого хуя то, что в предыдущем проекте 1 промпт занимало, сейчас занимает 10?
Исправь эту пиздопляску со стилями, пожалуйста. Мы делаем мобильное приложение, пройдись по всему коду, исправь все, что не адаптировано под мобилку, исправь ебаные звездочки (у нас они и в окне создания профиля используются вообще то, нахуя ты отдельные взял?), чтобы все были красыми.
И ИСПРАВЬ КАЛЕНДАРЬ, ЧТОБЫ Я МОГ НА НЕГО НАЖИМАТЬ.”
Забавно, что после этого все и заработало:))
В итоге, теперь у нас есть работающее окно создания события, а лимиты у меня по промптам почти кончились. Надо предъявить, конечно, в поддержку lovable, мол почему мне приходится дебажить календарь через 10 промптов, а вы берете деньги за кол-во промптов. Исправляйте, суки. Но ладно, главное, события теперь создаются и в бд в том числе. Завтра будем уже пилить карточку события в списке и окно с возможностью присоединиться к событию. Ниже скрин, че мы сегодня делали несколько часов.
DayOFF: Поиск друзей 2/ Настройки и редактирование профиля
Было качественное настроение и я решил поебстись с lovable и вечером. Сделали основную страницу приложения, хедер и панель со страничками снизу. + сделали окно настроек, возможность редактировать профиль и чтобы данные с бэка подтягивались в окно настроек.
С этим проблем особо не было, но возникла проблема с картинками. Я хотел ее svg-шкой закинуть, шоб прям в код вставить, а она вышла огромная и ИИшка поломала билд. Я полез фиксить, думал закрыть предупреждения и вернуться к ним позже но в итоге их dismiss-нул. Чуть не обосрался, думал заново все пилить придется. Но вроде обошлось - он сам нашел проблемку и порешал ее. Закинул ему просто в png, сказал в public добавить и все сработало:)
Все еще ловлю иногда при запуске приложения на мобиле странные штуки - то не загружается, то показывает окно “Для начала работы откройте приложение через Telegram”. Периодически вкидываю это иишке, она что-то исправляет, вроде становится получше.
В целом, все как и писали - с lovable нужно немного терпения, но в итоге все получается. И код он пишет очень сносный, я даже его читать могу и понимать, че он делает. Ниже фоточки того, что сейчас есть.
Короче, ебался с авторизацией я не только сегодня, но и дня 3-4 до этого. Не получалось сделать через lovable, а уж подумал, что инструмент говно и не нужон. Но сегодня получилось!
Авторизация теперь работает, ура, но есть нюанс. Не работает валидация данных от телеги. По идее, когда авторизуешь юзеров через телеграм, нужно валидировать подпись через хитрые махинации с initData и хэшем, чтобы исключить получение фейковых данных и разный на основе этого фрод.
Как только я ни ебался - и lovable просил починить, и chatgpt 03 просил помочь lovable починить - все то же самое, в edge function в supabase возвращается ошибка - Data Hash Mismatch. Промптов 30 на это потратил и все равно не работает.
Я подозреваю, что это из-за того, что supabase сохраняет токен бота в хэшированном виде, и в таком же отдает для сравнения. И из-за этого все ломается. И че с этим делать я пока не знаю, но я заебался пытаться это чинить. Пойдут пользователи - найду telegram mini apps разраба, который поможет мне это сделать и даст человеческую консультацию.
Но главное - авторизация теперь работает и юзеры в БД сохраняются!! Это уже победа, завтра буду делать главную страничку приложения, чутка доделаю онбординг и сделаю окно редактирования профиля.
Итак, DayOff - это первая аппка, которую я буду пилить и запускать полностью сам. Я не ожидаю, что оно наберет большие охваты, станет источником серьезного бабла или что-то еще. Мой интерес в проекте - выстроить для себя флоу создания мвп продуктов в одно рыло и преисполниться в использовании всех необходимых для этого инструментов. Ну и если оно полетит - круто!
Что это будет? Это будет telegram mini app для поиска друзей оффлайн. Здесь юзеры смогут просматривать события от других юзеров в своем городе, присоединяться к ним и создавать собственные.
Откуда идея? У меня есть собственная боль - я обожаю знакомиться с новыми людьми на разных тусовка/митапах, но они проходят не так часто, как хотелось бы. Иногда сидишь, конец недели, ты заебался и хочешь попить пивко с каким-нибудь ребятами со схожими интересами, но все друзья заняты.
Какую проблему решаем? По сути - одиночество. Круто было бы иметь аппку, в которую заходишь, закидываешь событие, мол “го в кальянную сегодня вечером”, и вот вечером уже идешь с 5-ю незнакомыми ребятами со схожими интересами балдеть.
Минимальный набор функционала для теста будет такой: - авторизация через tg mini apps - редактирование профиля и просмотр профилей других - создание события - просмотр событий и возможность присоединиться к ним - чат, привязанный к каждому событию для участия - уведомление о новых событиях в твоем городе через бота (основная retention-механика) - фильтр событий по городу
Начнем попил с авторизации. Стартую с использования lovable (для кода через промптинг) + chatgpt (для проработки логики) + supabase (в качестве простого способа сделать БД)
Короч, хочу преисполниться в запуске айтишных продуктов на рынок с 0 и доведения до инвестиций, клиентов, прибыли. Здесь будет дневник, как я и шо делаю