v1.0 · Still building

DATAD

Discover · Aspire · Transform · Achieve · Develop

A Student Operating System — study, career, finance, community and reflection in one calm, engineered place, with a single AI identity called Dax running through all of it. No ads. No feeds. No data selling. Built and maintained by one person.

~57KLines of code
590Source files
78Data models
1Engineer
The premise

Student life isn't one-dimensional.
So why is every tool?

Notes live in one app, placement deadlines in a WhatsApp group, expenses nowhere at all, and the resume in a Word file that gets renamed final_v7. Every tool solves one slice. DATAD is the attempt to hold the whole thing — without becoming another app that optimises for your attention instead of your outcomes.

The problem

Fragmentation costs

Context-switching between five tools during placement season means missed deadlines, forgotten prep, and burnout — not because students lack discipline, but because nothing holds the picture for them.

The approach

One system, five dimensions

Study, career, finance, community and personal reflection share one login, one data model, and one AI. Progress in one dimension is visible to the others.

The constraint

Engineered for clarity

No infinite scroll, no streak-guilt, no dark patterns. Success is measured in outcomes, not in minutes spent inside the product.

The name

Why DATAD?

Five verbs for the arc of a student's journey — and the initials T.A.D of the person who built it.

What's inside

Every module, built from scratch

Each one shipped incrementally, without breaking what came before. Click any card to see the models and routes behind it.

The AI layer

Meet Dax — one intelligence, many jobs

DATAD has exactly one AI identity. Not a chatbot plus a summariser plus a recommender — one intelligence that shows up in different places doing different work. A student should never have to wonder which AI they're talking to, because there is only one.

Capabilities

Ten hats, one name

Dax ChatDax Insights Dax Resume ReviewDax Planner Dax ResearchDax Memory Dax RecommendationsDax Career Coach Dax NotificationsDax Summaries

The naming rule is written down and enforced: if a student can read it, it says Dax; if a machine reads it, it doesn't. Wire-protocol roles, database collections and model-provider names are deliberately left alone.

Why it isn't a chatbot bolt-on

Context is the product

Dax reads your actual resume, knows your tier and quota, sees your placement timeline and exam schedule, and carries memory across resume iterations and interview attempts. The provider running underneath is shown as provenance — never hidden, never presented as the identity.

AnthropicOpenAI-compatible NVIDIAModel router Tool callingEmbeddings + retrieval Usage meteringTelemetry
Single source of truth
// client/src/utils/dax.js — the name lives in exactly one place
export const DAX = 'Dax';

export const DAX_CAPABILITY = {
  chat: 'Dax Chat', insights: 'Dax Insights',
  resumeReview: 'Dax Resume Review', careerCoach: 'Dax Career Coach',
  /* …and six more */
};

// Attribution: Dax is the author, the model is provenance.
export const daxAttribution = (provider) => provider ? `${DAX} · ${provider}` : DAX;
Engineering

How it's put together

A React SPA talking to a layered Express API over JWT, with MongoDB Atlas underneath and a handful of well-chosen third parties at the edges.

Browser · React 19 SPA Vite · Tailwind · Framer Motion · JWT in localStorage HTTPS · Authorization: Bearer Express API · routes → controllers → models helmet · cors allow-list · hpp · mongo-sanitize · rate limiters verifyToken · checkRole · multer · errorHandler 43 route modules · 32 controllers · 78 models MongoDB Atlas Mongoose ODM Cloudinary photos · URL + id only Email · RSS Resend · ET feeds · Yahoo Dax model layer Anthropic · OpenAI · NVIDIA
Frontend
React 19Vite 8Tailwind 3 React Router 7Framer Motionaxios react-hook-formTanStack Virtual react-markdownSentry
Backend
Node + Express 4Mongoose 9JWT bcrypthelmethpp rate-limitmulternode-cron Jest
Scale of the codebase
~57,000 lines590 JS/JSX files 91 pages72 components 84 AI-layer files78 Mongoose models
Request lifecycle

1. helmet, CORS allow-list, 1 MB JSON cap, mongo-sanitize, hpp, general rate limiter · 2. route-level limiters — stricter on auth, on photo upload, on announcements · 3. verifyToken resolves the Bearer JWT to req.user · 4. checkRole('admin') guards the admin surface · 5. controller runs, Mongoose enforces field limits · 6. the error handler maps validation and duplicate-key errors to 4xx and everything else to a generic 500 — details stay in the server log.

The core invariant

Private by default. Shared on purpose.

Every private query is scoped to the caller's own user id. There is no endpoint anywhere in the API that returns another user's finances, resume, or journal — including for admin.

DataOwnerVisibilityWho can change it
NotesauthorSharedAuthor only
Albums & PhotoscreatedBy / uploadedBySharedOwner only
TaskscreatedBy + assigneeSharedCreator or assignee
Expenses & BudgetsuserPrivateThe user, alone
Resumeuser (unique)PrivateThe user, alone
JournaluserPrivateThe user — invisible to admin
AnnouncementscreatedByReadable by allAdmin
🔐

bcrypt + JWT

Passwords hashed at 10 rounds, minimum 8 chars with a letter and a number. Tokens expire in 7 days; no server-side session store.

🚦

Rate limited

Auth endpoints capped at 20 requests per 15 minutes, with heavier limits on uploads and announcement sends.

✉️

Verified email

Email verification, honeypot fields, and password reset flows over Resend.

🙈

Admin can't peek

Admin sees the student register and platform counts. The admin's own journal is scoped to their own id, exactly like everyone else's.

Sustainability

Paid by students, not by advertisers

The free tier stays genuinely free and genuinely ad-free, because paid tiers cover the compute. Prices below are the ones currently in the code, exclusive of 18% GST.

Monthly Yearly
Free
₹0 forever
  • Every core module — notes, planner, finance, resume
  • Basic Dax help: concepts, summaries, general advice
  • No ads, no tracking, no data selling
Max
₹1,299 / month
  • Frontier-model reasoning for complex career decisions
  • Personalised roadmaps and priority queue
  • Everything in Pro, with the deepest context window
Roadmap

Shipped, shipping, and next

The principle throughout: never break what already works. Ship small, verify in the browser, commit per feature.

Phase 0 · Done

Foundation

Auth, dark mode, Notes, Photos, Planner, private Finance, Resume Builder, roles and admin console, Intelligence Center with live news and market data, Support and legal pages.

Phase 1 · Done

Go live

Render blueprint for the server, Vercel for the client, email verification, rate limiting, profile pages, code-split routes, PWA install.

Phase 2 · In progress

Placements & careers

Placement Hub with per-student status tracking, internship board, multiple stored resumes and more templates.

Phase 3 · Next

Community

Community feed with posts, polls and comments; student directory; pinned announcements and a real-time notification centre.

Phase 4 · Next

Resources & events

Notes graduate into a full Resource Library across file types, plus event management with RSVP and certificates, and group projects with kanban.

Phase 5 · Next

Growth & intelligence

Dax study companion and case coach, gamified contribution scores, skill exchange marketplace, public portfolio generator, analytics dashboards.

The creator
T. A. Dhatchina Moorthi

Founder · Engineer · Designer

T. A. Dhatchina Moorthi

Self-taught full-stack engineer · psychology student at KCLAS · sole author of DATAD

“I built DATAD alone — backend, frontend, database, design system and AI pipeline — because I watched my own batchmates run placement season across five disconnected apps, and no tool existed that understood the whole of student life. Not a startup exercise. Not a portfolio side project. The tool students actually needed, written by someone living the same problem.”

Built by a student, for students. Not designed in a boardroom —
built by someone who lived the problem.

🧠
Psychology first

Cognitive design

A psychology background applied directly to product decisions: no infinite scroll, no streak guilt, no manufactured urgency. Reflection and recovery are built in alongside productivity, because burnout is not a feature.

⌨️
Full stack, one person

End to end

Express API, React SPA, MongoDB schema design, the Dax AI pipeline, the design system, deployment and the docs — around 57,000 lines across 590 files, every one of them authored and reviewed by the same person.

❤️
Student-centric

One question, always

Every feature has to answer the same test before it ships: does this actually help someone? Anything that only helps the metrics doesn't get built.

Lines I won't cross

No adsEver. Your attention is yours.
No data sellingYour thoughts stay with you.
No dark patternsOnly genuine value.
const DATAD = {
  madeBy:      'one student',
  forWho:      'all students',
  hasAds:      false,
  sellingData: false,
  philosophy:  'human first',
};