Skip to content
VibekollenBETAVibekollen
kalaskoll.se
Screenshot of KalasKoll – smart children's party invitations
Open kalaskoll.se

KalasKoll – smart children's party invitations

Digital invitations for children's parties. You create the party, share a link or QR code, and the guests reply straight from their phones. You see RSVPs and allergies in real time instead of chasing answers in the parents' chat. Free to get started.

Translated from Swedish · Show the original

Baskollen98/100

Visit the project
My son was turning six and wanted to invite the whole reception class, 22 children. I sat there with paper slips and a parents' chat that had gone off the rails. So I built this instead.
Klas Olsson

The story behind KalasKoll – smart children's party invitations

Why I built it

Alexander was turning six and wanted to invite the whole reception class. 22 children. The invitations went home in the backpacks, and then the answers came in every which way. Some in the parents' chat, some verbally at pickup, some never at all.

The allergies were the worst part. You do not want to guess when a child cannot tolerate nuts, and you absolutely do not want that information sitting in a group chat.

So I built what I wanted myself. A link or QR code on the invitation, the guest replies on their phone in thirty seconds, and I watch the guest list update straight away.

How it's built

Next.js 16 with the App Router and TypeScript. Tailwind and shadcn/ui in the interface, Supabase for the database, sign-in and realtime. Stripe for payments, Resend for email, 46elks for SMS. Hosted on Vercel.

The AI cards are generated with Flux Dev via Replicate, with DALL-E 3 as a fallback when Replicate misbehaves.

Everything is built with Claude Code. I write what I want and review what comes back. I have learned more about RLS policies and encryption from questioning the AI's code than I ever did from tutorials. 375 commits since the end of January.

The hardest part

Allergy data. It counts as health data under GDPR article 9, which means separate consent, encryption and a deletion plan. It is now stored AES-256 encrypted, the parent has to tick a separate consent box, and a cron job deletes everything seven days after the party.

The bug that took longest to understand was a different one. As an admin I can view the app as a particular user in order to debug. The pages used the ordinary database client, so row-level security in Postgres gave me my own data instead of the user's. Everything looked like it worked. The numbers were just wrong.

Up next

Right now I am polishing the admin tools and chasing load times. The pages render on the server now instead of fetching data in the browser, which took a couple of seconds off the heaviest views.

Then I want a map link to the party venue, because that is the question guests ask most. And a proper reminder, an SMS the day before to everyone who said yes.

Further ahead: gift lists, so three children do not turn up with the same Lego.

Comments

Be kind — comments are public.