Bande is my own product: a private place where family, friends and clubs plan things together. Everyone sees who is in, who is unsure and who has not answered yet. Dates and dishes are decided with a tap, shared costs get settled without awkward reminders, and guests answer from a link without creating an account.
Product · Design · Development · AI-assisted engineering





The starting point
Groups of people who like each other run their shared life in a group chat. That works for chatting and fails for organising. Plans drown in the scroll. Nobody knows who has not answered, so the organiser chases people one by one. Choosing a date turns into a long negotiation that ends with whoever wrote last. Money for shared things is tracked in someone's head, and good ideas are mentioned once and forgotten.
Bande is built around two people. The organiser should feel in control without doing all the chasing. Everyone else should be able to answer, vote and pay back in seconds, from a link, on a phone, without learning anything new.
Answers you can trust
Every plan shows who is in, who might come, who is out and who has not answered, with faces grouped by answer. Counts are distinct people, plus-ones are shown separately, and an unknown answer is never displayed as a zero. One tap sends a reminder to everyone who is still missing.
Not everyone will sign up, and Bande does not require it. Organisers can add people by name, such as a grandmother who will never create an account, and enter their answer for them. The plan keeps track of who entered it. A guest invited to a single plan answers through a personal link and sees nothing else of the group.
Deciding together

Decisions come in the forms groups actually need: date polls with yes, if need be and no, single and multiple choice, approval votes, rankings counted with the Schulze method and explained in plain words, and short surveys. Polls close at their deadline. A tie waits for the organiser, and a follow-up question can stay locked until the first one has a result: first the date, then the dish.
Money without awkwardness
A plan can carry a cost per person that people accept together with their yes. For everything else there are expenses that work like Splitwise: several payers, equal splits, shares, exact amounts or percentages, a currency per expense and a full history of changes. Settling up suggests the fewest transfers. People pay back by scanning a GiroCode in their banking app or through a prefilled PayPal link, and the person who receives the money confirms it. Bande records who owes what and never moves money itself.
One calendar for every group

Each Bande has its own calendar with month, week and agenda views. Your personal calendar combines all of your groups, colour-coded, and a private subscription link puts your plans into Apple, Google or Outlook calendars. Recurring plans like a weekly run can be answered, moved or cancelled one occurrence at a time.

Ideas for what to do next

Most groups end up at the same restaurant. Explore suggests ideas that go further, from a learning day to a weekend in a mountain hut, plus what's on in Munich: concerts, football, markets and exhibitions, updated daily. An idea can be saved for later, put to the group as "who's in?", or turned into a plan with a bring list and polls already filled in.

Rhythms are the newest part of Bande: gentle goals such as live music once a month or an hour outside without a phone twice a week. They can stay personal or be shared with a group, and they suggest matching ideas when one is still open.
Private by design

Each Bande is its own private world. Your friends never see your family's plans, not even that they exist. Sign-in works without a password, through an email link or a passkey. Searches and viewed suggestions are not stored per person, and popularity only appears once at least five groups have planned something. Visibility is enforced in the database queries rather than by hiding things in the interface, and database tests check what each kind of member and guest is allowed to read.
A warm, drawn look
Bande looks like a friendly invitation rather than a productivity tool: a warm cream page, cards drawn with a two-pixel ink outline, four colour families of amber, terracotta, olive and navy, Nunito with Space Mono for small labels, and the odd sparkle. The design system was composed from two kits generated with Identity Forge, my design engine: one supplies structure and type, the other colour. Every colour, size and motion value comes from one token module, and automated checks reject raw colour values in components.
Everyone gets an illustrated face built from layered SVG parts, and an avatar builder lets people change every detail, from hair to glasses. Larger faces blink and glance around on their own rhythm and smile when their person says yes, and a small sparkle marks the moment everyone has answered. Reduced motion turns all of it off in one place.
How it was built
Bande went from a written brief on 10 October 2026 to a public test at bande.io one week later, on 17 October, and has kept shipping since. By the Rhythms release on 23 October it had 841 commits. I worked as product owner and design lead: I wrote the brief, chose the visual direction and accepted each milestone. AI coding agents did most of the implementation from written work orders with clear ownership. One lead agent owned the database schema, configuration and design tokens, while others built named parts of the interface against those contracts.
A change only counted as done when the full gate passed: linting, type checks, unit and token tests, locale and colour scans, schema drift checks, authorization tests against a fresh database, a production build and a real browser run. That browser run captures every main screen in English and German, light and dark, at four widths. The app screenshots on this page come from one of those runs and show synthetic demo data.
Stack
Next.js 16 with server rendering, React 19 and TypeScript 6. Tailwind CSS 4 with shadcn/ui on Base UI, and Motion for animation. Drizzle ORM on PostgreSQL, Better Auth for email links and passkeys, next-intl for English and German, React Email and MapLibre GL. A separate TypeScript worker runs scheduled jobs such as poll deadlines and reminders. Playwright drives the browser gate. Bande runs in Docker on a Hetzner server.
Try it at bande.io. It is free for now, and it will never sell your data.
