Lior Adan

Full-stack engineer & technical lead

Full-stack since 2019, based in Tel Aviv. I take a feature from the data model to the screen and ship it.

Stack
TypeScript, React / Next.js, Node.js, PostgreSQL, Cloudflare
Back to the whole tower

Building the model…

Floor 2 of 5 of the tower

Loudspeaker

Technical lead and full-stack engineer · demo system

A calendar that actually sends things, and says so when one doesn’t go out.

The problem

Creators and small teams post to several channels from several tabs. The timing lives in a spreadsheet, the approval lives in a chat thread, and “did that go out?” has no reliable answer.

The rules I set

  • A post has one home and many destinations.
  • Nothing goes out without an explicit schedule and an explicit approval.
  • A failed send is visible and can be retried. It is never silent.

What I built

A phone-first app for writing, rescheduling and approving posts, and a scheduler that runs at the edge on Cloudflare. Supabase holds the posts, the schedule and each channel’s connection. Roles decide who may draft, approve or publish.

How it’s layered

  1. Client The mobile app: write, reschedule, approve.
  2. Scheduler Cloudflare fires each post at its time and records the result.
  3. Data Supabase: posts, schedules, channel connections, roles.

Decisions

  • Every channel sits behind one adapter interface, so adding a channel doesn’t touch the scheduler.
  • Sending is idempotent: a retry can’t publish the same post twice.
  • Roles are checked where the data lives, not only in the app.

Where it stands

A demo system with invented channels and no real accounts. It shows how the pieces fit and where each failure would show up.

Supabase · Cloudflare · Mobile frontend · Auth

Back to the whole tower

gebaut von Wild Digital Moments