Hristomir Kotzev

Hristomir Kotzev

Web developer · Sofia, Bulgaria

I build web apps and run them: online shops, booking systems, SaaS tools and a mail client for Linux and Android, from the database to the server they live on. Every client project comes with its own admin panel, built around how that business actually works.

My own products

Screenshot of IzoMailer — Home IzoMailer on a phone — Home
Home

IzoMailer

A clean, private email app for Linux and Android. New mail arrives within seconds, search works offline, and any email can become a task.

Its own connection to the mail server (IMAP IDLE), no push service in between. Linux updates come from my own signed APT repository.

  • Rust
  • Tauri 2
  • React
  • TypeScript
  • SQLite
Screenshot of Такси за вход (building fees) — Home Такси за вход (building fees) on a phone — Home
Home

Такси за вход (building fees)

Fees, payments and expenses for Bulgarian apartment buildings: who paid what and when, imported bank statements, one-off collections and documents.

Documents are stored encrypted. Covered by end-to-end tests in a real browser.

Admin panel The whole app is the panel: building managers keep every apartment's fees, payments, expenses and documents, and residents see what concerns them.
  • TanStack Start
  • React
  • Drizzle
  • PostgreSQL
  • Playwright
Screenshot of estates.today — Home estates.today on a phone — Home
Home

estates.today

Property listings for sale and rent in Bulgaria: apartments, houses and offices, with agencies and a map.

A Go API with a React front end rendered on the server.

Admin panel Agencies register, invite their agents with a link and manage their listings from their own dashboard; the site admin manages agencies, locations and listing options.
  • Go
  • Fiber
  • PostgreSQL
  • Redis
  • React
  • TanStack Start
Screenshot of koli-bg sign-in — Sign in koli-bg sign-in on a phone — Sign in
Sign in

koli-bg sign-in

Single sign-on for my apps: one account, with email and password, Google or Facebook, and OAuth2 tokens for the other services.

Tasks and other apps sign their users in through it.

  • PHP 8.4
  • Symfony
  • OAuth2 server
  • PostgreSQL

Tasks

A small to-do service with shared workspaces. IzoMailer uses it to turn emails into tasks.

Attachments are encrypted per workspace before they are stored. Data export and account deletion are built in (GDPR).

  • Go
  • Fiber
  • PostgreSQL
  • OAuth2
  • age encryption

Client work

Screenshot of Ди Ел Сървиз (dielservice.com) — Home Ди Ел Сървиз (dielservice.com) on a phone — Home
Home

Ди Ел Сървиз (dielservice.com)

Online shop for Kärcher cleaning equipment: pressure washers, vacuum cleaners, steam cleaners and spare parts, delivered across Bulgaria.

In use for years; a new version on Symfony and FrankenPHP (PHP 8.5) with Econt and Speedy courier integration is on the way.

Admin panel Products, categories, brands, promotions and the home page, orders and their statuses, discount codes, review invitations and the shop's texts. The new version adds live charts of visitors online.
  • PHP
  • Phalcon
  • Symfony
  • PostgreSQL
  • Redis
Screenshot of Angelina Peacock — Home Angelina Peacock on a phone — Home
Home

Angelina Peacock

A beauty salon's website with online appointment booking, used all day, in Bulgarian, English and French.

Bookings and their emails go through a background job queue.

Admin panel Built around how the salon works: an appointment calendar per employee, work schedules and shifts, salaries worked out from the appointments, clients, services and their prices, products, brands and orders, plus the site's texts and translations.
  • PHP 8.2
  • Phalcon 5
  • PostgreSQL
  • Redis
Screenshot of Sedlarski Art — Home Sedlarski Art on a phone — Home
Home

Sedlarski Art

Website and shop of the artist Jivko Sedlarski: sculptures, drawings, projects and his studio.

Its own admin for the artist's works.

Admin panel Made for the artist: his works with their photos, blog articles, the home page slider, the biography and studio pages, and translations of the whole site.
  • PHP 8.2
  • Phalcon 5
  • PostgreSQL
Screenshot of Blogomobil — Home Blogomobil on a phone — Home
Home

Blogomobil

Car news, test drives and tips for drivers: a blog with more than 2,000 articles.

Its own admin with a rich-text editor.

Admin panel Articles with a rich-text editor and a picture library, categories, and daily view statistics per article.
  • PHP 8.2
  • Phalcon 5
  • PostgreSQL
  • Redis

Libraries and work in progress

rostercal

A small calendar library: a month view and a resource time grid (a paid feature in FullCalendar), with drag and drop and no dependencies. MIT licensed.

Install with npm install @izopi4a/rostercal.

  • TypeScript
  • npm
  • Vitest
  • Playwright

Garage

Service history for your cars: photograph a workshop invoice and AI reads it into a service record.

Not public yet.

  • TanStack Start
  • React
  • Drizzle
  • PostgreSQL
  • Gemini API

Infrastructure

From Google Cloud to Hetzner

Moved every production app above from Google Cloud to Hetzner in one day and cut hosting from about €100 to €35 a month.

Own Docker registry; PostgreSQL over TLS with nightly backups kept off the server; self-hosted error tracking and uptime checks; secrets encrypted in git; a signed APT repository. Firewalls outside the servers, everything scripted.

  • Hetzner Cloud
  • Docker
  • Traefik
  • PostgreSQL
  • GlitchTip
  • SOPS + age
  • Bash

Get in touch

Have a project in mind, or want to know more about one of these? Write to me.