Skip to content

Repository files navigation

Universal Date Polling

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.

How it works

  • 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 .ics invite attached (the notify-poll-respondents Edge 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 .ics download (Apple Calendar, Outlook desktop). Generated entirely client-side, in the poll's timezone.

More options

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.

Stack

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.

Develop

cd Universal_Apps/Universal_Polling
cp .env.example .env.local   # fill in the shared project's URL + anon key
npm install
npm run dev

Build: 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).

Licence

MIT © Universal Simulation Ltd.

About

Universal Polling — a free, open-source group scheduler (when2meet/Doodle). Create a poll, share a link, find a time that works for everyone.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages