antosh.by

app - My Finaces

My Finances: Pet-проект на Python

Сегодня я хочу сделать первый шаг в формировании своего публичного портфолио как продакта (и разработчика), Pet-проект на Python — "My Finances v1.0".

Содержание

Первый 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” не стал исключением, и на этом пути меня ждали как свои “грабли”, так и ценные уроки.

С какими трудностями пришлось столкнуться:

  1. Магия развертывания (Deployment): Пожалуй, один из самых “веселых” этапов. Несмотря на кажущуюся простоту PythonAnywhere, пришлось повозиться с:

    • Виртуальными окружениями: Понять, как они создаются, активируются и правильно линковка с веб-приложением. Помните наши приключения с _posixsubprocess для Python 3.11, что заставило нас откатиться на более стабильную версию 3.10 и тщательно пересоздавать окружение? Это был хороший урок по совместимости и настройке серверного окружения.
    • WSGI-файл: Этот маленький файлик – сердце связи между сервером и вашим Flask-приложением. Неправильно указанный project_home, ошибки в импорте application – все это приводило к тому, что приложение либо не запускалось вовсе, либо показывало стандартные страницы ошибок PythonAnywhere. Отладка этого требовала внимательности и изучения логов.
    • Пути к файлам и базе данных: Убедиться, что приложение на сервере правильно находит базу данных SQLite, статические файлы, шаблоны. Ошибка unable to open database file из-за вызова init_db() на глобальном уровне в app.py – классический пример, который мы успешно побороли.
  2. Синтаксис и отступы – вечные спутники Python-разработчика: IndentationError после редактирования app.py (когда пытались исправить проблему с with app.app_context():) – яркое напоминание о том, насколько Python чувствителен к отступам, и как легко их случайно нарушить, особенно при работе в разных редакторах или при копировании кода.

  3. Синхронизация версий (Local <-> GitHub <-> PythonAnywhere): Несколько раз мы сталкивались с тем, что на сайте загружалась “старая версия”. Это подчеркнуло важность четкого процесса commit -> push -> fetch -> reset/pull и проверки того, что именно актуальная версия кода с GitHub действительно развернута на сервере.

  4. Работа с ИИ-ассистентом – не всегда прямая дорога: Хотя ИИ был огромным подспорьем, это не “серебряная пуля”:

    • Иногда ИИ генерировал код, который был неоптимальным, содержал ошибки или не совсем точно соответствовал задаче. Требовалось время на анализ, тестирование и доработку.
    • Важность правильно сформулированного запроса (промпта) к ИИ. Чем точнее ставишь задачу, тем качественнее результат.
    • Понимание ограничений ИИ: он хорош в шаблонных задачах и генерации кода по известным паттернам, но для уникальной логики или глубокой отладки все равно требуется участие человека.

Ключевые открытия и чему я научился (или что закрепил):

  1. Глубокое погружение во Flask: От простого “Hello, World!” до работающего CRUD-приложения с аутентификацией, сессиями, шаблонами Jinja2 и собственной системой локализации.
  2. Практическая работа с SQLite: Проектирование таблиц, написание SQL-запросов (пусть и через ORM-подобные конструкции или напрямую), понимание особенностей файловой БД.
  3. Основы DevOps на примере PythonAnywhere: Понимание процесса развертывания веб-приложения, настройки сервера (WSGI), управления виртуальным окружением, работы с логами сервера и ошибок. Это бесценный практический опыт.
  4. Систематическая отладка: Чтение логов стало почти родным занятием! Умение анализировать сообщения об ошибках, локализовать проблему – ключевой навык разработчика, и этот проект его отлично прокачал.
  5. Ценность Git и GitHub: Не просто как хранилища кода, а как инструмента для управления версиями, отката к предыдущим состояниям и синхронизации между разными средами. Команда git reset --hard стала почти магической!
  6. Эффективное взаимодействие с ИИ: Этот проект научил меня не просто “просить ИИ написать код”, а использовать его как полноценный инструмент: для генерации идей, прототипирования, рефакторинга, поиска информации и даже для создания такого контента, как эта статья. Это требует критического мышления и умения правильно ставить задачи.
  7. Удовлетворение от созданного: Увидеть, как твоя идея превращается в работающий продукт, которым могут пользоваться (пусть пока это только MVP для себя и портфолио) – это огромное удовлетворение и мотивация двигаться дальше!

Этот проект стал для меня не просто строчкой в портфолио, а настоящей школой, где теория подкреплялась интенсивной практикой, а каждая решенная проблема добавляла уверенности и новых знаний.

Текущий статус "My Finances v1.0" (MVP)

Взгляд в будущее

Итак, на сегодняшний день “My Finances v1.0” – это работающий MVP (Minimum Viable Product), то есть первая версия приложения, обладающая основным заявленным функционалом. Как я уже упоминал, оно развернуто и доступно онлайн, и вы можете самостоятельно его опробовать.

Что представляет собой MVP на данный момент: Это полноценный инструмент, который позволяет:

  • Создать личный кабинет для безопасного хранения финансовых данных.
  • Фиксировать доходы, расходы и переводы в накопления, распределяя их по предустановленным категориям/целям.
  • Добавлять описания и суммы к каждой операции.
  • Просматривать, редактировать и удалять свои записи.
  • Осуществлять поиск по заметкам.
  • Получать базовую сводку по финансам за текущий месяц и общий баланс.
  • Комфортно работать с приложением как на компьютере, так и на телефоне благодаря адаптивному дизайну и выбору языка (русский/английский).

“My Finances v1.0” – это прочная основа, созданная для решения ключевой задачи: дать простой и понятный инструмент для первичного контроля личных финансов. Но, как и у любого развивающегося продукта, у меня уже есть целый список идей и планов по его дальнейшему улучшению.

Планы на будущее (Roadmap):

Развитие “My Finances” я вижу в нескольких направлениях:

  1. Расширенный поиск и фильтрация: Сейчас поиск работает по текстовым заметкам. В планах – добавить возможность фильтрации операций по категориям (доходов/расходов/накоплений), датам, суммам, а также создать отдельную страницу с расширенными инструментами поиска и фильтрации.
  2. Визуальные улучшения и UX: Я планирую поработать над дизайном интерфейса, сделать его еще более интуитивным, приятным глазу и, возможно, добавить элементы кастомизации. Также хочется собрать обратную связь от реальных пользователей для улучшения пользовательского опыта.
  3. Добавление продвинутой аналитики: Текущие сводки – это только начало. В будущем хотелось бы видеть графики, диаграммы, возможность анализировать траты за разные периоды, сравнивать категории, отслеживать достижение финансовых целей более наглядно.
  4. Мобильные приложения: Хотя текущая веб-версия адаптивна, я рассматриваю возможность создания на ее основе полноценных мобильных приложений для AppStore и Google Play Store, чтобы сделать использование “My Finances” еще удобнее “на ходу”.
  5. Разместить веб-версию приложения с общей базой данных по адресу antosh.tech вместо проекта блога на английском языке.

Конечно, реализация этих планов будет зависеть от многих факторов, включая наличие свободного времени и обратную связь от тех, кто попробует приложение. Я открыт для ваших идей и предложений!

Попробуйте “My Finances”

и поделитесь мнением!

Я буду очень рад, если вы найдете время протестировать “My Finances v1.0” и поделитесь своими впечатлениями. Для меня, как для разработчика и автора этого проекта, любая обратная связь будет невероятно ценной!

Попробовать приложение вживую: Вы можете зарегистрироваться и начать вести учет своих финансов прямо сейчас по ссылке: https://antoshby.pythonanywhere.com/

Заглянуть в исходный код: Весь проект с открытым исходным кодом и доступен на GitHub. Буду рад, если вы посмотрите, а может, даже найдете что-то интересное для себя или предложите улучшения: https://github.com/antoshby/finance-app/

Что меня особенно интересует:

  • Насколько удобным и понятным вам показался интерфейс?
  • Каких функций вам, возможно, не хватило в первую очередь?
  • Заметили ли вы какие-либо ошибки или странности в работе приложения?
  • Любые другие ваши мысли, идеи или предложения!

Оставляйте свои комментарии прямо здесь, под этой статьей, или создавайте “Issues” на GitHub, если это касается предложений по коду или багам.

Этот проект – мой первый самостоятельный шаг в веб-разработке полного цикла, и он очень важен для меня. Спасибо, что уделили время его изучению! Надеюсь, “My Finances” окажется для кого-то полезным, а мой опыт – интересным.

Следите за обновлениями в блоге – впереди еще много идей!

Поделиться в социальных сетях...
Facebook
Twitter
VK
Автор
Антон Ошмян
Антон Ошмян

Выстраиваю СИЛЬНЫЕ БРЕНДЫ
С помощью интернет-маркетинга

5/5
Свежие публикации...