A free, open-source group scheduler — the simple "find a time that works for everyone" tool. Create a poll, propose some dates and times, share a link, and watch the best slot rise to the top as people tick their availability.
Live: opensource.unisim.co.uk/polling
Part of the Universal Apps suite by UNI SIM.
- Create a poll — title, candidate dates/times, a timezone (defaults to yours). Creating a poll requires verifying your email with a one-time code, so polls can't be spammed anonymously.
- Share the generated link. Anyone with it can respond — no account needed.
- Respond — tick each slot you're free or if-need-be. Times are shown in the poll's timezone, with your own local time alongside if they differ. Optionally leave an email to be notified when the host confirms a time — it's stored write-only (client roles can never read it back) and never shown to other respondents.
- Decide — the results view tallies every slot, shades it by how many people are free, and badges the winner(s).
- Confirm — the host (and only the host) can click "Confirm this time" on
a result slot. Everyone with the link then sees a prominent "Confirmed"
banner with the chosen date/time. From that banner the host can email every
respondent who left an address the confirmed time, with a
.icsinvite attached (thenotify-poll-respondentsEdge Function; never sent automatically — always an explicit host click). - Suggest times — with a calendar connected, one click fills the poll in from the host's own free time: 4 options, weekdays only, between 10:00 and 16:00 in the poll's timezone, and at most one morning and one afternoon on any given day. They're ordinary slots once added — drag one to move it, click to remove it, click again for four more.
- Add to calendar — each result slot (and the confirmed banner) has an "Add
to calendar" button: Google Calendar, Outlook, or an
.icsdownload (Apple Calendar, Outlook desktop). Generated entirely client-side, in the poll's timezone.
A collapsible "More options" panel on the create screen covers:
- Booking-page colour — pastel orange / blue / pink / green themes.
- Link validity — 7 / 30 / 90 days, or never expires.
- Timezone — defaults to the host's, override to any IANA zone.
Host calendar integration (check the host's own availability while building a poll) is a planned follow-up — see the suite docs.
Vite + React 18 + TypeScript, Tailwind CSS v4, and a PWA service worker. Poll
data and host email verification use the shared suite Supabase project
(tables polls + poll_responses, migration 0025_polls.sql in
backoffice/universal-platform). The shared navbar comes from @unisim/sdk.
cd Universal_Apps/Universal_Polling
cp .env.example .env.local # fill in the shared project's URL + anon key
npm install
npm run devBuild: npm run build (outputs dist/, served under /polling/ in
production). Deploy is a Git-connected Cloudflare Pages project behind the
opensource.unisim.co.uk portal Worker, exactly like the other Universal Apps.
Each build bakes the commit SHA into a <meta name="build-sha"> tag and logs
build: <sha> to the console at startup, so you can tell which build is live
in-browser. On Cloudflare Pages the SHA comes from CF_PAGES_COMMIT_SHA; locally
it falls back to the git short SHA (or dev).
MIT © Universal Simulation Ltd.