How ollieolwage/address-book-app works
The product is a full-stack contact manager: users browse and search contacts, add or edit validated records, and confirm deletions; the Angular client calls an Express API backed by SQLite. The graph reflects the sampled list, API, validation, and persistence code. The form’s detailed behavior was not sampled, so its service wiring is not asserted.
Main entry points: contacts.ts Contact routes · contact-list.component.ts Contact list · app.routes.ts Screen routes · index.ts Express app
Components 13
Angular client
- App bootstrap
frontend/src/main.ts - App shell
frontend/src/app/app.component.ts - Screen routes
frontend/src/app/app.routes.ts - Contact list
frontend/src/app/components/contact-list/contact-list.component.ts - Contact form
frontend/src/app/components/contact-form/contact-form.component.ts - Delete confirmation
frontend/src/app/components/confirm-dialog/confirm-dialog.component.ts - HTTP service
frontend/src/app/services/contact.service.ts
Contacts API
- Express app
backend/src/index.ts - Contact routes
backend/src/routes/contacts.ts - Error handler
backend/src/middleware/errorHandler.ts
Contact domain
- Contact validation
backend/src/models/contact.ts
Persistence
- SQLite contacts
backend/src/db/database.ts
Other components
- User
Connections 15
- User → App bootstrap: uses app
- App bootstrap → App shell: bootstraps
- App shell → Screen routes: hosts routes
- Screen routes → Contact list: loads list
- Screen routes → Contact form: loads form
- User → Contact list: searches contacts
- Contact list → HTTP service: loads, deletes
- Contact list → Delete confirmation: requests confirmation
- User → Contact form: edits contact
- HTTP service → Express app: HTTP requests
- Express app → Contact routes: mounts routes
- Contact routes → Contact validation: validates input
- Contact routes → SQLite contacts: reads and writes
- Express app → Error handler: handles errors
- Contact routes → Error handler: forwards errors