-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Overview
Create a React web application hosted on Firebase Hosting that provides a visual dashboard for viewing and analyzing poll results from the Slack Open Poll app.
Requirements
Core Features
Poll Results Display: Show poll questions, options, and vote counts in an intuitive UI
Responsive Design: Mobile-friendly interface for viewing on all devices
(Optional) Real-time Updates: Use Firestore real-time listeners to update results as votes come in
(Optional) Poll Filtering: Filter polls by date, channel, creator, or status (open/closed)
(Optional) Search Functionality: Search polls by question text or creator
Technical Implementation
Framework: React 19 with TypeScript
Hosting: Firebase Hosting (integrate with existing Firebase project)
Database: Connect to existing Firestore database with poll data
Authentication: Firebase Auth integration (optional: restrict access to workspace members)
Styling: Modern UI library (Tailwind CSS)
Data Integration
Reuse existing Poll and vote data structures from functions/src/types/poll.ts
TBD -
Deployment
- Add Firebase Hosting configuration to existing firebase.json
- Create build and deploy scripts in root package.json
- Update GitHub Actions workflow to deploy both Functions and Hosting
File Structure
web/
├── src/
│ ├── components/
│ ├── hooks/
│ ├── services/
│ ├── types/
│ └── utils/
├── public/
├── package.json
└── tsconfig.json
Docs
- React + Vite - https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts
- Hosting - https://firebase.google.com/docs/hosting/quickstart
- Authentication - https://www.freecodecamp.org/news/authenticate-react-app-using-firebase/
Acceptance Criteria
React app displays all polls from Firestore
Real-time vote count updates without page refresh
Polls can be filtered and searched
Responsive design works on mobile and desktop
Deployed to Firebase Hosting and accessible via custom URL
CI/CD pipeline deploys both Functions and web app
This would complement your existing Slack bot by providing a web interface for poll analytics and management.