-- Annotations (one row per user per PDF) CREATE TABLE pdf_annotations ( id UUID PRIMARY KEY, user_id UUID REFERENCES users(id), pdf_id UUID NOT NULL, -- static ID for "playground" page_number INT NOT NULL, type TEXT CHECK (type IN ('highlight','note','sketch','tag')), payload JSONB NOT NULL, -- varies by type created_at TIMESTAMP DEFAULT now(), updated_at TIMESTAMP DEFAULT now() );
| Persona | Pain Point | Why this Feature Helps | |---------|------------|------------------------| | – 19‑24 y/o, uses a tablet for class notes | Needs to annotate quickly & export notes for assignments | In‑app sketch/highlight + export to .docx | | Innovation Manager – 30‑45 y/o, leads corporate workshops | Wants to pull out exercises & share with team | Search, AI‑generated cheat‑sheet, shareable link | | Freelance Designer – 28‑38 y/o, works offline often | Needs offline access & fast reference | Service‑worker caching + PDF download (licensed) | | Educator – 35‑55 y/o, runs design‑thinking courses | Must build syllabus & track student comments | Class‑room mode with shared annotations & progress tracking |
-- Shared sessions CREATE TABLE pdf_shares ( id UUID PRIMARY KEY, pdf_id UUID NOT NULL, owner_id UUID REFERENCES users(id), token TEXT UNIQUE NOT NULL, expires_at TIMESTAMP, created_at TIMESTAMP DEFAULT now() );
Playground By Aron Beauregard Pdf [portable]
-- Annotations (one row per user per PDF) CREATE TABLE pdf_annotations ( id UUID PRIMARY KEY, user_id UUID REFERENCES users(id), pdf_id UUID NOT NULL, -- static ID for "playground" page_number INT NOT NULL, type TEXT CHECK (type IN ('highlight','note','sketch','tag')), payload JSONB NOT NULL, -- varies by type created_at TIMESTAMP DEFAULT now(), updated_at TIMESTAMP DEFAULT now() );
| Persona | Pain Point | Why this Feature Helps | |---------|------------|------------------------| | – 19‑24 y/o, uses a tablet for class notes | Needs to annotate quickly & export notes for assignments | In‑app sketch/highlight + export to .docx | | Innovation Manager – 30‑45 y/o, leads corporate workshops | Wants to pull out exercises & share with team | Search, AI‑generated cheat‑sheet, shareable link | | Freelance Designer – 28‑38 y/o, works offline often | Needs offline access & fast reference | Service‑worker caching + PDF download (licensed) | | Educator – 35‑55 y/o, runs design‑thinking courses | Must build syllabus & track student comments | Class‑room mode with shared annotations & progress tracking | playground by aron beauregard pdf
-- Shared sessions CREATE TABLE pdf_shares ( id UUID PRIMARY KEY, pdf_id UUID NOT NULL, owner_id UUID REFERENCES users(id), token TEXT UNIQUE NOT NULL, expires_at TIMESTAMP, created_at TIMESTAMP DEFAULT now() ); -- Annotations (one row per user per PDF)