Назад к портфолио
Fullstack веб-приложения

Rute — SaaS для фрилансеров

Задача

Построить единую систему операционного контроля для индивидуальных фрилансеров и самозанятых — от задач и времени до финансов и документов.

Проблема

Фрилансер работает в 5–7 разных инструментах одновременно: задачи в Notion, время в Toggl, финансы в таблицах, документы в Word. Это не просто неудобно — это потери: забытые счета, неучтённое время, просроченные дедлайны.

💡

Инсайт

Проблема не в отсутствии инструментов — их сотни. Проблема в том, что ни один из них не знает о связях между объектами: проект → задача → потраченное время → счёт → акт. Нужна не ещё одна таблица, а система с единой моделью данных.

Вклад

Полное ведение проекта: продуктовая идея, архитектура, дизайн, разработка frontend и backend, интеграция AI, биллинг, деплой, поддержка

Результат

Beta-версия с 515+ покрытыми пользовательскими сценариями, Free/Pro биллингом через YooKassa, AI-помощником и автоматической генерацией документов

React TypeScript Node.js PostgreSQL Prisma Bun Docker YooKassa AI

Я провёл несколько лет как SEO-специалист на фрилансе. К концу каждого месяца у меня было стойкое ощущение, что я работал много, а результат размыт — непонятно, сколько реально заработал, какой проект съел больше всего времени, кому ещё не выставил счёт.

Я перепробовал десятки инструментов. Каждый решал одну проблему, но создавал новую — контекстное переключение, дублирование данных, ручная синхронизация. Я понял: мне не нужен ещё один таск-менеджер. Мне нужна операционная система для фрилансера.

Анализ: почему существующие решения не работают

Я провёл собственный аудит инструментов, которыми пользуются фрилансеры:

  • Jira / Linear — построены под команды, избыточны для одного
  • Toggl / Clockify — только время, нет связи с финансами
  • FreshBooks / Invoce — только биллинг, нет задач и времени
  • Notion — гибкий, но требует часов настройки и не считает деньги автоматически

Ключевой инсайт: фрилансер — это мини-компания из одного человека. Ему нужна ERP-система, упрощённая до одного экрана.

Решение: единая модель данных

Я спроектировал систему вокруг одной идеи — всё связано:

Клиент → Проект → Задача → Время → Финансы → Документ

Каждый объект знает о соседних. Закрыл задачу — время попало в отчёт. Завершил проект — система сама предложила выставить счёт по реально потраченному времени.

Архитектура

Проект разделён на два независимых приложения:

rute-site — публичный SEO-лендинг с SSR (Vite + React Router), оптимизированный для поисковой выдачи по запросам фрилансеров.

lk-rute-service — основной продукт:

  • Frontend: React 18 + TypeScript, Tailwind CSS, shadcn/ui, TanStack Query
  • Backend: Node.js + Express, PostgreSQL + Prisma ORM
  • Биллинг: YooKassa с обработкой webhook, автопереключением тарифов
  • Безопасность: JWT + refresh-токены, HttpOnly cookies, Fail2ban

Что умеет продукт

  • Проекты и задачи — кастомные статусы, приоритеты, повторяемые задачи, фильтры
  • Учёт времени — встроенный таймер + ручное логирование с привязкой к задачам
  • Финансы — управление счетами, учёт долгов клиентов, расчёт фактической ставки по проекту
  • Генерация документов — счёт, акт, договор в PDF прямо из интерфейса
  • AI-помощник — генерация описаний задач, формирование отчётов по проектам

Процесс: продуктовый подход к разработке

Я работал как продакт и разработчик одновременно. Перед каждой функцией — пользовательский сценарий. Всего покрыто 515+ сценариев, каждый задокументирован.

Написал полноценную документацию: Architecture Decision Records, Security Threat Model, Performance Scaling Plan. Это не для галочки — это помогло не принимать импульсивных технических решений.

Деплой полностью автоматизирован через Docker + pnpm workspaces. Поднять весь стек с нуля — 15 минут.

Результат

Rute в beta. Я сам использую его каждый день для ведения своих проектов — это главный показатель того, что продукт работает. Биллинг Free/Pro через YooKassa подключён и работает в проде.

Главный вывод: лучший способ понять, нужен ли продукт — сделать его и использовать самому.

Вернуться к списку проектов