All projects

Full-Stack · Cloudflare

Weekly Picker

A login-free weekly venue picker: vote during the week, auto-announce on a cron, rate afterwards. Self-deployable template running on Workers, D1, and scheduled triggers.

TypeScriptReactCloudflare WorkersD1Vite
Weekly Picker

Overview

A login-free weekly venue picker for a group of friends: vote during the week, the winner is announced automatically on a schedule, and everyone rates it afterwards. The repository ships as a neutral, self-deployable template — venues, branding, and history live in each deploy's own Cloudflare D1 database, so anyone can stand up their own instance without touching the code.

How It Works

  • No accounts — each phone gets a random device ID in local storage
  • One vote per week, one rating per round, and one veto per month, enforced server-side
  • Scheduled triggers announce the winner, open ratings, and close the round automatically
  • An onboarding wizard provisions the database, writes the Worker config, and converts a local schedule into UTC crons
  • Browser admin panel for venue management and per-deploy branding, behind password auth with HttpOnly session cookies

Architecture

React, TypeScript, and Vite on the front end; a TypeScript Cloudflare Worker serving the API and cron handlers; Cloudflare D1 (SQLite) for storage; and Workers Static Assets for hosting. Public endpoints cover status, branding, venues, votes, and ratings, with a separate token-authenticated admin API for scripted control. Production deploys run from a manual GitHub Actions workflow, and all instance-specific config stays gitignored so no deployment IDs or hostnames land in the repo.