Doktally — Платформа за фактуриране и финансово управление

Накратко

Doktally е личен продукт, създаден да покрива реални нужди около фактуриране и финансово управление чрез практичен и модулен подход. Платформата комбинира работа с документи, справки, административни процеси и разширяема бизнес логика по начин, който остава ясен, лек и готов за развитие.

Подзаглавие

Продуктово ориентирана платформа за фактуриране, справки и оперативни процеси за фрийлансъри и малък бизнес.

Област

FinTech / Фактуриране / Операции за малък бизнес

Потребители

Фрийлансъри, самостоятелни професионалисти и малки компании, които имат нужда от практично фактуриране, работа с документи и справки без тежестта на голяма ERP система.

Роля

Основател / Product Engineer

Предизвикателство

Много системи за фактуриране покриват само базовия сценарий: създаване и изпращане на документ. Реалната работа обаче почти винаги включва повече — жизнен цикъл на документа, напомняния, прикачени файлове, справки, бъдещи данъчни процеси, административен контрол и възможност за адаптация. Doktally е създаден именно за тези нужди, без продуктът да става тромав и труден за поддръжка.

За какво отговарях

Продуктова концепция, backend архитектура, frontend имплементация, моделиране на домейна, дизайн на справки, admin UX, подход за deployment и дългосрочно развитие на продукта.

Подход

Built a maintainable Java/Spring Boot + Angular product with domain workflows shaped around real operational use.

Резултати

Изградена е работеща продуктова основа върху реални use case-и, с модулна архитектура, двуезична поддръжка, справки и структура, която може да се разширява към известия, лицензиране, ДДС процеси и други оперативни функционалности.

Подробности

Обзор

Doktally е продукт, който започнах, за да реша практичен проблем: исках система за фактуриране и финансово управление, която отразява реалната работа на независим професионалист или малък бизнес, а не само опростен демо сценарий.

Платформата е изградена около една проста идея: бизнес софтуерът трябва да подпомага реалната оперативна работа, а не само генерирането на документи. Това означава продуктът да поддържа администрация, справки, прикачени файлове, напомняния, бъдещи данъчни процеси и ясна структура, която може да се развива във времето.

Като личен продукт Doktally ми даде възможност да съчетая продуктово мислене, backend архитектура и admin-heavy frontend в една цялостна система.


Контекст

Повечето леки системи за фактуриране се справят добре с първата стъпка: създаване на документ.

Сложността идва след това:

Исках система, която остава фокусирана, но не се разпада в момента, в който процесът стане по-реалистичен.


Цели

Проектът имаше няколко паралелни цели:


Моята роля

Това е продукт, воден от основателя и изграден инженерно. Аз нося отговорност от край до край за:

Тази отговорност означава постоянни компромиси между скорост, поддръжка, обхват и бъдеща разширяемост.


Подход към решението

Избрах модулна архитектура с Java и Spring Boot в backend-а, Angular във frontend-а и MongoDB за по-гъвкаво моделиране на домейна.

Платформата е създадена така, че да поддържа както днешните use case-и, така и бъдещи разширения, без текущият продукт да изглежда свръхинженерен.

flowchart TD
    A[Angular Client] --> B[Spring Boot API]
    B --> C[MongoDB]
    B --> D[RabbitMQ]
    B --> E[Document / Invoice Module]
    B --> F[Notification Module]
    B --> G[Reporting Module]

    E --> H[PDF / Attachments / Document Lifecycle]
    F --> I[Email Templates / Reminders]
    G --> J[Revenue / Operational Insights]

На ниво UI се фокусирах силно върху удобството за администрация. Продуктът съдържа форми, филтри, списъци, drilldown екрани, справки и домейн-специфични действия, затова frontend-ът трябваше да остане структуриран и лесен за навигация.

На ниво backend запазих системата достатъчно модулна, за да поддържа бъдещи възможности като:


Ключови решения

1. Изграждане около реални процеси, а не само около ентитети

Вместо да мисля само в CRUD екрани, третирах продукта като набор от оперативни потоци:

Това направи системата по-реалистична още от самото начало.

2. Admin частта да бъде продукт, а не остатъчна мисъл

Много бизнес системи се провалят, защото административната част става хаотична. Тук целенасочено инвестирах в консистентен layout, tabbed editing, повторно използваеми UI модели и по-добра информационна плътност, така че продуктът да остане използваем и при растящ обхват.

3. Разширяемост вместо фалшива простота

Една система може да изглежда проста само защото игнорира трудните части. Аз предпочетох структура, която може да поеме бъдеща сложност без нужда от пренаписване.


Примерен процес

Една от важните идеи в Doktally е, че документът не е просто PDF, който се генерира веднъж. Той е част от по-дълъг процес.

sequenceDiagram
    participant U as User
    participant UI as Doktally UI
    participant API as Backend API
    participant DOC as Document Module
    participant NOTIF as Notification Module

    U->>UI: Create or update invoice
    UI->>API: Submit document data
    API->>DOC: Validate and persist document
    DOC-->>API: Stored document entry
    API-->>UI: Return updated state

    U->>UI: Trigger send action
    UI->>API: Request email sending
    API->>DOC: Resolve existing PDF / attachment
    API->>NOTIF: Send email using template and attachment
    NOTIF-->>API: Delivery result
    API-->>UI: Show success or failure

Този процес е важен, защото свързва бизнес данните, генерираните артефакти и комуникационните стъпки в едно последователно продуктово изживяване.


Предизвикателства

Баланс между обхват и продуктова дисциплина

Когато продуктът се изгражда от основателя, изкушението винаги е да се добавя още. Истинското предизвикателство е да се реши кое заслужава first-class място и кое трябва да почака.

При Doktally целта не беше да се създаде гигантски ERP. Целта беше да се изгради чиста оперативна платформа, която да расте в правилните посоки.

Богат UI без шум

Admin-heavy приложенията често се претоварват с бутони, колони, филтри и форми. Голяма част от работата беше в това UI-ът да остане разбираем, като същевременно запази достатъчно сила и гъвкавост.

Ранно мислене за справки

Справките са много по-лесни, когато домейн моделът е проектиран с тях предвид. Третирах reporting-а като базова възможност, а не като нещо залепено накрая.


Резултат

Doktally се разви в стабилна продуктова основа със следните силни страни:

Проектът е и силен пример за начина, по който работя, когато държа целия цикъл: от продуктовата логика и системната структура до детайлите в имплементацията и UX решенията.


Какво бих подобрил следващо

Следващите приоритетни подобрения за мен са:


Извод

Doktally не е просто упражнение по програмиране. Това е инженерно усилие с продуктова форма, изградено върху реални оперативни нужди.

То показва как подхождам към софтуера, когато трябва да мисля отвъд кода:

Технологии

Java, Spring Boot, Angular, TypeScript, MongoDB, RabbitMQ, Docker, PrimeNG, Keycloak

Ангажимент

PERSONAL_PRODUCT

Период

2024-03 – досега