πŸ”Š Sound playing!
TinkerHub Useless Projects 3.0 β€’ Team Tinkerers (CET)

How Deepa getting ghosted by her crush turned into a hackathon project.

It started with a 4-paragraph chai invitation that got "Seen" at 11:41 PM. 24 hours later, we had built a full digital graveyard with state-honored funeral rituals, death certificates, and a snarky AI ghost that texts back.

β˜• "Never send four paragraphs about canteen chai to an electrical engineering major."
HACKATHON SUBMISSION FORM DETAILS

Official Entry Details for Judging:

Everything required to review and evaluate our hackathon project:

Project Name
Rest in Read πŸͺ¦
Team Name
Tinkerers
Campus / College
College of Engineering Trivandrum (CET)
Team Members
Ajo Jose & Deepa Mary Jose

πŸ’” The Origin Story: The Chai Invitation That Died at 11:41 PM

Most hackathon teams start with a Notion board. We started with catastrophic emotional damage.

Let’s set the scene: Thursday night, 11:30 PM, roughly 18 hours before TinkerHub’s Useless Projects hackathon was set to begin.

Deepa had spent the last two months conducting what can only be described as "subtle optical reconnaissance" at the CET college canteen. The subject of her interest was Ashwin β€” a final-year electrical engineering senior who wore a vintage black jacket in 34Β°C Kerala humidity and rode a Royal Enfield that vibrated with enough acoustic energy to set off car alarms across Sreekaryam.

After three rounds of hostel peer-pressure and a glass of Sulaimani tea, Deepa drafted The Message. It was not a casual text. It was a 4-paragraph opus featuring:

πŸ“± 11:41 PM: The Double Blue Tick of Doom

She hit send. Three minutes later, two grey checkmarks turned into two glowing blue checkmarks. Deepa’s resting heart rate surged to 150 BPM. She waited.

One minute passed. Five minutes passed. No typing bubble.

At 11:48 PM, Deepa opened Instagram. Ashwin had just posted a 15-second story doing barbell curls to Russian hardstyle gym music, captioned: "No distractions. Pure grind. 😀πŸ’ͺ"

Deepa was, by all clinical definitions, a distraction.

The 5 Stages of Deepa's Midnight Grief:

1. Denial (11:55 PM)

"Maybe BSNL cellular towers in Thiruvananthapuram got struck by lightning right after he opened the app?"

2. Anger (12:30 AM)

"He studies electrical engineering and can't even route a 5-volt reply signal to a WhatsApp server? I hope his Enfield leaks oil."

3. Bargaining (01:15 AM)

"If I double-text right now with 'haha sorry my cat stepped on my phone', will my dignity return?"

4. Depression (02:00 AM)

"Eating Marie Gold biscuits in pitch darkness. Moving to Wayanad to raise mountain goats was always plan B."

⚑ 03:00 AM: Acceptance & Revenge Engineering

At 3 AM, Deepa called Ajo: "Ajo. Wake up. We are not making an AI study scheduler for the hackathon. We are building a digital cemetery for dead texts. With gravestones. And death certificates. And a ghost that actually texts back."

Ajo, half-asleep: "...did he reply?"
Deepa: "No. But tomorrow, his message is getting buried with full state honors."

🩺 Deepa's Crush Text Autopsy & Dignity Decider

We replaced the Ouija planchette with the exact triage machine Deepa needed on Thursday night. Test your text before you ruin your life:

Digital Dignity Meter
Current Dignity Reading:
100% Intact

Pick a scenario to run an autopsy on the unreplied text:

Status: Unsent & Dignified
You haven't sent the vulnerable paragraph yet. You still have your self-respect. Keep it that way.

⏱️ The 24-Hour Build & Spirit-Breaking Bugs

How we actually built the cemetery between Friday evening and Saturday night:

Friday 19:13 β€’ The 16-Minute Crypt Drop

Scaffolding a digital graveyard from scratch

We arrived at the hackathon hall with three cans of soda and Deepa's emotional grudge. While other teams were drawing architecture diagrams, Ajo dropped a massive initial commit (Commit 416f1ea): the Morgue Intake Form, the 5 stages of KΓΌbler-Ross grief, and an initial tombstone grid.

πŸ’‘ The Zero-Audio Constraint
We refused to ship MP3 or WAV files. No 404 missing audio errors, no 20MB asset payloads. Every shovel scrape, bell toll, and heartbeat would be synthesized on the fly via the Web Audio API!
Friday 23:45 β€’ The Possessed Planchette

The bug that broke our spirit #1

We wanted the Ouija board to physically spell out letters on screen. On Ajo's monitor, it was smooth. But the second Deepa opened it on her laptop, the wooden pointer flew off into outer space, parked inside the navbar, and started vibrating violently on the letter 'Q'.

⚠️ The cause:
Percentage coordinates broke completely across different viewport aspect ratios.
πŸ› οΈ The fix:
We replaced static percentage offsets with an anchored bounding-box coordinate interpolation matrix with smooth directional momentum.
Saturday 02:15 β€’ The Blank Canvas Mystery

The bug that broke our spirit #2

The whole point of the burial ritual was downloading your official "Declaration of Closure" certificate as a PNG. We wired up html-to-image.

⚠️ The disaster:
Every time someone clicked "Download Official Certificate", the resulting file was a completely transparent, 0-byte white image. At 2 AM, our own code was ghosting us.
πŸ› οΈ The fix:
Canvas rasterization was choking on CSS backdrop-filter: blur() and asynchronously loaded fonts. We refactored into pure CSS double-borders and inline SVG stamps for instant high-DPI export.
Saturday 11:30 β€’ Deepa's Lab Headphones Incident

When jumpscares work a little too well

Deepa decided the cemetery was too relaxing. So she added a 1-in-8 idle jumpscare that triggers if you don't touch your mouse for 25 seconds, accompanied by a sharp synthesizer screech.

🎧 Incident report:
Testing this in the quiet CET computer lab with noise-cancelling headphones at 90% volume, Deepa forgot the timer was active, stared into space, and literally shrieked when the ghost flashed. Half the lab turned around. We committed the code immediately.
Saturday 13:05 β€’ The Claude Quota Panic & 17-Minute Gemini Rescue

The bug that broke our spirit #3

Four hours before submission, disaster hit. We tested the Ouija ghost again and received: 429 Quota Exhausted. Our Anthropic Claude API credits were completely gone.

πŸ’₯ The crisis:
We had no budget to purchase API credits mid-hackathon. Without an LLM, the ghost was struck mute.
πŸš€ The rescue: Google Gemini 3.6 & 3.5 Flash
In a 17-minute burst of pure panic and cold coffee (Commit d0e6176), Ajo rewrote the backend into a 3-tier cascade:
  • Tier 1: Google Gemini 3.6 & 3.5 Flash (responded in ~400ms via raw REST fetch).
  • Tier 2: Anthropic Claude 3.5 Sonnet (if user brings their own key).
  • Tier 3: Sarcastic offline heuristic engine if disconnected from Wi-Fi.

Gemini Flash was twice as fast and sounded delightfully unhinged. The ghost was back from the dead.

Saturday 21:30 β€’ Deployed to Netlify

Closure achieved

We cleaned up our mess, polished the tombstones, and deployed to Netlify at leftonseen.netlify.app. Deepa finally got closure. (Ashwin still hasn't replied).

πŸ“Έ Visual Evidence from the Crypt

Screenshots of the live product in action:

πŸ”Š The Zero-Asset Soundboard (All Fixed!)

Every sound below is synthesized via JavaScript oscillators. Zero audio files downloaded, 100% audible on all laptop and phone speakers!

100% Web Audio

🀝 The Team: Tinkerers

College of Engineering Trivandrum (CET) β€’ Turning heartbreak into code:

πŸ‘¨β€πŸ’»

Ajo Jose

Systems & AI Wrangler β€’ Team Lead
  • Built the Next.js 14 architecture & LocalStorage-first engine.
  • Engineered the 17-minute Google Gemini Flash fallback cascade when Claude died.
  • Math & vector trigonometry for letter arc tracking.
  • GitHub Pages & Netlify deployment.
🎨

Deepa Mary Jose

UX, Sound & Chief Mourning Officer
  • Provided the core emotional heartbreak and origin story.
  • Wrote the satirical clinical copy, cause-of-death dossiers, and 5 KΓΌbler-Ross stages.
  • Synthesized in-browser sound effects with the Web Audio API.
  • Engineered the 1-in-8 idle jumpscare sequence that startled the college lab.