Vasil Georgiev
Personal project2026

Pink Planner

Моят розов планер: a personal life planner

An installable planner in Bulgarian with separate accounts for each person: a daily plan, calendar, yearly goals, income and budget, places visited, books, new things tried, workouts and skincare routines, with photo uploads and a full data export.

Open live app

Demo access

Pink Planner

  • Demo user

    Loginasd123qwe@gmail.com
    Password••••••••••
Open Pink Planner

Demo accounts with example data only.

planner.demodomain.site

Role
Solo: design, front end, API, deployment
Platforms
Web · Installable PWA
Tech
React 19ViteReact Router 7TanStack QueryFastify 5PostgreSQL 16Drizzle ORMZodDocker
  • 11

    areas of life, one planner

  • 18

    database tables, data kept per user

  • 20

    photos per upload, up to 10 MB each

  • 14

    daily backups kept, database and photos

The problem

A planner made for one person's actual life

Planner apps are either too generic or split across many apps: tasks in one, budget in another, workouts somewhere else. This is one warm, pink planner in Bulgarian that covers everything its users want to track, and nothing they don't.

It runs on my own server, installs on a phone like an app, and every user's data stays separate and exportable.

Walkthrough

01 · Calendar

Days, labels and what's coming up

A month view with built-in and custom labels (up to 50 per user), a day plan with tasks and times, and upcoming events at a glance.

02 · Money

Income and budget that talk to each other

Income is recorded once and the monthly budget picks it up automatically; expenses are grouped by category so it's clear what is left for the month. Amounts are in euro.

03 · On the phone

Routines, places and memories

As an installed PWA it lives on the home screen: workout plans and logs, morning and evening skincare routines, places visited with photo albums, books read and new things tried.

  • Photo uploads, several at a time
  • Change password signs out every other device
  • Export all your data as JSON

Under the hood

How it's built

  • 01

    Shared types end to end

    An npm workspace shares Zod schemas, calendar labels and date, money and budget helpers between the React client and the Fastify API.

  • 02

    Secure by default

    Cookie sessions with argon2 password hashing, helmet and rate limiting on the API, and sign-up that can be switched off once everyone has an account.

  • 03

    Self-hosted

    Docker Compose with PostgreSQL and an uploads volume behind Caddy; migrations run on start, a health check reports database access, and a backup script keeps 14 days of database and photo archives.