app: Classes binder + Mind Dump — v0.5.0

Two new tabs in the Studio Notebook:

- 📚 Classes: a binder for courses, workshops, books, and video series.
  Each class has a subject, source, link, status (taking / want / done),
  a what-it's-about note, photos, handout files, and dated pages of
  class notes that can be edited in place.
- 💭 Mind Dump: idea capture filed by category (things to make — with a
  medium: clay / wood / silver / metal / mixed — marketing, packaging,
  display & booth, shop & site, other) with spark / trying / did it /
  parked status, sketch photos, one-tap 'make it a to-do', and filters.
  The Today jot box gains a 💭 idea chip; those land as 'unsorted' to
  file later.

Schema: Course, CoursePage, Idea (additive; prisma db push at boot).
Files tab now labels attachments that belong to a class.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Bonna
2026-09-03 13:10:55 -05:00
parent 9e21895232
commit ca642046c7
7 changed files with 372 additions and 12 deletions

View File

@@ -167,3 +167,36 @@ model PriceEntry {
note String @default("")
created DateTime @default(now())
}
// ── Classes binder — a course, workshop, book, or video series Bonna learns from
model Course {
id Int @id @default(autoincrement())
title String
subject String @default("") // methods · skills · marketing · business · glaze chemistry …
source String @default("") // teacher / school / author / channel
url String @default("")
status String @default("taking") // taking · want · done
notes String @default("")
created DateTime @default(now())
pages CoursePage[]
}
model CoursePage {
id Int @id @default(autoincrement())
courseId Int
course Course @relation(fields: [courseId], references: [id], onDelete: Cascade)
title String @default("")
text String
created DateTime @default(now())
updated DateTime @default(now())
}
// ── Mind dump — ideas, filed by category ("" = unsorted, from the Today jot box)
model Idea {
id Int @id @default(autoincrement())
text String
category String @default("") // make · marketing · packaging · display · shop · other
medium String @default("") // for "make": clay · wood · silver · metal · mixed
status String @default("spark") // spark · trying · made · parked
created DateTime @default(now())
}