kubestellar console
via PatrickJS/awesome-cursorrules
Multi-cluster Kubernetes dashboard development rules for React/TypeScript frontend and Go/Fiber backend.
What is kubestellar console?
KubeStellar Console rules enforce patterns for a multi-cluster Kubernetes dashboard built with React and Go. Use this rule when developing dashboard cards, data-fetching hooks, backend handlers, or styling components to ensure consistent caching, type safety, internationalization, and cluster deduplication across the project.
- Enforces data fetching through useCache/useCached* hooks with proper loading and demo-data state handling
- Requires array safety guards to prevent errors on undefined values
- Mandates named constants for magic numbers and semantic Tailwind classes for styling
- Ensures all user-facing strings use react-i18next translation keys
- Standardizes Go backend patterns with Fiber v2, structured logging, and proper JSON serialization
- Prevents duplicate cluster processing via DeduplicatedClusters() in 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
Use real, optimized images with proper alt text and responsive constraints instead of placeholders.
Laravel package development guide with PHP 8.3 features and best practices
Expert guidance for Laravel development with TALL Stack (Livewire, Alpine.js, Tailwind CSS) best practices.
Pipeline for downloading, quantizing, and uploading models with NVIDIA CUDA and AMD ROCm support on Linux.
YAML-based backend scaffolding for Manifest app development with structured entity and property definitions.

Expert guidance for building applications with Medusa, TypeScript, React, and TailwindCSS.