Case Study
NishOS — Personal Productivity System
A full personal productivity system built on Supabase: tasks, projects, goals, fitness, nutrition, scheduling, and a markdown wiki — all synced to a Next.js app. Deep MCP integration with Claude Code for agentic workflows.
Problem
Off-the-shelf productivity tools (Notion, Todoist, Apple Notes, a calendar, a gym app, a meal tracker) each solve one slice of life and none of them talk to each other. The same human — me — was fragmented across a dozen apps with no single place to see what mattered, and no way for an AI assistant to reason over the whole picture.
NishOS is the replacement: one Postgres schema modelling tasks, projects, goals, career pipeline, fitness, nutrition, scheduling and a markdown knowledge wiki, with a Next.js frontend and deep MCP integration so Claude Code can read and write the whole system directly.
Approach
Treat personal data like a real product with a real schema. The PARA framework (Projects / Areas / Resources / Archive) shapes the taxonomy; every domain (career, fitness, nutrition, scheduling, knowledge) is modelled as first-class tables with foreign keys into a shared hierarchy of areas and goals.
The knowledge layer is a hybrid: local markdown files under `~/nish-os/wiki/` as the LLM's working copy, with a Supabase mirror as the durable system of record. Wikilinks (`[[slug]]`) and entity references (`{{entity_type:name}}`) resolve into a polymorphic knowledge graph via an `entity_links` table, so a note can link to a project, a career application or another note with equal ease.
Claude Code talks to NishOS through the Supabase MCP — every query, schema change and data mutation goes through the same typed interface — which turns routine productivity work into conversational workflows.
Technical Details
Supabase (Postgres, Auth, RLS, Storage) as the backend. Schema spans 30+ tables: areas with self-referential hierarchy, goals → projects → tasks, career_companies → career_applications → career_interviews, time_blocks with Google Calendar sync, workout_sessions / workout_sets / personal_records, nutrition_entries / nutrition_targets, notes / resources / entity_links / ingestion_log. Every table has RLS enforcing user_id scoping, and most carry tsvector columns for full-text search.
Frontend is Next.js 15 (App Router) with server components for read views and client components for interactive editors. TanStack Query handles data fetching and optimistic updates; tailwind for styling; Framer Motion for transitions. Weekly templates auto-populate time blocks; workout sessions roll up into personal records automatically; nutrition entries link back to the time block they were logged against.
The MCP layer exposes the entire database to Claude Code — ingest workflows write a markdown file locally, upsert a `notes` row, and create `entity_links` for every wikilink in a single session. An append-only `ingestion_log` table keeps a chronological record of every AI-driven operation.
Outcome
Live at app.nishalangovender.com and replacing Notion, Apple Notes, Capacities and Obsidian as the canonical system. Handles day-to-day task management, weekly reviews, the entire Netherlands/Germany job-search pipeline, workout logging, nutrition tracking and a growing personal knowledge wiki — all with a single AI assistant fluent in every domain.
Tech Stack