Initial NixPanel Build

This commit is contained in:
NixReaper
2026-04-05 10:45:21 -05:00
parent 9761e99f31
commit 16245b2d4b
94 changed files with 9228 additions and 0 deletions
+69
View File
@@ -0,0 +1,69 @@
// ─── JWT Payload ──────────────────────────────────────────────────────────────
export type Role = 'admin' | 'reseller' | 'user'
export interface JwtPayload {
sub: number
role: Role
username: string
iat?: number
exp?: number
}
// ─── Fastify type augmentation ────────────────────────────────────────────────
declare module 'fastify' {
interface FastifyRequest {
user?: JwtPayload
}
}
// ─── API Response helpers ─────────────────────────────────────────────────────
export interface ApiSuccess<T = unknown> {
success: true
data: T
}
export interface ApiError {
success: false
error: string
code?: string
}
export type ApiResponse<T = unknown> = ApiSuccess<T> | ApiError
// ─── Pagination ───────────────────────────────────────────────────────────────
export interface PaginationQuery {
page?: number
limit?: number
search?: string
status?: string
sortBy?: string
sortDir?: 'asc' | 'desc'
}
export interface PaginatedResult<T> {
items: T[]
total: number
page: number
limit: number
totalPages: number
}
// ─── System ───────────────────────────────────────────────────────────────────
export interface SystemStats {
cpu: number
memory: { total: number; used: number; free: number; percent: number }
disk: { total: number; used: number; free: number; percent: number }
load: [number, number, number]
uptime: number
}
export interface ServiceStatus {
name: string
status: 'running' | 'stopped' | 'failed' | 'unknown'
enabled: boolean
}