Create a poll. Share the link. Watch results appear in real time.
Tinta is a web app for making live polls that anyone can vote in — no account needed to participate. It started as a school project and grew into a small, polished product with a handcrafted "paper and ink" design.
Think of it as a digital blackboard where you write a question, everyone writes their answer, and the tally draws itself as it happens.
- Create polls in seconds — write a question, add the options one by one (you can reorder them) and share the link. You can let people pick just one option or several.
- Create polls without an account — no registration needed. Choose whether your poll is public (it shows on the public list) or private (only people with the link can access it), and it stays online for as long as you want.
- Protect polls with a password — optionally add a password that voters must enter before they can vote. The poll creator never needs it.
- Vote anonymously — your visitors don't need to register. Each person gets one vote per poll, tracked with a private session. Polls can ask voters for their name, and you choose whether everyone sees who voted or only you.
- Close voting whenever you want — set an optional closing date; once it passes, voting stops and only results are shown.
- Watch results live — a chart updates itself as votes arrive, no refreshing.
- Keep track of your polls — sign up for free to get a dashboard with your polls and your totals.
- Use it in your language — the interface automatically switches between English and Spanish based on your browser language.
- Light or dark — switch between paper and ink with a single click.
The design is inspired by the classroom: serif typography, warm paper tones, monospace details and a simple, readable layout — with a dark mode for late night voting. No gradients, just clear information, like a well-kept notebook.
You'll need Node.js and a Supabase project (free tier is enough).
git clone https://github.com/tomiBraunn/Tinta
cd Tinta
npm install
cp .env.example .env.local # then fill in your Supabase keys
npm run devOpen http://localhost:3000. The database schema is in
supabase/migration.sql — run it once in the Supabase SQL editor.
The app is designed to run on Vercel: import the
repository, add the three environment variables from .env.example, and every
push to main ships automatically.
Built with Next.js and React on the front, Supabase (PostgreSQL) as the database and auth provider, and Tailwind CSS for styling. Unit tests run with Vitest.
Tomas Braun — tomibraunn