How vishal-gaikwad17/bookshelf-studentresourcesharing works
StudyShelf is a student resource-sharing platform. Students sign in, upload files with resource metadata, browse and filter shared materials, then view, download, bookmark, or comment on resources. The graph includes the documented dashboard and theme capabilities; sampled route handlers support the backend calls and persistence shown. Page-level wiring and some UI behavior are described by the README but were not sampled, so those connections are limited to documented workflows.
Main entry points: [id]/route.ts Resource management · db.ts Database connection · auth.ts JWT utilities · resources/route.ts Resource feed API
Components 26
Student experience
- Resource feed
app/page.tsx - Resource details
app/resource/[id]/page.tsx - Upload form
app/upload/page.tsx - Dashboard
app/dashboard/page.tsx - Saved resources
app/bookmarks/page.tsx - Sign in/up
app/login/page.tsx - Auth state
context/AuthContext.tsx - Theme state
context/ThemeContext.tsx
Application API
- Auth endpoints
app/api/auth/login/route.ts - Resource feed API
app/api/resources/route.ts - Resource management
app/api/resources/[id]/route.ts - File upload API
app/api/upload/route.ts - Bookmark API
app/api/bookmarks/route.ts - Bookmark toggle
app/api/resources/[id]/bookmark/route.ts - Comments and ratings
app/api/resources/[id]/comments/route.ts - Download tracking
app/api/resources/[id]/download/route.ts
Domain data
- JWT utilities
lib/auth.ts - Database connection
lib/db.ts - Resource model
models/Resource.ts - User model
models/User.ts - Bookmark model
models/Bookmark.ts - Comment model
models/Comment.ts - Cloudinary client
lib/cloudinary.ts
External services
- MongoDB
- Cloudinary storage
Other components
- Student
Connections 47
- Student → Resource feed: browses
- Student → Sign in/up: signs in
- Student → Upload form: uploads
- Student → Resource details: views
- Student → Dashboard: manages uploads
- Student → Saved resources: views saved
- Sign in/up → Auth state: uses auth state
- Auth state → Auth endpoints: checks and updates
- Resource feed → Resource feed API: searches and filters
- Dashboard → Resource feed API: loads own uploads
- Dashboard → Resource management: edits and deletes
- Upload form → File upload API: sends file
- Upload form → Resource feed API: creates metadata
- Resource details → Resource management: loads resource
- Resource details → Comments and ratings: loads and posts
- Resource details → Bookmark toggle: toggles saved state
- Resource details → Download tracking: requests download
- Saved resources → Bookmark API: loads saved items
- Theme state → Student: provides theme state
- Auth endpoints → JWT utilities: signs and verifies
- Auth endpoints → Database connection: connects
- Auth endpoints → User model: reads and writes users
- Resource feed API → JWT utilities: checks identity
- Resource feed API → Database connection: connects
- Resource feed API → Resource model: queries and creates
- File upload API → JWT utilities: checks identity
- File upload API → Cloudinary client: uploads file
- Cloudinary client → Cloudinary storage: stores file
- Resource management → JWT utilities: checks identity
- Resource management → Database connection: connects
- Resource management → Resource model: reads and changes
- Resource management → Comment model: deletes related comments
- Resource management → Bookmark model: deletes related bookmarks
- Resource management → Cloudinary storage: deletes stored file
- Bookmark API → JWT utilities: checks identity
- Bookmark API → Database connection: connects
- Bookmark API → Bookmark model: loads saved items
- Bookmark toggle → JWT utilities: checks identity
- Bookmark toggle → Database connection: connects
- Bookmark toggle → Bookmark model: toggles record
- Comments and ratings → JWT utilities: checks identity
- Comments and ratings → Database connection: connects
- Comments and ratings → Comment model: reads and creates
- Comments and ratings → Resource model: updates rating totals
- Download tracking → Database connection: connects
- Download tracking → Resource model: increments count
- Database connection → MongoDB: connects