kubestellar console
via PatrickJS/awesome-cursorrules
Multi-cluster Kubernetes dashboard development rules for React/TypeScript frontend and Go/Fiber backend.
What is kubestellar console?
Enforces KubeStellar Console development patterns across React card components, Go backend handlers, and styling conventions. Use this rule when building dashboard features, data-fetching hooks, or backend APIs for the multi-cluster console.
- Enforces React card component patterns with useCache hooks and proper loading state handling
- Requires array safety guards to prevent runtime errors on undefined data
- Mandates Tailwind CSS styling with semantic color tokens and cn() utility for className merging
- Enforces i18n via react-i18next for all user-facing strings
- Standardizes Go/Fiber backend handlers with structured logging and proper JSON serialization
- Requires cluster deduplication when iterating clusters across multi-cluster queries
Applies to
File patterns this rule matches.
Rule definition (reference)
Source of truth, from the repository.
KubeStellar Console Development Rules
Project Structure
- Frontend: React + TypeScript in
/web/ - Backend: Go (Fiber v2) in root directory
- Build:
cd web && npm run build && npm run lintbefore every commit - Cards: Dashboard card components in
web/src/components/cards/ - Hooks: Data fetching hooks in
web/src/hooks/
Card Development
- All data fetching MUST go through
useCache/useCached*hooks - Always destructure and pass
isDemoDataandisRefreshingtouseCardLoadingState() - Never use demo data during loading:
isDemoFallback && !isLoading - Hook ordering:
useCardLoadingStateAFTER hooks providingisDemoData
Array Safety
- NEVER call
.join(),.map(),.filter(),.forEach(),for...ofon values that might be undefined - Always guard:
(data || []).map(...)or(data || []).join(', ')
No Magic Numbers
- Numeric literals should be named constants, except trivial literals (
0,1,-1) in clear local contexts - Use constants from
lib/constants/(time.ts, network.ts, ui.ts)
Styling
- Tailwind CSS with
cn()utility for merging classNames - Never use raw hex colors — use semantic Tailwind classes (
text-foreground,bg-primary,bg-card) - Status colors:
text-green-400/bg-green-500/10(success),text-yellow-400/bg-yellow-500/10(warning),text-red-400/bg-red-500/10(error),text-cyan-400/bg-cyan-500/10(info) — these map to the design system's semantic status tokens and are the only permitted palette classes
Internationalization
- All user-facing strings use
t()fromreact-i18next - Keys in
web/src/locales/en/JSON files - Never use raw strings for UI text
Go Backend
- Fiber v2 handlers:
func(c *fiber.Ctx) error - Use
fiber.NewError(statusCode, message)for errors - Always
make([]T, 0)notvar x []T(nil → null in JSON) - Use
log/slogfor structured logging - Multi-cluster queries use goroutines + sync.WaitGroup
Cluster Deduplication
- Always use
DeduplicatedClusters()when iterating clusters - Multiple kubeconfig contexts can point to same physical cluster
Related rules
Senior full-stack TypeScript, React, Node.js guidance with clean architecture, testing, and WHY-oriented reasoning.
Quantitative factor research skills for designing, evaluating, and mining alpha factors in equities markets.
Android development with Jetpack Compose, clean architecture, and Material Design 3.
Angular development with Novo Elements UI library using standalone components.
Expert Angular 18 + TypeScript development with Jest, emphasizing clean code and performance.
Manage Kubernetes clusters, add-ons, stacks, and credentials via the Ankra CLI platform.