Не претендую на уникальность, но и не ChatGPT сгенерировал. Все написанное выстрадано руками :)
У нас была проблема
Куча приложений карт, еще больше флажков в каждом приложении и непонятно как всем этим управлять, где какое место найти.
Здесь мои точки с Google Maps, некоторые списки почему-то иногда не отображаются или отображаются только в вебе. Еще больше точек по России в Яндекс Картах и Юго-Восточной Азии.
Точки для хайкинга у меня в Organic Maps (оффлайн, ну).
И мы ее почти решили
Placelist (пер. список мест) — это приложение, где ты сохраняешь свои метки с разных карт в списки, делишься ими с друзьями (или нет) и кайфуешь от организованности.
Функционал
Что приложение может:
📍Добавить место с карты и пошэрить его
📍Создать список мест и пошэрить его
📍Быстро посмотреть точку на карте (в приложении)
📍Открыть точку на карте (отдельное приложение)
📍Менеджить список вместе с друзьями
Что приложение не может (пока):
🤖 Сгенерировать список мест по вашему промпту
🌍 Делать списки мест публичными (весь интернет увидит что вы там насохраняли)
📣 Делиться ссылкой на место
👥 Ролевая система для списоков — создатель, модератор, вьювер
💅🏻 Менять тему приложения, чтобы было так, как тебе нравится
📁 Создавать папки для плейслистов
🍻 и много другого — мы даже роадмап сделали!
Платформы
Сначала iOS просто потому что только в это пока можем. Далее web, потом Android.
Для iOS еще сделаем AppClip, чтобы люди без приложения могли открывать ваши списки удобнее чем в вебе.
Стэк
Backend
- Python FastAPI (решили отдохнуть от Django)
- Pydantic для валидации моделек
- Alembic для миграций
- SQLAlchemy — ORM
- Postgresql для БД
- Redis для сессионного хранилища
- Bash и Cron для регулярных чисток и сбора кэша
- Докеризация с компоузом, чтобы все это стартовать
Монолит поделен на функциональные модули user, placelist, place и тд, как apps в Django.
Frontend
Пока только статичная страничка, но потом полноценное web-приложение.
- Node.js (вместо модного Bun)
- Nextjs + React
- Axios для HTTP
Мобилка (iOS)
- Модульное приложение на базе Tuist
- Sourcery для кодогенераци
- Вёрстка на SwiftUI и немножко UIKit
- Redux-like архитектура на базе TCA
- CoreData для данных
Процесс
Когда мы начинали, я думал это «приключение на 20 минут». Ведь мы уже делали сайд-проекты и теперь то не совершим предыдущих ошибок. В общем, fail fast во всей красе.
Спустя год мы все еще не закончили, но уже виден конец. Релиз намечен, waitlist запущен и вот я пишу для вас эту статью. Красота!
Ошибки (или нет?)
Мы сделали много ошибок, расскажу про те, что больше всего отзываются.
1. Делать дизайн и следовать ему
В январе 2023 года я попросил свою hot wife сделать дизайн.
Получили симпатичный дизайн с хорошим UX.
Почему это ошибка?
Потому что fail fast не подразумевает времени на создание UI-kit, сложную и долгую верстку и время на обсуждение дизайна. Надо было делать прототип на коленке и тестить на друзьях-путешественниках.
2. FastAPI на бэке
Не пойми меня неправильно, FastAPI — классный фреймворк, чтобы чувствовать себя программистом, а не фреймворкером (привет Django), но мы тут про бизнес, а не хобби. Поэтому надо было брать быстрое и знакомое — Django.
В итоге пришлось разбираться с Alembic, дружить его с SQLAlchemy и смотреть как валидироваться через Pydantic, писать авторизацию с нуля. Круто, но не про бизнес.
3. Проблемы с реализацией SwiftUI на iOS
SwiftUI - классный фреймворк, но с проблемами кастомизации. В одном месте ты сильно выигрываешь в простоте вёрстки, а потом тратишь всё остальное время на костыли и попытки скрестить его с UIKit для реализации недостающих элементов.
Реализация кастомных компонентов на SwiftUI — боль, которую -можно- нужно было избежать. Четверть времени разработки заняла реализация навигации, которая достаточно примитивна в SwiftUI.
Если бы мы начинали сейчас, мы бы использовали SwiftUI только для простых экранов, отдавая предпочтение UIKit в основном функционале.
Деньги
Мы пока ничего не заработали, но уже потратили!
🐳 $5/месяц — сервер на Digital Ocean.
💰 $100/год — заносим Тиму Куку, чтобы он дал аккаунт настоящего iOS-разработчика.
Будущие расходы
✈️ $2800 — билеты в Тайланд для меня и моей жены. Надо же как-то за дизайн платить!
🐳 $40/месяц — с запуском приложения вырастет и мощность серверов.
💼 $1500/год — упрощенное ЮЛ в Германии, чтобы Stripe подключить. Вместе с налоговиком (Steuerberater) чуть больше получается, но пока точно не знаю сколько.
Пиши в комментарий за что мне еще придется платить! 🥹
Монетизация
Обязательно будет, но не сразу и не тупая. Наша идея такая: мы хотим, чтобы люди могли использовать приложение бесплатно, но больше плейслистов — это больше денег на сервер.
Скорее-всего будет подписка, которая разблокирует уникальные скинчики для приложения и неограниченные плейслисты / точки.
Мы все еще посчитаем и заранее пришлем письмо с изменениями. Уже созданные плейслисты удалять не будем, но для новых, скорее-всего, придется купить подписку.
Дай мне знать в комментариях, если ты считаешь такую монетизацию говном! 💩
Мы
📱 Миша Кузьмин (iOS)
👋🏼 Вася Попов (я — бэк и фронт)
💅🏻 Анжелика Довнар (hot wife — дизайн)
Совет прошлому мне, настоящему тебе
Может это и прописные истины, но мне дались с трудом.
Хобби или бизнес
⚡️ Выбери: ты нашел себе новое хобби или делаешь бизнес? На хобби ты тратишь деньги, бизнес зарабатывает деньги (должен).
В бизнесе делай на том, на чем быстрее и думай про то, что ты не в корпорате.
В хобби делай че в кайф — тестируй гипотезы, изучай идеи, пробуй то, что раньше не делал.
Что читать и смотреть?
- На эту тему у Вастрика есть хорошая статья
- Ютуб YC поможет вдохновиться и ответить на базовые вопросы
Регулярность > «Щас сяду и все напишу сразу»
Если проект больше, чем на пару дней, то лучше выбрать время среди недели, когда ты всегда будешь заниматься только этим проектом.
Кроме случаев, когда проект — это реально одно форма на реакте. Тут можно и пропушить себя немного.
Что дальше?
А дальше — совершать новые ошибки!
Сейчас мы запустили лист ожидания, куда ты можешь записаться и получить имейл, когда мы сделаем релиз. Все бесплатно и без смс!
Спасибо, что прочитал/а. Буду рад ответить на вопросы или обсудить почему это не заработает в комментариях 🙃
Побуду человеком, который всё портит :)
Идея очень хорошая, пост написан интересно, но как же, простите, заебали ранние доступы и листы ожидания! Вижу в профиле Германию, понимаю вайбы, но термин на приложение - это уже слишком.
Я - твоя ЦА. Я прочитал рекламу, я хочу твой продукт. Кривой, косой, но сейчас. Я готов писать тебе развернутые комменты "что не так", готов терпеть неудобства ранней версии, но дай пощупать!
Если я хочу пиццу - я заказываю пиццу, а не лист ожидания на пиццу. Когда подойдет очередь - я уже тысячу раз забуду тебя, твой пост и твой продукт, и смахну уведомление в спам.
Тем более, ты пришёл к Клубу (но делаешь это без уважения). Ты не инвесторам впариваешь грандиозные планы, ты своим друзьям пришел рассказать про свой проект. Но вместо проекта - пустые обещания и красивый лендинг.
Интересно было бы тебе читать посты "как я перееду в Америку", "как я получу свой первый оффер в Гугл", "Как я заработаю миллион а потом выгорю"?
Прости за токсичность, удачи тебе и твоему проекту.
Хороший пост, интересно было.
Наверное, не согласен с тем, что делать дизайн — ошибка, ошибка — делать его таким большим с самого начала. Нужен просто дизайнер, который тоже понимает концепцию фэйл фаст :)
Небольшой фидбэк по стилю: в Клубе плохо работают байты на комментарии типа "пиши в комментариях, что еще" — отдает вайбом какого-то инстаграма, как будто ты smm-гуру, а остальные — твои несмышленные подпищеке.
А тут все же в основном сообщество равных, и такую позицию считают и не только не откомментируют то, что ты хотел, но и могут не дать какой-то обратной связи, котороу дали бы :)
Подскажу не прошенный совет:
А в остальном, круто что YC посмотрел, там как раз про все это рассказывается.
Ну и будем следить, че там дальше у тебя получится!
Отлично! Была практически такая же идея! Круто, что вы уже начали!
Несколько вопросов:
Интересно интересно!
Попробовал бы!
Только жаль , что пост для клуба, а в итоге надо записываться в лист ожидания!
Привет!
Рекомендую следить за проектом https://www.corner.inc/. Команда из долины, делают похожий сервис. Но я думаю, что вы про него в курсе :)
Буду ждать запуска. Удачи!
Привет! Классная идея. В лист ожидания вписался. А какие примерные сроки релиза?
Была практически такая же идея, даже начали что-то делать по ней :))
стало очень актуально, когда все вокруг номады или одновременно переехавшие, все делятся друг с другом списками мест, а менеджерить это в гугл-картах никак, там даже управление списками засунуто в какую-то дальнюю жопу, каждый раз не могу вспомнить где это.
Отличный проект. Записался в вейтлист
А есть видение, каким будет сервис лет так через 5-10, если все получится?