Skip to content
GitHub
PřehledProblémCo jsem postavilTechnologie a pročNejtěžší částVýsledek
Zpět na práci

Fullstack SaaS · 2026

Outlay

Každá opakovaná platba stále na očích. Sleduj svá předplatná, odpočítávej každé obnovení a dostaň upozornění dřív, než ti odejdou peníze z účtu.

Živá ukázka(otevře se v novém okně)Zdrojový kód(otevře se v novém okně)
Outlay: rozhraní aplikace

Role

Sólo projekt. Design, frontend i backend.

Technologie

FrontendNext.jsReactTailwind CSSnext-intl
BackendConvexConvex AuthPlánované funkceNodemailer
InfraVercelTypeScript

Přehled

Outlay je sledovač předplatných: jeden přehled všech opakovaných plateb, živý odpočet do každého obnovení a e-mailové upozornění dřív, než ti přijde platba, aby tě nic nepřekvapilo.

Problém

Předplatné se snadno založí a snadno zapomene a jeho cena potichu roste. Lidem se účtují věci, které chtěli zrušit, a zdražení si všimnou až na výpisu. Chtěl jsem jeden přehled, který ukáže skutečné měsíční náklady a ozve se dřív, než peníze odejdou, ne potom.

Co jsem postavil

  • Přehled všech předplatných se skutečným měsíčním součtem
  • Podpora více měn (USD / EUR / CZK / GBP) s převodem na jedno srovnatelné číslo
  • Předvyplněný katalog populárních služeb pro přidání na jedno klepnutí, s cenou, logem i barvou značky
  • Platební cykly (týdně / měsíčně / čtvrtletně / ročně) přepočtené na jednotné měsíční náklady
  • Odpočet do obnovení a e-mailové upozornění před každou platbou, s pojistkou proti duplicitě
  • Sledování změny ceny, které pamatuje předchozí cenu a včas odhalí zdražení
  • Stav pozastaveno / aktivní a kategorie výdajů (streaming, hudba, software, hraní, …)
  • Přihlášení, čekací listina k spuštění a plná lokalizace (next-intl)

Technologie a proč

Outlay jsem postavil na Convexu záměrně jako protiklad k ručně psanému stacku Journea. Convex nabízí reaktivní backend (změny dat se posílají do UI živě bez ruční práce s cache) a drží schéma, serverové funkce i přihlašování v jednom typovaném systému. Připomínkové e-maily běží na plánovaných (cron) funkcích přes Nodemailer a katalog služeb je nasazený v databázi, takže ho lze upravit bez nového nasazení.

Nejtěžší část

  • Sjednotit různé platební cykly a měny do jednoho srovnatelného měsíčního čísla.
  • Posílat připomínkové e-maily bez duplicit: pojistka `lastReminderSent` navázaná na datum obnovení.
  • Držet jeden katalog se základem v USD, ale každému uživateli ukázat správnou lokální cenu (např. v CZK).

Výsledek

Nasazená aplikace ve stylu SaaS a záměrný protějšek k Journeu. Dva projekty, dvě filozofie backendu: jeden vlastní Express + MySQL, druhý moderní reaktivní BaaS. Portfolio tak ukazuje, že umím zvážit kompromisy, ne jen jeden způsob.

Případová studie

Journeo

© 2026 Petr Vorlíček

GitHub Instagram

Built with Next.js & Framer Motion