ticket-sizing is a lightweight planning-poker app for team estimation.
Teams can create an organization, join it with a password, pick sizing cards,
reveal everyone's votes, and keep a simple leaderboard based on voting results.
- The app is built with Astro and React.
- Firebase Firestore is used as the app's backend and real-time data store.
- Users first create or join an organization.
- Inside an organization, members can join a room, choose a card (
XS,S,M,L,XL, or?), and reveal/reset votes. - A host can end the current game session.
Main app entry points:
src/components/sizing.tsx: top-level app flow and state managementsrc/firebase/firebase.ts: Firebase initialization and Firestore reads/writesfirestore.rules: Firestore security rules used by the app
- Node.js 18+
- Yarn 1.x
- A Firebase project with Firestore enabled
yarn installCopy .env.example to .env and fill in your Firebase web app values:
PUBLIC_FIREBASE_API_KEY=
PUBLIC_FIREBASE_AUTH_DOMAIN=
PUBLIC_FIREBASE_PROJECT_ID=
PUBLIC_FIREBASE_STORAGE_BUCKET=
PUBLIC_FIREBASE_MESSAGING_SENDER_ID=
PUBLIC_FIREBASE_APP_ID=These values come from your Firebase project settings for a Web app.
yarn devThe dev server runs at:
http://localhost:4321/ticket-sizing/
Note: this project is configured with an Astro base path of /ticket-sizing/,
so the app is served from that subpath locally and in builds.
yarn build
yarn preview- This repo currently expects a real Firebase project; emulator config is not included.
- Firestore rules are permissive right now, so treat this as an internal or prototype-style setup unless you harden the auth and rules.