Inspiration

I'm Sam, a middle school student in Jiangmen, Guangdong, about to enter Grade 9 (初三). During summer vacation I kept bouncing between notebooks, apps, and browser tabs — study materials, homework, spending, to-do lists, daily plans, and vocabulary all lived in different places. I wanted one calm, personal space to manage my study and life. Instead of buying another app, I decided to build my own — with the help of AI.

What it does

Sam's Home is a single-file, offline personal homepage. Everything lives in one index.html with zero dependencies, and all data is stored in the browser's localStorage — refresh and nothing is lost. It includes 10 tools in one place:

  • 📚 Resource Library — save courses, PDFs, mind maps, tools and practice banks, with live search
  • 💰 Expense Tracker — monthly totals and a weekly spending bar chart
  • 📝 Eisenhower To-Do Board — urgent/important quadrant matrix
  • 🎯 Study Zone — homework manager + 25/5 Pomodoro timer
  • 📅 Daily Planner — timeline, priorities, progress, and history
  • 🎵 Music Player — local playlist with a draggable floating mini-window
  • 🎡 Lucky Wheel — customizable spin for fun breaks
  • 📖 Vocabulary Trainer — Ebbinghaus spaced repetition in groups of 20, each word drilled 12 times per cycle, with weighted difficulty and spelling practice
  • 🏆 Plans Board — short-term/long-term plans with glassmorphism task-checklist modals
  • 👤 About Me — an auto-generated self-awareness report

How I built it

I built the entire app with Codex (OpenAI) as my pair programmer, iterating feature by feature in vanilla HTML/CSS/JavaScript. Key technical choices:

  • One self-contained file, all CSS and JS inline — works offline by double-clicking
  • localStorage as the "database", with a one-click save, JSON backup/import, and data integrity verification
  • Web Speech API for English pronunciation, Web Audio API for a "ding" sound, Canvas for the wheel and charts
  • A real spaced-repetition engine. The review interval follows the Ebbinghaus curve:

$$d(n) = \begin{cases} 1, & \text{level } 1 \to 2 \ 2, & \text{level } 2 \to 3 \ 4, & \text{level } 3 \to 4 \ 7, & \text{level } 4 \to 5 \end{cases} \text{ (days)}$$

  • Automated E2E testing with Playwright at 375px mobile and desktop widths on every release

Challenges I faced

The biggest challenges were all about staying simple and robust:

  • No backend, no dependencies. Every feature — charts, modals, audio, a spinning wheel — had to be built with pure browser APIs. That forced me to think carefully about data flow and state.
  • Getting the review algorithm right. Making sure hard/wrong words appear more often, easy words less, while every word still completes 12 drills per cycle, took several rounds of design and testing.
  • One nasty data-loss bug. My index.html once got corrupted (its encoding was scrambled and Chinese text broke). I recovered the full project from git history — which taught me to always commit.
  • Mobile-first layout. Ten tabs and rich interactions had to stay usable on a 375px phone screen.

What I learned

I learned that AI doesn't replace understanding — it accelerates it. I had to understand every line to debug it, and testing taught me more than building. I also learned real product thinking: localStorage instead of a server, Ebbinghaus instead of cramming, and calm warm design instead of flashy noise. Most importantly, I learned that your own tools work better than anything you can buy — especially when you build them for yourself, with AI by your side.

Built With

Share this project:

Updates

posted an update —

Urgent feedback on the Neural Pulse API (Submission: Sam's Home)

My project: Sam's Home — a personal learning & life management web app for a middle school student preparing for the 2027 Zhongkao (EdTech track).

What I already did (Plan B / full integration):

  • All 9 data collections (resources, expenses, homework, todos, words, plans, playlist, wheel, daily planner) are mapped to tables in the Neural Pulse Virtual DB;
  • localStorage is only an offline cache — every create/read/update/delete is synced through the API to the cloud;
  • Full graceful-degradation layer implemented: automatic retry queue, re-sync on reconnect.

However, the official API has been broken since 2026-08-30 and is still down:

  1. Write/read endpoints return 500: bulk_insert and select_data both return 500 Internal Server Error;
  2. AI engine unavailable: chat returns All LLM providers failed. Last error: openrouter returned 404 (persisting for 2 days);
  3. CORS not configured (most critical): /api/neural responses include no Access-Control-Allow-Origin header (verified on both OPTIONS preflight and POST). This means no browser-based frontend can call the API at all, so even after the backend recovers, a static web deployment cannot use it.

What I need from you:

  1. Please fix the 500 errors and the OpenRouter provider configuration;
  2. Please add proper CORS headers (e.g. Access-Control-Allow-Origin) to /api/neural — this is a hard requirement for any browser-based app;
  3. Please share an ETA for the fix, and confirm whether the "local cache + automatic retry queue" fallback is acceptable for judging during the outage.

Evidence (trace IDs):

  • chat → b9546622-c35a-4b6e-958d-031735ed7cdf (openrouter 404)
  • select_data / bulk_insert → persistent 500 Internal Server Error

Looking forward to your reply. Thank you!

Log in or sign up for Devpost to join the conversation.

Submission history