A to-do list with a twist: you don't choose which task to do next — the wheel decides for you.
Ruleta de Tareas is a web app (and also a desktop app!) that turns your boring to-do list into a spinning roulette wheel. Add your pending tasks, spin the wheel, and let fate pick one for you. And if you try to cancel... well, good luck with that. 😏
- 🎡 Animated roulette wheel — colorful gradient sectors that spin and slow down naturally with a friction effect
- ➕ Task management — add and delete tasks from the list
- 🔐 User authentication — register and log in with email and password via Firebase
- 💾 Persistent tasks — your tasks are saved in
localStorageso they survive page refreshes - 🌍 Bilingual — switch between Spanish 🇪🇸 and English 🇬🇧 on the fly
- 😈 Evil Cancel button — each time you try to cancel the roulette result, the Cancel button shrinks and the Accept button grows... until there's no escape
| Layer | Technology |
|---|---|
| Frontend | HTML5, CSS3, Vanilla JavaScript (ES Modules) |
| Authentication | Firebase Auth (email/password) |
| Storage | Browser localStorage |
| Drawing | Canvas API |
| Desktop version | Python + Tkinter |
The app is deployed on Vercel — no setup needed, just open it in your browser:
🔗 https://to-do-list-37ob5g68q-marias-projects-b5a6cca6.vercel.app/
Because the app uses ES Modules, you can't open index.html directly by double-clicking it. You need a local server:
# Option 1 — with Node.js
npx serve .
# Option 2 — with Python
python -m http.serverThen open http://localhost:3000 (or the port shown) in your browser.
There's also a standalone Python version that works without a browser or internet connection:
python ruleta_tareas_giratoria.pyRequires Python with tkinter (included in standard CPython on Windows). No extra installs needed.
- Add your tasks using the input field and the Añadir / Add button
- Click Jugar / Play to spin the wheel
- Watch the wheel spin and land on a task
- Click Aceptar / Accept to delete that task (it's done! ✅)
- Or try to click Cancelar / Cancel... if you dare 😈
Use the ES / EN buttons in the top bar to switch the interface language at any time. Everything updates instantly — buttons, placeholders, messages, and results.
to-do_list/
├── index.html # Main app UI
├── script.js # App logic, roulette, auth, translations
├── style.css # All styles and animations
├── firebase.js # Firebase initialization
├── auth.js # Login, signup, logout functions
└── ruleta_tareas_giratoria.py # Standalone Python/Tkinter version