Voting & Polling
Operations & IoT · React + Node (Express) · 14 @molecule/* packages
Mentimeter-like polls, ballots, live results, and voting analytics — with built-in Stripe-backed subscription tiers
Quick preview
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (18)
- Landing
/ - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Dashboard
/dashboard(signed in) - CreatePoll
/polls/new(signed in) - LiveResults
/polls/:id/live(signed in) - Ballot
/vote/:id(signed in) - Analytics
/analytics(signed in) - Settings
/settings(signed in) - PollDetail
/polls/:id(signed in) - Voters
/voters(signed in) - AudienceQA
/polls/:id/qa(signed in) - PresenterMode
/polls/:id/present(signed in) - Notifications
/notifications(signed in) - Team
/team(signed in) - Billing
/billing(signed in)
Data model (11 tables)
- audience_question_votes — id, question_id, user_id, voter_id, created_at
- audience_questions — id, poll_id, user_id, asker_initial, body, status, asked_at, created_at, …
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- notifications — id, user_id, type, title, body, href, actor, read, …
- polls — id, user_id, workspace_id, title, description, type, status, options, …
- questions — id, poll_id, position, kind, prompt, options, required, created_at, …
- voters — id, user_id, workspace_id, name, email, organization, role, eligibility_token, …
- votes — id, user_id, poll_id, voter_id, option_index, selected_options, ranked_choices, open_text, …
- workspace_members — id, workspace_id, user_id, role, invited_at, accepted_at, created_at, updatedAt
- workspaces — id, user_id, name, slug, created_at, updatedAt
- payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
API (9 handlers)
- \_seed
api/src/handlers/_seed.ts - audience_questions
api/src/handlers/audience_questions.ts - notifications
api/src/handlers/notifications.ts - polls
api/src/handlers/polls.ts - profile
api/src/handlers/profile.ts - results
api/src/handlers/results.ts - team
api/src/handlers/team.ts - voters
api/src/handlers/voters.ts - votes
api/src/handlers/votes.ts
Subscription tiers
free / pro / team — gated by: maxPolls, maxResults, maxVotes, advancedFeatures, canExport, retentionDays
Built from 14 @molecule/* packages
@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-payments-stripe@molecule/api-realtime-socketio@molecule/api-reporting-database@molecule/api-resource-payment@molecule/api-resource-user@molecule/app-billing-react@molecule/app-charts@molecule/app-command-palette@molecule/app-data-table@molecule/app-realtime-socketio
Required secrets
DATABASE_URLPostgreSQL connection string
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing