This app supports the impro performance of IMPROvariace impro group. It allows the audience to interact with the performance in real-time. All views run in the browser. No app installation or account creation is needed.
- User
- Show visitor interacting via the app through a smartphone.
- Admin
- Show moderator or dedicated person responsible for interacting with the app during the show.
- Audience
- Dedicated view used for displaying content to the whole audience via a screen projector.
- Question
- Basic entity representing one interaction with the audience. Can be one of many types, like a text question (users input text), vote (users vote for the player they like most), or matching (users match players to characters).
- Question Pool
- Group of Questions. Used when we want to count the sum of votes (answers) given to players over several Questions. A performance can have any number of Question Pools.
- Vote Questions can be batched into a Question Pool.
- I can add a vote-type Question.
- I can manage Performance visibility.
- I can manage Question visibility towards Users and Audience.
- I can see users' Answers in real-time.
- I only see a Question when the admin sets its visibility.
- I can submit an Answer to a Question.
- I can see the results of a Question (if set by Admin).
- Missing CRUD operations over most of the entities (wasn't needed, Supabase's interface is used).
- Only vote-type Questions can be added via the Admin interface.
The whole solution stands mainly on the following pillars:
- Next.js app using the app router and server actions (I just want to try it).
- shadncn/ui
- Supabase for database, authentication, image storage, and real-time streaming.
- Vercel for frontend cloud.
- Zustand for local state management.
This is a standard Next.js project bootstrapped with create-next-app
. If you want to run it locally, deploy it, or customize it, follow the appropriate documentation.
Database schema (possibly not up-to-date) can be found in schema.db.sql file