How ravvys/booksnest works
Booksnest is a role-based learning platform for discovering books and educational materials, with author submissions and librarian moderation. Readers browse approved content, borrow books or join waitlists, and manage comments and bookmarks; authors submit and manage content; librarians review submissions and administer the catalog and users. The frontend’s API modules connect its role-specific pages to the Express API, whose controllers delegate business operations to application use cases and MongoDB-backed repositories. The README documents additional email notifications and external-book discovery; wiring beyond the sampled book search service is not inferred.
Main entry points: controllers Request controllers · repositories Repository implementations · routes API routes · pages Role-based pages
Components 23
Web application
- Role-based pages
frontend/src/pages - App routes
frontend/src/App.jsx - Auth context
frontend/src/context/AuthContext.jsx - API client
frontend/src/api/apiClient.js - Feature API modules
frontend/src/api
HTTP API
- Express application
backend/src/app.js - API routes
backend/src/interfaces/routes - Auth and role checks
backend/src/interfaces/middleware - Request controllers
backend/src/interfaces/controllers
Application operations
- Accounts and access
backend/src/application/usecases/auth - Books and categories
backend/src/application/usecases/book - Learning materials
backend/src/application/usecases/materials - Borrow and return
backend/src/application/usecases/borrow - Waitlist operations
backend/src/application/usecases/queue - Reader interactions
backend/src/application/usecases - Librarian user admin
backend/src/application/usecases/users
Persistence
- Repository implementations
backend/src/infrastructure/repositories - MongoDB models
backend/src/infrastructure/database
External services
- Book search service
backend/src/infrastructure/services/BookSearchService.js - Google Books API
- Email notifications
backend/src/infrastructure/services/EmailService.js - Email provider
Other components
- Reader / Author / Librarian
Connections 27
- Reader / Author / Librarian → Role-based pages: uses
- App routes → Role-based pages: routes to
- App routes → Auth context: provides auth
- Role-based pages → Feature API modules: requests via
- Feature API modules → API client: uses
- API client → Express application: calls API
- Express application → API routes: mounts
- API routes → Auth and role checks: protects
- API routes → Request controllers: dispatches
- Request controllers → Accounts and access: delegates
- Request controllers → Books and categories: delegates
- Request controllers → Learning materials: delegates
- Request controllers → Borrow and return: delegates
- Request controllers → Waitlist operations: delegates
- Request controllers → Reader interactions: delegates
- Request controllers → Librarian user admin: delegates
- Accounts and access → Repository implementations: uses
- Books and categories → Repository implementations: uses
- Learning materials → Repository implementations: uses
- Borrow and return → Repository implementations: uses
- Waitlist operations → Repository implementations: uses
- Reader interactions → Repository implementations: uses
- Librarian user admin → Repository implementations: uses
- Repository implementations → MongoDB models: reads and writes
- Request controllers → Book search service: invokes
- Book search service → Google Books API: queries
- Email notifications → Email provider: sends mail