How noma-foundation/solvi works
Solvi is an internal desktop CRM for service teams. The visible workflow starts at employee login, then opens the home view; the navigation context registers customer, calendar, notification, and movement/inbox views. Customer management splits into client-list/add and selected-client detail/edit/delete flows, with components exchanging events and calling a desktop API bridge. The README also documents appointment validation, budgets, and financial entries, but their implementations are not present in the supplied tree. Backend internals are likewise unavailable, so those connections are shown only where documented or visibly invoked.
Main entry points: event-bus.js Event bus · context-manager.js View context · customer-control-panel.js Client list · customer-detail-panel.js Client details
Components 23
Application shell
- App startup
frontend/src/main.js - Login page
frontend/src/components/login-page/login-page.js - View context
frontend/src/utils/context-manager.js - Menu bar
frontend/src/components/menu-bar/menu-bar.js - Dashboard
frontend/src/components/dashboard/dashboard.js
Customer management
- Customer page
frontend/src/components/customer/customer.js - Client list
frontend/src/components/customer-control-panel/customer-control-panel.js - Client details
frontend/src/components/customer-detail-panel/customer-detail-panel.js - Client records
frontend/src/utils/customer-record.js - Loading states
frontend/src/utils/loading-state.js
UI framework
- Event bus
frontend/framework/event-bus.js - Event list
frontend/framework/collections/event-list.js - Event history
frontend/framework/collections/history.js - Component model
frontend/framework/interfaces/component-model.js
Service operations
- Activity calendar
frontend/src/views/calendar-page.js - Notifications
frontend/src/views/notification-page.js - Inbox / movement
frontend/src/views/movement-page.js - Backend API
backend - Budget approval
backend - Financial entries
backend
Other components
- Employee
- PostgreSQL
- Desktop API bridge
Connections 30
- Employee → Login page: enters credentials
frontend/src/components/login-page/login-page.js - App startup → Login page: creates
frontend/src/main.js - Login page → Backend API: authenticates
frontend/src/components/login-page/login-page.js - Login page → Event bus: publishes success
frontend/src/components/login-page/login-page.js - App startup → Event bus: subscribes
frontend/src/main.js - App startup → View context: opens home
frontend/src/main.js - View context → Dashboard: renders view
frontend/src/utils/context-manager.js - View context → Customer page: registers view
frontend/src/utils/context-manager.js - View context → Activity calendar: registers view
frontend/src/utils/context-manager.js - View context → Notifications: registers view
frontend/src/utils/context-manager.js - View context → Inbox / movement: registers view
frontend/src/utils/context-manager.js - View context → Menu bar: creates layout
frontend/src/utils/context-manager.js - Customer page → Client list: creates panel
frontend/src/components/customer/customer.js - Customer page → Client details: creates panel
frontend/src/components/customer/customer.js - Client list → Desktop API bridge: loads and adds
frontend/src/components/customer-control-panel/customer-control-panel.js - Client details → Desktop API bridge: edits and deletes
frontend/src/components/customer-detail-panel/customer-detail-panel.js - Client list → Client records: normalizes clients
frontend/src/components/customer-control-panel/customer-control-panel.js - Client details → Client records: normalizes client
frontend/src/components/customer-detail-panel/customer-detail-panel.js - Client list → Loading states: shows loading
frontend/src/components/customer-control-panel/customer-control-panel.js - Client details → Loading states: shows loading
frontend/src/components/customer-detail-panel/customer-detail-panel.js - Client list → Event bus: publishes selection
frontend/src/components/customer-control-panel/customer-control-panel.js - Client details → Event bus: publishes updates
frontend/src/components/customer-detail-panel/customer-detail-panel.js - Event bus → Client list: notifies changes
frontend/src/components/customer-control-panel/customer-control-panel.js - Event bus → Client details: notifies selection
frontend/src/components/customer-detail-panel/customer-detail-panel.js - Event bus → Event list: stores listeners
frontend/framework/event-bus.js - Event bus → Event history: records subscriptions
frontend/framework/event-bus.js - Component model → Customer page: provides base
frontend/src/components/customer/customer.js - Backend API → PostgreSQL: uses PostgreSQL
README.md - Backend API → Budget approval: supports approval
README.md - Backend API → Financial entries: supports entries
README.md