Team repo for WatTheDuck! ConHacks 2026 entry
Destress your debugging.
WhatTheDuck! is a cozy rubber duck debugging web app that helps developers explain, debug, and stay focused while coding. It combines a talking duck, AI-powered debugging support, voice interaction, Pomodoro sessions, break reminders, and encouraging ducky feedback to make debugging a little less painful and a lot more quack-tical.
WhatTheDuck! gives users an interactive rubber duck companion that they can talk to while debugging. The duck listens to your problem, helps reason through your code, and responds with helpful suggestions. It also keeps track of focus sessions, reminds you to hydrate or take walk breaks, and uses visual icon prompts to help you lock in without burning out.
- AI-powered debugging help using the Gemini API
- Voice responses using ElevenLabs API
- Hand-drawn animated duck frontend
- Speech bubble messages and encouragement
- Blinking eyes and moving beak animations
- Pomodoro timer with study and break intervals
- Session stats for total time spent and completed Pomodoro sessions
- Hydration, walk, and focus reminders
- Dynamic icon states and popup prompts
- Django backend for API logic
- React/TypeScript frontend for the interactive UI
- React
- TypeScript
- CSS
- Hand-drawn image assets
- Django
- Python
- Django REST-style API endpoints
- Google Gemini API
- ElevenLabs API
- The user talks to the duck or enters debugging context.
- The frontend sends the request to the Django backend.
- The backend uses the Gemini API to generate debugging help.
- ElevenLabs can generate a spoken duck response.
- The frontend displays the response and animates the duck.
- The Pomodoro timer and break reminder system help the user stay focused.
WatTheDuck/
├── backend/
│ ├── requirements.txt
│ └── wtd/
│ ├── manage.py
│ ├── db.sqlite3
│ ├── media/
│ │ ├── audio/ # ElevenLabs TTS output
│ │ └── images/ # Screenshot uploads
│ ├── main/ # Core Django app
│ │ ├── models.py
│ │ ├── views.py
│ │ ├── urls.py
│ │ ├── service.py
│ │ ├── thread_manager.py
│ │ ├── signals.py
│ │ ├── migrations/
│ │ └── services/
│ │ ├── breadcrumbs.py
│ │ ├── focus_tracking.py
│ │ ├── pomodoro.py
│ │ ├── query_images.py
│ │ ├── query_text.py
│ │ └── tts.py
│ └── website/ # Django project config
│ ├── settings.py
│ ├── urls.py
│ ├── wsgi.py
│ └── asgi.py
│
├── frontend/
│ ├── public/
│ │ ├── duck/ # Hand-drawn duck assets
│ │ ├── icons/ # UI icons
│ │ ├── mt_icons/ # Reminder icons
│ │ ├── pomo/ # Pomodoro timer assets
│ │ └── fonts/
│ ├── src/
│ │ ├── App.jsx
│ │ ├── App.css
│ │ ├── AppLayout.css
│ │ ├── main.jsx
│ │ ├── components/
│ │ │ ├── Header.jsx
│ │ │ └── ScreenCapture.jsx
│ │ ├── hooks/
│ │ │ └── useSpeechRecognition.js
│ │ └── services/
│ │ ├── api.js
│ │ └── speechService.js
│ ├── vite.config.js
│ └── package.json
│
└── README.md