How xsmorex/loan-quote-service works
Loan Quote Service is a full-stack application: users enter loan details, receive a quote selected from eligible catalogue products, and can persist and review quotes. The backend also supports preview, retrieval, listing, and version-checked updates. The graph follows documented HTTP boundaries and sampled calls; unsampled implementation details are represented only where the README establishes the capability.
Main entry points: LoanQuotePage.tsx Quote page · quote-service.ts Quote service · server.ts Application composition · json-product-repository.ts Product catalogue adapter
Components 20
Loan quote interface
- Quote page
frontend/src/LoanQuotePage.tsx - Loan form
frontend/src/components/LoanForm.tsx - Form validation
frontend/src/utils/loanForm.ts - Quote display
frontend/src/components/QuoteResult.tsx - Product details
frontend/src/components/ProductDetails.tsx - Saved quotes
frontend/src/components/MyQuotes.tsx - Display formatting
frontend/src/utils/format.ts - Quote API client
frontend/src/api/quotes.ts - Quote list state
frontend/src/hooks/useQuotes.ts
HTTP and orchestration
- Fastify API
src/http/app.ts - Quote service
src/application/quote-service.ts - Repository ports
src/application/ports.ts - Application composition
src/server.ts
Quote decisioning
- Eligibility and selection
src/domain/product-rules.ts - Interest calculation
src/domain/interest.ts - Quote models
src/domain/models.ts
Catalogue and persistence
- Product catalogue adapter
src/infrastructure/json-product-repository.ts - Product catalogue
products.json - SQLite quote repository
src/infrastructure/sqlite-quote-repository.ts
Other components
- Borrower
Connections 27
- Borrower → Quote page: enters loan details
README.md - Quote page → Loan form: renders
frontend/src/LoanQuotePage.tsx - Quote page → Form validation: validates and converts
frontend/src/LoanQuotePage.tsx - Quote page → Quote API client: requests quote
frontend/src/LoanQuotePage.tsx - Quote page → Quote display: renders result
frontend/src/LoanQuotePage.tsx - Quote page → Product details: renders details
frontend/src/LoanQuotePage.tsx - Quote page → Saved quotes: renders saved quotes
frontend/src/LoanQuotePage.tsx - Quote page → Quote list state: loads quote list
frontend/src/LoanQuotePage.tsx - Quote list state → Quote API client: fetches quotes
frontend/src/hooks/useQuotes.ts - Quote display → Display formatting: formats values
frontend/src/components/QuoteResult.tsx - Product details → Display formatting: formats values
frontend/src/components/ProductDetails.tsx - Saved quotes → Display formatting: formats values
frontend/src/components/MyQuotes.tsx - Quote API client → Fastify API: sends HTTP requests
README.md - Application composition → Fastify API: builds API
src/server.ts - Application composition → Quote service: configures service
src/server.ts - Application composition → Product catalogue adapter: configures catalogue
src/server.ts - Application composition → SQLite quote repository: configures persistence
src/server.ts - Fastify API → Quote service: dispatches quote operations
src/http/app.ts - Quote service → Eligibility and selection: selects eligible product
src/application/quote-service.ts - Quote service → Interest calculation: calculates interest
src/application/quote-service.ts - Quote service → Product catalogue adapter: loads products
src/application/quote-service.ts - Quote service → SQLite quote repository: creates and manages quotes
src/application/quote-service.ts - Product catalogue adapter → Product catalogue: reads catalogue
README.md - Quote service → Quote models: uses quote data
src/application/quote-service.ts - Product catalogue adapter → Quote models: maps product data
src/infrastructure/json-product-repository.ts - SQLite quote repository → Quote models: maps persisted quotes
src/infrastructure/sqlite-quote-repository.ts - Quote service → Repository ports: implements repository contracts
src/application/quote-service.ts