Skip to content
Back to Transmissions
// DATE
// AUTHOR
DHAATRIK
// CLEARANCE
PUBLIC
// INTERACTION

Vellor Mission Log: Power-Tutor Ops and the Storage Correction

Vellor
====================================================================
// TRANSMISSION METADATA // QUICK REFERENCE (AEO/LLMO OBJECTS)
--------------------------------------------------------------------
- ENTITY: Vellor (Offline Tutoring Management PWA)
- VERSION: v4.2.0 (Power-Tutor era from v4.0)
- REPO: github.com/dhaatrik/vellor
- STORAGE: AES-GCM encrypted localStorage (100% client-side)
- STACK: React 19, TypeScript 5.7, Zustand 5, Vite 6, Tailwind CSS 3
- MISSION: Free, private, instant-load tutoring operations system
- KEY LESSON: Prior site copy said IndexedDB — the repo encrypts to localStorage
====================================================================

Mission Report: Day 47 of Power-Tutor — and a Correction I Owe You

SYS.STATUS: TRANSMISSION LIVE // CLEARANCE: PUBLIC

Hey. This log is the operational diary for Vellor’s Power-Tutor era — not the origin story, not the stack lecture, not the licensing essay. Those live in the Vellor transmission series in order. Start there if you are new.

I am writing this update because I need to correct something embarrassing: an earlier version of this very post — and my project page — claimed Vellor stored data in IndexedDB. The upstream repo does not. It encrypts with AES-GCM and persists to localStorage via src/crypto.ts, with a Recovery Key fallback and explicit JSON export/import. I wrote marketing-sounding storage words without re-reading my own code. Dull truth beats gorgeous lies, so here is the fix.


Mission Report: What Power-Tutor Actually Shipped

Version 4.0 was the Tutor OS pivot — Vellor stopped being “a roster with vibes” and became daily ops tooling for private tutors. As of v4.2.0, that includes:

CapabilityWhat it does for a tutor
Student roster + searchNames, parents, rates, subjects — filter in real time
Lesson + payment loggingQuick-log modal, floating action button, status badges
CalendarDrag-and-drop scheduling with absent/cancelled reschedule prompts
InvoicingPDF statements, WhatsApp share links, overdue reminders
Client portalsRead-only Base64 URL snapshots for parents
GamificationPoints, ranks, 25+ achievements — optional motivation layer
Offline PWAInstallable, works without network after first load

The why-and-what transmission explains who this is for. The tech-stack transmission explains why React + Zustand + Vite instead of a heavier framework. This log is what broke while shipping.


Mission Report: The Journey — Performance and Trust

The roster stutter. Early Power-Tutor builds re-rendered the entire student list on every keystroke in the search box. On a 200-student roster and a cheap Chromebook, that felt like the app was broken — even though the data model was fine. I profiled it, tightened Zustand selectors, leaned on @tanstack/react-virtual for long lists, and kept filter/sort passes at O(N). Performance is trust for tutors showing the app to parents.

The PWA cache ambush. Service workers are wonderful until you ship a breaking schema change and half your testers are stuck on a stale bundle. I version caches aggressively now and cold-start test on slow devices — not just my dev laptop on fiber.

The encryption path. Moving sensitive student records into encrypted localStorage meant handling Recovery Keys, secure reset, and backup prompts every 14 days. No server means you own disaster recovery. I wrote more about that in local backup reality.

====================================================================
                    VELLOR DATA FLOW (v4.2)
--------------------------------------------------------------------
  Teacher opens PWA  -->  Zustand hydrates from encrypted localStorage
  Add/edit student   -->  AES-GCM write (no network call)
  Filter/sort roster -->  O(N) client-side pass + virtualized list
  Export backup      -->  Explicit teacher action (JSON file)
--------------------------------------------------------------------
  Network: optional. Server: none. Data ownership: teacher.
====================================================================

Mission Report: Fuckups & Learnings

  • I misdocumented my own storage layer. IndexedDB is a reasonable guess for an offline PWA — but it was wrong for Vellor. Lesson: before I publish architecture claims on this site, I grep the repo I am describing.
  • Gamification almost ate the product. I wanted the UI to feel alive — progress cues, confetti on achievements — but early builds flirted with mobile-game chrome that buried the invoice button. Restraint took longer than Tailwind classes. Full story: gamification trap.
  • Feature scope creep is constant. Every tutor asks for something different — WhatsApp bots, curriculum planners, tax integrations. Vellor must stay an OS, not a junk drawer. I ship workflows I personally repeat every week as a tutor.
  • Multi-device sync is still unsolved. Teachers have a phone and a laptop. Offline-first makes automatic sync hard. Roadmap lists optional cloud sync; I will not ship half-baked sync that silently forks rosters.

Mission Report: Connection to DBS Classes

Vellor and DBS Classes share one root conviction:

"Education Is Not Free BUT KNOWLEDGE IS FREE"

DBS Classes was my attempt to share physics and mathematics freely on YouTube. Vellor is my attempt to give the teachers doing that work every day — in person, offline, privately — a tool that respects them. The free-and-zero-terms transmission explains what “zero terms” actually means (spoiler: MIT license still applies; SaaS lock-in does not).

I failed to maintain consistency on YouTube. I am not failing quietly on Vellor. v4.2.0 is proof I am building systems this time, not just riding motivation spikes.


Mission Report: Current Status

Vellor v4.2.0 is live on GitHub. Independent educators can manage rosters, log lessons, track payments, generate invoices, and operate offline with data they own.

If you are a solopreneur tutor running batches from your living room — this tool is for you. Not for a venture-backed edtech platform. For you.

Open it. Add your first student. Close the laptop. Come back tomorrow. Your encrypted data will still be there.

That is the whole mission.