Первый Pet-проект на Python с предпринимательским подходом и ролью Product Owner
Привет всем, кто заглянул в блог antosh.by!
Меня зовут Антон (AntOsh), и я здесь не только как автор блога, но и как предприниматель. За плечами у меня опыт и в роли менеджера проектов (PM), и в роли владельца продукта (Product Owner).
Это научило меня смотреть на задачи комплексно: я стремлюсь понимать не только “что” нужно сделать и “зачем” это нужно пользователю или бизнесу, но и “как” это реализовать наиболее эффективно и “когда” представить результат.
И сегодня я хочу сделать первый шаг в формировании своего публичного портфолио как разработчика и продакта, представив вам свой первый Pet-проект на Python — веб-приложение “My Finances v1.0”.
Немного о языках, блогах и планах на будущее. Этот пост, как и в целом блог antosh.by
, я продолжу вести на русском языке. Это мой осознанный выбор, ориентированный на русскоязычную аудиторию и обсуждение тем, которые могут быть здесь наиболее актуальны, – подобно тому, как мое маркетинговое агентство immedia.by
исторически сфокусировано на рынке Беларуси.
Однако для представления своих технических проектов, таких как “My Finances”, и будущих разработок в качестве портфолио для более широкой, в том числе международной, аудитории, я планирую развивать отдельную площадку – antosh.tech
. Со временем именно antosh.tech
станет основным домом для моих IT-проектов. Там же я подробнее расскажу и о своей технологической компании immedia.tech
. И кто знает, может быть, там же появится информация и о совершенно новой идее – приложении loveandtech
, над которым я, вероятно, буду работать уже с другой командой и другими подходами.
Но это все – стратегические планы и взгляд за горизонт. А сегодня, здесь, на страницах antosh.by
, я хочу подробно поделиться историей создания и возможностями именно “My Finances v1.0”.
А сейчас – “My Finances”.
My Finances”: Зачем это приложение?
Идея “My Finances” родилась не на пустом месте. Как и многие, кто прошел или проходит через опыт эмиграции, я столкнулся с необходимостью более четкого и осознанного управления личными финансами. Новые условия, новые цели – будь то мысли о покупке автомобиля, недвижимости, инвестиции в собственное обучение или развитие бизнеса – все это требует понимания, куда уходят деньги и как формируются накопления.
Стандартные приложения для учета финансов либо казались избыточными и сложными для моих текущих задач, либо не давали нужной гибкости и простоты. Мне нужен был инструмент, который помог бы:
- Быстро и легко фиксировать основные потоки доходов и расходов.
- Видеть картину по конкретным финансовым целям или категориям трат.
- Планировать бюджет и отслеживать прогресс в накоплениях.
- И все это – в простом, понятном интерфейсе, доступном с любого устройства.
Так и появилось решение создать “My Finances” – для себя, для решения конкретной личной задачи, и, конечно, как отличная возможность прокачать навыки разработки и управления продуктом от А до Я.
Что умеет приложение?
“My Finances v1.0” – это мультиязычное (русский/английский) веб-приложение, созданное для того, чтобы помочь вам взять под контроль ваши доходы, расходы и накопления.
Вот ключевые возможности этой первой, MVP-версии: (Здесь будет ваш скриншот app - My Finaces.jpg
)
- Регистрация и вход пользователей: Каждому пользователю – свой защищенный аккаунт.
- Добавление финансовых операций:
- Три типа операций: Доход / Расход / Накопление.
- Пять предустановленных категорий (или целей), к которым можно отнести операцию: “Развитие бизнеса”, “Покупка недвижимости”, “Обучение”, “Инвестиции в образ (имидж)”, “Текущие затраты”.
- К каждой операции можно добавить сумму и текстовую заметку.
- Просмотр и управление записями: Все ваши финансовые операции отображаются в виде списка, их можно редактировать или удалять.
- Поиск: Вы можете легко найти нужную операцию по тексту в заметке.
- Итоги за месяц: Наглядная сводка по доходам, расходам и накоплениям за текущий месяц, а также общий баланс.
- Адаптивный дизайн: Приложением удобно пользоваться как на компьютере, так и на мобильных устройствах.
Это базовый функционал, который, тем не менее, уже позволяет заложить основу для эффективного управления личным или семейным бюджетом.

Под капотом:
Технологии и немного о процессе разработки
Создавая “My Finances”, я не только решал свою прикладную задачу, но и ставил цель поработать с определенным стеком технологий и немного поэкспериментировать с процессом.
Выбор технологического стека был продиктован несколькими соображениями:
Backend – Python и Flask: Python – мой основной язык, на котором я чувствую себя уверенно. Flask же я выбрал за его минималистичность, гибкость и низкий порог входа для небольших и средних веб-приложений. Он позволяет быстро стартовать и не навязывает строгую структуру, что идеально для pet-проекта, где хочется больше свободы. К тому же, экосистема Python предлагает массу готовых библиотек для любых нужд.
База данных – SQLite: Для MVP-версии приложения, где не ожидается сверхвысоких нагрузок или сложной многопользовательской логики с конкурентным доступом, SQLite подошел идеально. Это легковесная, файловая СУБД, которая не требует отдельного сервера, легко интегрируется с Python и отлично подходит для быстрого прототипирования и запуска. Все данные хранятся в одном файле, что упрощает бэкапы и перенос.
Frontend – HTML, CSS, JavaScript (и немного Jinja2): Здесь все довольно стандартно. HTML для структуры страниц, CSS для их оформления (в данном проекте я использовал кастомные стили, чтобы лучше прочувствовать процесс “с нуля”, хотя в будущем можно интегрировать и CSS-фреймворки типа Tailwind CSS или Bootstrap для ускорения). JavaScript использовался по минимуму для некоторых клиентских взаимодействий. Шаблонизатор Jinja2, идущий в комплекте с Flask, позволил удобно генерировать HTML-страницы на стороне сервера, передавая в них данные из Python.
Система контроля версий – Git и GitHub: Это уже стандарт де-факто в разработке. Весь код проекта с самого начала велся в Git, а GitHub использовался как удаленный репозиторий для хранения кода, отслеживания изменений и, как вы увидите дальше, для развертывания.
Среда разработки (IDE) – PyCharm: Мой выбор для Python-разработки. Удобный, мощный инструмент, который значительно ускоряет написание кода и отладку.
Развертывание (Deployment) – PythonAnywhere: Для быстрого и относительно простого вывода Flask-приложения в интернет PythonAnywhere – один из лучших вариантов, особенно для начинающих и для небольших проектов. У них есть бесплатный тариф, который отлично подходит для таких pet-проектов, как “My Finances”. Процесс настройки там достаточно хорошо документирован.
ИИ в роли команды разработки
Этот проект я делал полностью самостоятельно, но у меня был необычный “напарник” – искусственный интеллект (да-да, тот самый, который помогает мне сейчас писать и этот текст 😉). Для меня это был осознанный эксперимент: насколько эффективно можно использовать современные языковые модели в качестве полноценного ассистента на всех этапах разработки.
Как это выглядело на практике?
- Мозговой штурм и планирование: Мы (я и ИИ) обсуждали идеи, функционал, возможные проблемы. ИИ помогал структурировать мысли и предлагал разные варианты решений.
- Генерация кода: Для многих стандартных задач – будь то написание базовых Flask-маршрутов, функций для работы с базой данных SQLite, создание HTML-шаблонов или даже небольших JavaScript-сниппетов – я ставил задачу ИИ, а затем анализировал, тестировал и дорабатывал предложенный им код.
- Отладка: Когда возникали ошибки (а они, конечно, возникали!), я “скармливал” ИИ сообщения об ошибках и фрагменты кода, и он часто помогал найти причину или предлагал варианты исправления. Это было особенно полезно с ошибками на PythonAnywhere, где процесс отладки может быть не таким очевидным, как локально.
- Обучение и консультации: По ходу дела ИИ объяснял мне некоторые концепции Flask, SQLite или нюансы веб-разработки, с которыми я был знаком не так хорошо.
- Создание контента: Помощь в написании текстов, таких как это описание проекта для блога или посты для LinkedIn.
Моя роль в этом тандеме была ролью ведущего разработчика и Product Owner’а: я ставил задачи, определял архитектуру, принимал окончательные решения по коду, тестировал, интегрировал и, конечно, направлял “мысль” ИИ в нужное русло. Это не волшебная кнопка “сделать все за меня”, а скорее инструмент, который при правильном управлении может значительно ускорить некоторые процессы и дать новые идеи.
Конечно, были и свои нюансы: ИИ не всегда понимал задачу с первого раза, иногда предлагал неоптимальные или даже ошибочные решения, которые приходилось тщательно проверять и корректировать. Но в целом, опыт оказался крайне интересным и продуктивным. Это показало, как можно эффективно использовать современные технологии даже в соло-проекте, по сути, “масштабируя” свои возможности.
Трудности, Открытия и чему я научился
Путь от идеи до работающего MVP, даже для относительно небольшого pet-проекта, редко бывает абсолютно гладким. “My Finances” не стал исключением, и на этом пути меня ждали как свои “грабли”, так и ценные уроки.
С какими трудностями пришлось столкнуться:
Магия развертывания (Deployment): Пожалуй, один из самых “веселых” этапов. Несмотря на кажущуюся простоту PythonAnywhere, пришлось повозиться с:
- Виртуальными окружениями: Понять, как они создаются, активируются и правильно линковка с веб-приложением. Помните наши приключения с
_posixsubprocess
для Python 3.11, что заставило нас откатиться на более стабильную версию 3.10 и тщательно пересоздавать окружение? Это был хороший урок по совместимости и настройке серверного окружения. - WSGI-файл: Этот маленький файлик – сердце связи между сервером и вашим Flask-приложением. Неправильно указанный
project_home
, ошибки в импортеapplication
– все это приводило к тому, что приложение либо не запускалось вовсе, либо показывало стандартные страницы ошибок PythonAnywhere. Отладка этого требовала внимательности и изучения логов. - Пути к файлам и базе данных: Убедиться, что приложение на сервере правильно находит базу данных SQLite, статические файлы, шаблоны. Ошибка
unable to open database file
из-за вызоваinit_db()
на глобальном уровне вapp.py
– классический пример, который мы успешно побороли.
- Виртуальными окружениями: Понять, как они создаются, активируются и правильно линковка с веб-приложением. Помните наши приключения с
Синтаксис и отступы – вечные спутники Python-разработчика:
IndentationError
после редактированияapp.py
(когда пытались исправить проблему сwith app.app_context():
) – яркое напоминание о том, насколько Python чувствителен к отступам, и как легко их случайно нарушить, особенно при работе в разных редакторах или при копировании кода.Синхронизация версий (Local <-> GitHub <-> PythonAnywhere): Несколько раз мы сталкивались с тем, что на сайте загружалась “старая версия”. Это подчеркнуло важность четкого процесса
commit -> push -> fetch -> reset/pull
и проверки того, что именно актуальная версия кода с GitHub действительно развернута на сервере.Работа с ИИ-ассистентом – не всегда прямая дорога: Хотя ИИ был огромным подспорьем, это не “серебряная пуля”:
- Иногда ИИ генерировал код, который был неоптимальным, содержал ошибки или не совсем точно соответствовал задаче. Требовалось время на анализ, тестирование и доработку.
- Важность правильно сформулированного запроса (промпта) к ИИ. Чем точнее ставишь задачу, тем качественнее результат.
- Понимание ограничений ИИ: он хорош в шаблонных задачах и генерации кода по известным паттернам, но для уникальной логики или глубокой отладки все равно требуется участие человека.
Ключевые открытия и чему я научился (или что закрепил):
- Глубокое погружение во Flask: От простого “Hello, World!” до работающего CRUD-приложения с аутентификацией, сессиями, шаблонами Jinja2 и собственной системой локализации.
- Практическая работа с SQLite: Проектирование таблиц, написание SQL-запросов (пусть и через ORM-подобные конструкции или напрямую), понимание особенностей файловой БД.
- Основы DevOps на примере PythonAnywhere: Понимание процесса развертывания веб-приложения, настройки сервера (WSGI), управления виртуальным окружением, работы с логами сервера и ошибок. Это бесценный практический опыт.
- Систематическая отладка: Чтение логов стало почти родным занятием! Умение анализировать сообщения об ошибках, локализовать проблему – ключевой навык разработчика, и этот проект его отлично прокачал.
- Ценность Git и GitHub: Не просто как хранилища кода, а как инструмента для управления версиями, отката к предыдущим состояниям и синхронизации между разными средами. Команда
git reset --hard
стала почти магической! - Эффективное взаимодействие с ИИ: Этот проект научил меня не просто “просить ИИ написать код”, а использовать его как полноценный инструмент: для генерации идей, прототипирования, рефакторинга, поиска информации и даже для создания такого контента, как эта статья. Это требует критического мышления и умения правильно ставить задачи.
- Удовлетворение от созданного: Увидеть, как твоя идея превращается в работающий продукт, которым могут пользоваться (пусть пока это только MVP для себя и портфолио) – это огромное удовлетворение и мотивация двигаться дальше!
Этот проект стал для меня не просто строчкой в портфолио, а настоящей школой, где теория подкреплялась интенсивной практикой, а каждая решенная проблема добавляла уверенности и новых знаний.
Текущий статус "My Finances v1.0" (MVP)

Взгляд в будущее
Итак, на сегодняшний день “My Finances v1.0” – это работающий MVP (Minimum Viable Product), то есть первая версия приложения, обладающая основным заявленным функционалом. Как я уже упоминал, оно развернуто и доступно онлайн, и вы можете самостоятельно его опробовать.
Что представляет собой MVP на данный момент: Это полноценный инструмент, который позволяет:
- Создать личный кабинет для безопасного хранения финансовых данных.
- Фиксировать доходы, расходы и переводы в накопления, распределяя их по предустановленным категориям/целям.
- Добавлять описания и суммы к каждой операции.
- Просматривать, редактировать и удалять свои записи.
- Осуществлять поиск по заметкам.
- Получать базовую сводку по финансам за текущий месяц и общий баланс.
- Комфортно работать с приложением как на компьютере, так и на телефоне благодаря адаптивному дизайну и выбору языка (русский/английский).
“My Finances v1.0” – это прочная основа, созданная для решения ключевой задачи: дать простой и понятный инструмент для первичного контроля личных финансов. Но, как и у любого развивающегося продукта, у меня уже есть целый список идей и планов по его дальнейшему улучшению.
Планы на будущее (Roadmap):
Развитие “My Finances” я вижу в нескольких направлениях:
- Расширенный поиск и фильтрация: Сейчас поиск работает по текстовым заметкам. В планах – добавить возможность фильтрации операций по категориям (доходов/расходов/накоплений), датам, суммам, а также создать отдельную страницу с расширенными инструментами поиска и фильтрации.
- Визуальные улучшения и UX: Я планирую поработать над дизайном интерфейса, сделать его еще более интуитивным, приятным глазу и, возможно, добавить элементы кастомизации. Также хочется собрать обратную связь от реальных пользователей для улучшения пользовательского опыта.
- Добавление продвинутой аналитики: Текущие сводки – это только начало. В будущем хотелось бы видеть графики, диаграммы, возможность анализировать траты за разные периоды, сравнивать категории, отслеживать достижение финансовых целей более наглядно.
- Мобильные приложения: Хотя текущая веб-версия адаптивна, я рассматриваю возможность создания на ее основе полноценных мобильных приложений для AppStore и Google Play Store, чтобы сделать использование “My Finances” еще удобнее “на ходу”.
- Разместить веб-версию приложения с общей базой данных по адресу antosh.tech вместо проекта блога на английском языке.
Конечно, реализация этих планов будет зависеть от многих факторов, включая наличие свободного времени и обратную связь от тех, кто попробует приложение. Я открыт для ваших идей и предложений!
Попробуйте “My Finances”
и поделитесь мнением!
Я буду очень рад, если вы найдете время протестировать “My Finances v1.0” и поделитесь своими впечатлениями. Для меня, как для разработчика и автора этого проекта, любая обратная связь будет невероятно ценной!
Попробовать приложение вживую: Вы можете зарегистрироваться и начать вести учет своих финансов прямо сейчас по ссылке: https://antoshby.pythonanywhere.com/
Заглянуть в исходный код: Весь проект с открытым исходным кодом и доступен на GitHub. Буду рад, если вы посмотрите, а может, даже найдете что-то интересное для себя или предложите улучшения: https://github.com/antoshby/finance-app/
Что меня особенно интересует:
- Насколько удобным и понятным вам показался интерфейс?
- Каких функций вам, возможно, не хватило в первую очередь?
- Заметили ли вы какие-либо ошибки или странности в работе приложения?
- Любые другие ваши мысли, идеи или предложения!
Оставляйте свои комментарии прямо здесь, под этой статьей, или создавайте “Issues” на GitHub, если это касается предложений по коду или багам.
Этот проект – мой первый самостоятельный шаг в веб-разработке полного цикла, и он очень важен для меня. Спасибо, что уделили время его изучению! Надеюсь, “My Finances” окажется для кого-то полезным, а мой опыт – интересным.
Следите за обновлениями в блоге – впереди еще много идей!