How wildanferdiansyah06-crypto/kelas-pekerja works
Kelas Pekerja is a headless literary publishing and reading platform. Readers browse published books and posts, open book details, read with adjustable display preferences, and save bookmarks or reading progress; contributors can submit stories and quotes for review. Sanity provides published content and user bookmark state, while the Next.js API layer also connects to a Java backend for submissions and book services. The README documents Supabase relational storage and Google OAuth; source excerpts show Sanity-backed user operations, so those documented integrations are shown separately. Unsampled routes and backend features are included only where the tree or README supports them.
Main entry points: user.ts User data operations · BookDetailClient.tsx Book details · api.ts Content API · route.ts Story submission API
Components 27
Reading experience
- Next.js routes
src/app/page.tsx - Book details
src/components/BookDetailClient.tsx - Book cards
src/components/BookCard.tsx - Reader preferences
src/contexts/ReaderContext.tsx - Language context
src/contexts/LanguageContext.tsx
Content services
- Content API
src/lib/api.ts - Sanity client
src/sanity/lib/client.ts - Content schemas
src/sanity/schemas/book.ts - Sanity Studio
src/app/y/[[...tool]]/page.tsx - Sanity Content Lake
Identity and state
- NextAuth handler
src/app/api/auth/[...nextauth]/route.ts - Google OAuth
- Bookmarks and progress
src/hooks/useBookmarks.ts - User data operations
src/lib/user.ts - Supabase database
Community submissions
- Story submission API
src/app/api/submit-story/route.ts - Quote submission API
src/app/api/submit-quote/route.ts
Java services
- Java API client
src/lib/java-api.ts - Story controller
backend/src/main/java/com/kelaspekerja/backend/controller/StoryController.java - Story repository
backend/src/main/java/com/kelaspekerja/backend/repository/StoryRepository.java - Story model
backend/src/main/java/com/kelaspekerja/backend/model/Story.java - Book controller
backend/src/main/java/com/kelaspekerja/backend/controller/BookController.java - Book repository
backend/src/main/java/com/kelaspekerja/backend/repository/BookRepository.java - Book model
backend/src/main/java/com/kelaspekerja/backend/model/Book.java
Other components
- Reader
- Contributor
- Discord webhook
Connections 28
- Reader → Next.js routes: browses
README.md - Next.js routes → Content API: loads content
- Content API → Sanity client: queries
src/lib/api.ts - Sanity client → Sanity Content Lake: fetches content
src/sanity/lib/client.ts - Sanity Studio → Content schemas: edits content
README.md - Content schemas → Sanity Content Lake: defines content
- Book details → Reader preferences: reads preferences
src/components/BookDetailClient.tsx - Book details → Bookmarks and progress: renders bookmark control
src/components/BookDetailClient.tsx - Book cards → Language context: reads language
src/components/BookCard.tsx - Book details → Language context: reads language
src/components/BookDetailClient.tsx - Book cards → Bookmarks and progress: renders bookmark control
src/components/BookCard.tsx - Bookmarks and progress → User data operations: loads and updates
src/hooks/useBookmarks.ts - User data operations → Sanity client: reads and writes
src/lib/user.ts - NextAuth handler → User data operations: uses user operations
src/app/api/auth/[...nextauth]/route.ts - NextAuth handler → Google OAuth: OAuth flow
README.md - Content API → Supabase database: updates view state
src/lib/api.ts - User data operations → Supabase database: stores relational state
- Contributor → Story submission API: submits story
src/app/api/submit-story/route.ts - Contributor → Quote submission API: submits quote
src/app/api/submit-quote/route.ts - Story submission API → Java API client: saves story
src/app/api/submit-story/route.ts - Quote submission API → Java API client: saves quote
src/app/api/submit-quote/route.ts - Story submission API → Discord webhook: notifies with submission
src/app/api/submit-story/route.ts - Quote submission API → Discord webhook: sends notification
src/app/api/submit-quote/route.ts - Java API client → Story controller: calls backend
- Story controller → Story repository: queries and saves
backend/src/main/java/com/kelaspekerja/backend/controller/StoryController.java - Story controller → Story model: reads and validates
backend/src/main/java/com/kelaspekerja/backend/controller/StoryController.java - Book controller → Book repository: queries books
backend/src/main/java/com/kelaspekerja/backend/controller/BookController.java - Book repository → Book model: persists
backend/src/main/java/com/kelaspekerja/backend/repository/BookRepository.java