minmon/docs/uml-guidance.md

176 lines
3.1 KiB
Markdown

# UML Guidance
## 1. Use Case Diagram
### Main Actor
- Admin
### Main Use Cases
- Sign in
- Access protected dashboard
- View dashboard summary
- Manage servers
- Manage services
- Manage domains
- Check DNS for a domain
- Manage notes
- View notes related to a specific server
- Sign out
## 2. Class Diagram
### Main Classes / Entities
#### Server
- id
- name
- primaryIpAddress
- secondaryIpAddress
- operatingSystem
- location
- provider
- description
- status
- createdAt
- updatedAt
#### Service
- id
- serverId
- name
- type
- internalPort
- externalPort
- protocol
- status
- description
- createdAt
- updatedAt
#### Domain
- id
- serviceId
- name
- expectedServerIp
- lastResolvedIp
- lastResolvedIps
- resolutionStatus
- lastCheckedAt
- remarks
- lastCheckMessage
- createdAt
- updatedAt
#### Note
- id
- serverId
- title
- content
- category
- createdAt
- updatedAt
### Relationships
- Server 1..\* Service
- Server 1..\* Note
- Service 1..\* Domain
- Service \*..1 Server
- Domain \*..1 Service
- Note \*..1 Server
### Implementation Notes
- Server detail page displays related notes for the selected server.
- Service forms select an existing server.
- Domain forms select an existing service.
- Note forms select an existing server.
## 3. Activity Diagram
Suggested activity: **Check DNS from Domain List**
Flow:
- Admin opens domain list
- Admin clicks the DNS status badge
- System resolves IPv4 A record(s)
- System compares resolved IPs with `expectedServerIp`
- System stores check result in the domain record
- System refreshes the list
- System shows `MATCH`, `MISMATCH`, or `UNRESOLVED`
## 4. State Chart Diagram
Suggested state chart: **Domain DNS Status**
States:
- UNRESOLVED
- MATCH
- MISMATCH
Transitions:
- DNS check success and expected IP found -> MATCH
- DNS check success and expected IP not found -> MISMATCH
- DNS resolution failure -> UNRESOLVED
## 5. Sequence Diagram
Suggested sequence: **Create Domain and Check DNS**
Objects:
- Admin
- Web UI
- tRPC API
- Database
- DNS Resolver
Flow:
- Admin opens create domain page
- UI loads available services
- Admin selects a service and submits the form
- API validates the service relationship
- API stores the domain
- Admin clicks DNS status / check action
- UI calls `domains.check`
- API resolves DNS A records
- API updates domain check fields in the database
- UI refetches and displays the new status
## 6. Collaboration Diagram
Show collaboration between:
- Admin
- Dashboard UI
- better-auth client / auth middleware
- tRPC routers
- Database
- DNS lookup module
Suggested emphasis:
- Protected route access
- CRUD coordination between UI and API
- Parent-child relationship selection in forms
- DNS checking and persistence flow
- Server detail page collaboration with note listing
## 7. UI/Interaction Notes for Documentation
Useful current UI details you can reflect in diagrams or captions:
- `/` redirects to `/dashboard` or `/login` based on session state
- Main list pages are ordered by `createdAt DESC`, then `id DESC`
- Delete actions use a two-click icon confirmation flow
- Domain DNS check is triggered from the DNS status badge in the list view