How arturn31/bookstore works
Books4You is a full-stack bookstore prototype. Readers browse and search a catalog, inspect book details and reviews, save books or manage their profiles, then use a cart and Stripe checkout to place orders and view order status. The architecture is server-first: route/UI interactions reach domain actions and services, which use repositories and Supabase; Stripe handles payment and webhook processing. The graph preserves documented discovery, account, social, and commerce capabilities. Some route and feature implementations were not sampled, so their connections rely on README statements rather than inspected calls.
Main entry points: server.ts Supabase and PostgreSQL · CheckoutService.ts Checkout orchestration · BookRepository.ts Book repository · CheckoutOrderRepository.ts Order repository
Components 25
Catalog discovery
- Catalog routes and UI
app/page.tsx - Catalog browsing
components/books/BooksManager.tsx - Book service
data/books/BookService.ts - Book search
hooks/SearchBar/useBookSearch.ts - Book details
app/book/[slug]/page.tsx
Accounts and community
- Book reviews
app/book/[slug]/components/Reviews/ReviewForm/ReviewForm.tsx - Review service
data/books/reviews/ReviewService.ts - User review management
data/books/reviews/useUserReviews.ts - Authentication
data/auth - Profiles and onboarding
data/user - Privacy settings
data/user/profile/PrivacySettingsService.ts - Wishlist and sharing
data/user/wishlist
Commerce and orders
- Cart experience
components/CartSidebar/CartSidebar.tsx - Cart service
data/cart/CartService.ts - Checkout form
app/checkout/useCheckoutForm.ts - Checkout action
data/checkout/CheckoutAction.ts - Checkout orchestration
data/checkout/services/CheckoutService.ts - Stripe payments
data/checkout/CheckoutStripeServer.ts - Order views
app/checkout/success/page.tsx - Payment webhook and reconciliation
app/api/webhooks/stripe/route.ts
Services and persistence
- Supabase and PostgreSQL
utils/db/server.ts - Book repository
data/books/BookRepository.ts - Order repository
data/checkout/repositories/CheckoutOrderRepository.ts - Database types
database.types.ts
Other components
- Reader
Connections 32
- Reader → Catalog routes and UI: browses
- Catalog routes and UI → Catalog browsing: renders
- Catalog browsing → Book service: fetches books
components/books/BooksManager.tsx - Book service → Book repository: queries
data/books/BookService.ts - Book repository → Supabase and PostgreSQL: reads catalog
- Reader → Book search: searches
- Book search → Book service: requests matches
hooks/SearchBar/useBookSearch.ts - Reader → Book details: opens book
- Book details → Book reviews: views reviews
- Book reviews → Review service: submits reviews
- Reader → Authentication: signs in
- Reader → Profiles and onboarding: manages profile
- Reader → Privacy settings: sets visibility
- Privacy settings → Supabase and PostgreSQL: persists settings
data/user/profile/PrivacySettingsService.ts - Reader → Wishlist and sharing: saves and shares
- Reader → User review management: manages reviews
- User review management → Review service: loads and deletes
data/books/reviews/useUserReviews.ts - Review service → Supabase and PostgreSQL: reads and writes
data/books/reviews/ReviewService.ts - Reader → Cart experience: adds books
- Cart experience → Cart service: updates cart
- Cart service → Supabase and PostgreSQL: persists cart
- Reader → Checkout form: checks out
- Checkout form → Checkout action: submits checkout
app/checkout/useCheckoutForm.ts - Checkout action → Checkout orchestration: executes checkout
- Checkout orchestration → Stripe payments: creates intent
data/checkout/services/CheckoutService.ts - Checkout orchestration → Order repository: persists order
data/checkout/services/CheckoutService.ts - Order repository → Supabase and PostgreSQL: stores order
- Reader → Order views: views order
- Payment webhook and reconciliation → Stripe payments: processes events
app/api/webhooks/stripe/route.ts - Payment webhook and reconciliation → Supabase and PostgreSQL: updates payment state
- Book repository → Database types: uses database types
data/books/BookService.ts - Order repository → Database types: uses database types
data/checkout/repositories/CheckoutOrderRepository.ts