docs: finalize report assets and polish dashboard UI
This commit is contained in:
parent
441e709193
commit
a6edf804b4
42 changed files with 1084 additions and 406 deletions
37
docs/diagrams/activity.mmd
Normal file
37
docs/diagrams/activity.mmd
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
flowchart LR
|
||||
subgraph Trigger[Trigger]
|
||||
A[Create / Update Domain]
|
||||
B[Manual Check List / Detail]
|
||||
end
|
||||
|
||||
subgraph UI[Web UI]
|
||||
C[Submit form domain]
|
||||
D[Call domains.check]
|
||||
E[Invalidate query + toast]
|
||||
end
|
||||
|
||||
subgraph API[tRPC domainsRouter]
|
||||
F[Save / load domain]
|
||||
G[Run domain check]
|
||||
end
|
||||
|
||||
subgraph DNS[DNS Check]
|
||||
H[Resolve IPv4 A record]
|
||||
I{Expected IP found?}
|
||||
end
|
||||
|
||||
subgraph Result[Persisted Status]
|
||||
J[MATCH]
|
||||
K[MISMATCH]
|
||||
L[UNRESOLVED]
|
||||
end
|
||||
|
||||
A --> C --> F --> D
|
||||
B --> D
|
||||
D --> G --> H --> I
|
||||
I -- Ya --> J
|
||||
I -- Tidak --> K
|
||||
H -- Lookup gagal --> L
|
||||
J --> E
|
||||
K --> E
|
||||
L --> E
|
||||
BIN
docs/diagrams/activity.png
Normal file
BIN
docs/diagrams/activity.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 86 KiB |
61
docs/diagrams/class.mmd
Normal file
61
docs/diagrams/class.mmd
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
classDiagram
|
||||
direction LR
|
||||
|
||||
class Server {
|
||||
+string id
|
||||
+string name
|
||||
+string primaryIpAddress
|
||||
+string secondaryIpAddress
|
||||
+string operatingSystem
|
||||
+string location
|
||||
+string provider
|
||||
+string description
|
||||
+server_status status
|
||||
+Date createdAt
|
||||
+Date updatedAt
|
||||
}
|
||||
|
||||
class Service {
|
||||
+string id
|
||||
+string serverId
|
||||
+string name
|
||||
+service_type type
|
||||
+int internalPort
|
||||
+int externalPort
|
||||
+service_protocol protocol
|
||||
+service_status status
|
||||
+string description
|
||||
+Date createdAt
|
||||
+Date updatedAt
|
||||
}
|
||||
|
||||
class Domain {
|
||||
+string id
|
||||
+string serviceId
|
||||
+string name
|
||||
+string expectedServerIp
|
||||
+string lastResolvedIp
|
||||
+string[] lastResolvedIps
|
||||
+domain_resolution_status resolutionStatus
|
||||
+Date lastCheckedAt
|
||||
+string remarks
|
||||
+string lastCheckMessage
|
||||
+Date createdAt
|
||||
+Date updatedAt
|
||||
}
|
||||
|
||||
class Catatan {
|
||||
+string id
|
||||
+string serverId
|
||||
+string title
|
||||
+string content
|
||||
+string category
|
||||
+Date createdAt
|
||||
+Date updatedAt
|
||||
}
|
||||
|
||||
Server "1" o-- "0..*" Service : memiliki
|
||||
Server "1" o-- "0..*" Catatan : memiliki
|
||||
Service "1" o-- "0..*" Domain : memiliki
|
||||
|
||||
note for Domain "resolutionStatus: MATCH, MISMATCH, atau UNRESOLVED"
|
||||
BIN
docs/diagrams/class.png
Normal file
BIN
docs/diagrams/class.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 138 KiB |
29
docs/diagrams/collaboration.mmd
Normal file
29
docs/diagrams/collaboration.mmd
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
graph TD
|
||||
Admin[Admin]
|
||||
Auth[Auth + Protected Route]
|
||||
UI[Dashboard Pages]
|
||||
Query[TanStack Query]
|
||||
TRPC[tRPC Client]
|
||||
Router[Protected Routers]
|
||||
DomainRouter[domainsRouter]
|
||||
Checker[DNS Check Module]
|
||||
DB[(PostgreSQL / Drizzle)]
|
||||
DNS[node:dns resolve4]
|
||||
Toast[Toast]
|
||||
|
||||
subgraph Client[Client Side]
|
||||
Auth --> UI --> Query --> TRPC
|
||||
UI --> Toast
|
||||
end
|
||||
|
||||
subgraph Server[Server Side]
|
||||
Router --> DB
|
||||
Router --> DomainRouter
|
||||
DomainRouter --> Checker
|
||||
Checker --> DNS
|
||||
Checker --> DB
|
||||
end
|
||||
|
||||
Admin --> Auth
|
||||
TRPC --> Router
|
||||
Router --> TRPC
|
||||
BIN
docs/diagrams/collaboration.png
Normal file
BIN
docs/diagrams/collaboration.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
29
docs/diagrams/sequence.mmd
Normal file
29
docs/diagrams/sequence.mmd
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
sequenceDiagram
|
||||
actor Admin
|
||||
participant UI as Web UI React
|
||||
participant TRPC as tRPC Client
|
||||
participant API as domainsRouter
|
||||
participant DB as PostgreSQL/Drizzle
|
||||
participant Checker as domain-check module
|
||||
participant DNS as DNS Resolver
|
||||
|
||||
Admin->>UI: Isi form domain dan pilih service
|
||||
UI->>TRPC: domains.create({ serviceId, name, expectedServerIp? })
|
||||
TRPC->>API: Kirim request create domain
|
||||
API->>DB: Validasi service dan server parent
|
||||
API->>DB: Insert domain, default expected IP dari server parent jika kosong
|
||||
DB-->>API: Domain berhasil dibuat
|
||||
API-->>TRPC: Data domain baru
|
||||
TRPC-->>UI: Data domain baru
|
||||
UI->>TRPC: domains.check({ id: created.id }) otomatis
|
||||
TRPC->>API: Kirim request DNS check
|
||||
API->>DB: Ambil domain berdasarkan id
|
||||
API->>Checker: runAndPersistDomainCheck(...)
|
||||
Checker->>DNS: resolve4(domain.name)
|
||||
DNS-->>Checker: Daftar IPv4 atau error
|
||||
Checker->>DB: Update resolutionStatus dan hasil check
|
||||
DB-->>Checker: Domain terbaru
|
||||
Checker-->>API: { domain, result }
|
||||
API-->>TRPC: { domain, check }
|
||||
TRPC-->>UI: Hasil DNS check
|
||||
UI->>UI: Invalidate domains.list, navigate detail, tampilkan toast
|
||||
BIN
docs/diagrams/sequence.png
Normal file
BIN
docs/diagrams/sequence.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 115 KiB |
10
docs/diagrams/state-chart.mmd
Normal file
10
docs/diagrams/state-chart.mmd
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
stateDiagram-v2
|
||||
[*] --> UNRESOLVED
|
||||
state "Checking DNS" as CHECKING
|
||||
|
||||
UNRESOLVED --> CHECKING : create/update/manual check
|
||||
MATCH --> CHECKING : re-check
|
||||
MISMATCH --> CHECKING : re-check
|
||||
CHECKING --> MATCH : expected IP ditemukan
|
||||
CHECKING --> MISMATCH : resolved IP berbeda
|
||||
CHECKING --> UNRESOLVED : DNS lookup gagal
|
||||
BIN
docs/diagrams/state-chart.png
Normal file
BIN
docs/diagrams/state-chart.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 33 KiB |
25
docs/diagrams/use-case.mmd
Normal file
25
docs/diagrams/use-case.mmd
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
flowchart LR
|
||||
Admin([Admin])
|
||||
Login((Sign in))
|
||||
Protected((Akses Dashboard Terproteksi))
|
||||
Dashboard((Melihat Dashboard Summary))
|
||||
Server((CRUD Server))
|
||||
Service((CRUD Service))
|
||||
Domain((CRUD Domain))
|
||||
AutoDns((Auto DNS Check saat Create/Update Domain))
|
||||
ManualDns((Manual DNS Check dari List/Detail Domain))
|
||||
Note((CRUD Catatan))
|
||||
Detail((Melihat Catatan pada Detail Server))
|
||||
Logout((Sign out))
|
||||
|
||||
Admin --> Login
|
||||
Login --> Protected
|
||||
Protected --> Dashboard
|
||||
Protected --> Server
|
||||
Protected --> Service
|
||||
Protected --> Domain
|
||||
Protected --> Note
|
||||
Domain --> AutoDns
|
||||
Domain --> ManualDns
|
||||
Server --> Detail
|
||||
Admin --> Logout
|
||||
BIN
docs/diagrams/use-case.png
Normal file
BIN
docs/diagrams/use-case.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 114 KiB |
Loading…
Add table
Add a link
Reference in a new issue