How pustamrai/ebooks works
This is an e-book catalog and download application with account registration, login, book submission, browsing, and book-detail views. Its main workflow is browsing the catalog, opening a book, and downloading its file; signed-in users can submit books, whose files are uploaded to Cloudinary and whose metadata is stored in MongoDB. Authentication uses cookie-backed tokens and a client-side context. The README is a generic Next.js starter and documents no product-specific capabilities; several page and API implementations were not excerpted, so their internal relationships are not inferred.
Main entry points: db.ts Database connection · add-book/route.ts Book submission API · Navbar.tsx Navigation · me/route.ts Current-user API
Components 26
Web experience
- Catalog page
src/app/(home)/page.tsx - Book list
src/components/home/BookList.tsx - Book card
src/components/home/BookCard.tsx - Book detail
src/app/books/[slug]/page.tsx - Download button
src/app/books/[slug]/components/DownloadButton.tsx - Submit book page
src/app/add-book/page.tsx - App layout
src/app/layout.tsx - Navigation
src/components/layouts/Navbar.tsx
Accounts
- Auth context
src/app/context/AuthContext.tsx - Login page
src/app/login/page.tsx - Login form
src/components/login/LoginForm.tsx - Signup page
src/app/signup/page.tsx - Signup form
src/components/signup/SignupForm.tsx - Logout control
src/components/LogoutButton.tsx - Current-user API
src/app/api/users/me/route.ts - Login API
src/app/api/users/login/route.ts - Signup API
src/app/api/users/signup/route.ts
Book catalog
- Book submission API
src/app/api/books/add-book/route.ts - Book listing API
src/app/api/books/list-books/route.ts - Single-book API
src/app/api/books/single-book/[slug]/route.ts
Application services
- Token verification
src/lib/auth/verifyToken.ts - File hosting
src/lib/cloudinary.ts - Database connection
src/lib/db.ts
Persistence
- Book model
src/models/book.models.ts - User model
src/models/user.models.ts
Other components
- Reader
Connections 31
- Reader → Catalog page: browses
src/app/(home)/page.tsx - Catalog page → Book list: renders
src/app/(home)/page.tsx - Book list → Book card: renders
src/components/home/BookList.tsx - Reader → Book detail: opens
src/app/books/[slug]/page.tsx - Book detail → Download button: renders
src/app/books/[slug]/page.tsx - Reader → Submit book page: submits
src/app/add-book/page.tsx - App layout → Navigation: renders
src/app/layout.tsx - App layout → Auth context: provides
src/app/layout.tsx - Navigation → Auth context: reads
src/components/layouts/Navbar.tsx - Navigation → Logout control: renders
src/components/layouts/Navbar.tsx - Navigation → Submit book page: routes to
src/components/layouts/Navbar.tsx - Reader → Login page: signs in
src/app/login/page.tsx - Login page → Login form: renders
src/app/login/page.tsx - Reader → Signup page: registers
src/app/signup/page.tsx - Signup page → Signup form: renders
src/app/signup/page.tsx - Auth context → Current-user API: fetches user
src/app/context/AuthContext.tsx - Current-user API → Token verification: verifies token
src/app/api/users/me/route.ts - Current-user API → User model: loads user
src/app/api/users/me/route.ts - Login API → User model: checks credentials
src/app/api/users/login/route.ts - Signup API → User model: creates user
src/app/api/users/signup/route.ts - Book submission API → Token verification: verifies token
src/app/api/books/add-book/route.ts - Book submission API → File hosting: uploads files
src/app/api/books/add-book/route.ts - Book submission API → Book model: creates book
src/app/api/books/add-book/route.ts - Book listing API → Book model: queries books
src/app/api/books/list-books/route.ts - Single-book API → Book model: loads book
src/app/api/books/single-book/[slug]/route.ts - Book submission API → Database connection: connects
src/app/api/books/add-book/route.ts - Login API → Database connection: connects
src/app/api/users/login/route.ts - Signup API → Database connection: connects
src/app/api/users/signup/route.ts - Book listing API → Database connection: connects
src/app/api/books/list-books/route.ts - Current-user API → Database connection: connects
src/app/api/users/me/route.ts - Book model → User model: references author
src/models/book.models.ts