How jkutkut/shoplist works
ShopList is a web application for managing shopping lists, products, and teams. Users interact with the frontend to manage products and team membership, while the frontend’s versioned API services send requests through a shared HTTP client to the Rust API. The backend also runs a separate gRPC authentication service backed by PostgreSQL. The sampled sources establish frontend request flow and service startup, but do not show route-to-storage calls or the internal authentication RPC implementation, so those links are omitted.
Main entry points: route_handler.rs Route assembly · src/main.rs API startup · client.ts HTTP client · src/main.rs Auth service startup
Components 24
Web interface
- Product manager
front/src/components/product/ProductManager.tsx - List context
front/src/context/ListContext.tsx - List interface
front/src/components/list/ListLayout.tsx - Team administration
front/src/components/config/MembersAdministration.tsx - User service
front/src/api/versions/v1/userService.ts - Team service
front/src/api/versions/v1/teamService.ts - Product service
front/src/api/versions/v1/productService.ts - HTTP client
front/src/api/client.ts - Fetch transport
front/src/api/transport/fetchTransport.ts
HTTP API
- API startup
backend/api/src/main.rs - Route assembly
backend/api/src/route_handler.rs - User routes
backend/api/src/routes/user/mod.rs - Team routes
backend/api/src/routes/team/mod.rs - Product routes
backend/api/src/routes/product/mod.rs - List routes
backend/api/src/routes/list/mod.rs - Category routes
backend/api/src/routes/category/mod.rs
Authentication
- Auth RPC contract
proto/auth.proto - Auth service startup
backend/auth/src/main.rs - Auth database adapter
backend/auth/src/db.rs
Persistence
- PostgreSQL
- API database adapter
backend/api/src/db/mod.rs - API cache
backend/api/src/cache/mod.rs
Other components
- Shopper
- Account user
Connections 23
- Shopper → Product manager: manages products
- Shopper → List interface: manages lists
- Shopper → Team administration: administers team
- Product manager → Product service: creates updates deletes
- Team administration → Team service: requests membership
- User service → HTTP client: sends requests
- Team service → HTTP client: sends requests
- Product service → HTTP client: sends requests
- HTTP client → Fetch transport: dispatches HTTP
- Fetch transport → API startup: HTTP requests
- API startup → API database adapter: connects database
- API startup → API cache: initializes cache
- API startup → Route assembly: mounts routes
- Route assembly → User routes: assembles routes
- Route assembly → Team routes: assembles routes
- Route assembly → Product routes: assembles routes
- Route assembly → List routes: assembles routes
- Route assembly → Category routes: assembles routes
- Auth service startup → Auth database adapter: constructs adapter
- Auth service startup → Auth RPC contract: serves contract
- Auth service startup → PostgreSQL: connects database
- Account user → User service: account requests
- List interface → List context: reads list state