Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ jobs:

- uses: oxc-project/setup-node@8958a8e040102244b619c4a94fccb657a44b1c21 # v1.0.6


- uses: voidzero-dev/setup-vite-plus-action@5bd070e3dfe8fd6a967ab859304e95daa4e64ea0 # v1
with:
cache: true
Expand Down
14 changes: 14 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,56 +11,70 @@ A modern frontend dashboard for displaying different metrics using bar charts. B
- Install Node.js v20 or higher (verified working with v20.19.4)
- Install pnpm globally: `npm install -g pnpm` (requires pnpm v10 or higher)
- Bootstrap the repository:

```bash
pnpm install
```

- **Timing**: Takes approximately 10 seconds. NEVER CANCEL. Set timeout to 60+ seconds.

### Build and Development

- Build the project:

```bash
pnpm build
```

- **Timing**: Takes approximately 7 seconds. NEVER CANCEL. Set timeout to 60+ seconds.
- Builds TypeScript and creates production bundle with Vite
- **Expected output**: Creates `dist/` directory in `apps/dashboard/` with minified assets

- Start development server:

```bash
pnpm dev
```

- Starts at `http://localhost:5173/`
- **Timing**: Starts in under 1 second (192ms)
- Uses Vite with hot module replacement (HMR)

- Lint the code:

```bash
pnpm lint
```

- **Timing**: Takes approximately 2 seconds
- Runs ESLint across all packages
- **ALWAYS run before committing** to avoid CI failures

- Format the code:

```bash
pnpm fmt
```

- **Timing**: Takes approximately 2 seconds
- Runs vite fmt across all files
- **ALWAYS run before committing** to avoid CI failures

- Clean build artifacts:

```bash
pnpm clean
```

- **Timing**: Takes under 1 second
- Removes `dist/` directories

- Test command:

```bash
pnpm test
```

- **Note**: Currently no tests are configured, command runs but executes nothing
- Takes under 1 second

Expand Down
7 changes: 6 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
React 19 + TypeScript + Vite 7 dashboard. pnpm monorepo.

## Commands

```bash
pnpm install # Install deps (~10s, timeout 60s+)
pnpm dev # Dev server at localhost:5173
Expand All @@ -12,17 +13,21 @@ pnpm fmt # Format with vite fmt
```

## Structure

- `apps/dashboard/src/App.tsx` - Main dashboard with metrics
- `apps/dashboard/src/App.css` - Styles
- Root `package.json` - Workspace scripts

## Adding Metrics

Edit `App.tsx`: Add data array + metric object with id/name/icon/data/color.

## Search

You run in an environment where `ast-grep` is available; whenever a search requires syntax-aware or structural matching, default to `ast-grep --lang rust -p '<pattern>'` (or set `--lang` appropriately) and avoid falling back to text-only tools like `rg` or `grep` unless I explicitly request a plain-text search.

## Always

- Run `pnpm lint && pnpm build` before commits
- Prefer editing existing files over creating new ones
- Don't create docs unless explicitly requested
- Don't create docs unless explicitly requested
2 changes: 1 addition & 1 deletion apps/dashboard/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@vibe/dashboard",
"private": true,
"version": "0.1.0",
"private": true,
"type": "module",
"scripts": {
"dev": "vite dev",
Expand Down
85 changes: 60 additions & 25 deletions apps/dashboard/src/index.css
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap');
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap");
@import "tailwindcss";

/* Custom base styles - VoidZero inspired dark theme */
:root {
/* Typography system - clean sans-serif */
--font-display: 'Inter', system-ui, sans-serif;
--font-mono: 'JetBrains Mono', 'SF Mono', monospace;
--font-display: "Inter", system-ui, sans-serif;
--font-mono: "JetBrains Mono", "SF Mono", monospace;

font-family: var(--font-display);
line-height: 1.6;
font-weight: 400;
letter-spacing: -0.011em;

/* VoidZero-inspired color palette - dark mode default */
--color-bg: #08060D;
--color-bg: #08060d;
--color-bg-elevated: #0f0d14;
--color-surface: #16141c;
--color-text: #F4F3EC;
--color-text: #f4f3ec;
--color-text-muted: #8b8a85;
--color-border: #1f1d26;
--color-border-strong: #2a2833;
Expand Down Expand Up @@ -55,7 +55,7 @@ html:not(.dark) {
--color-bg: #fafafa;
--color-bg-elevated: #ffffff;
--color-surface: #f4f4f5;
--color-text: #08060D;
--color-text: #08060d;
--color-text-muted: #71717a;
--color-border: #e4e4e7;
--color-border-strong: #d4d4d8;
Expand Down Expand Up @@ -86,13 +86,15 @@ body {
min-height: 100vh;
background: var(--color-bg);
color: var(--color-text);
transition: background-color 0.2s ease, color 0.2s ease;
transition:
background-color 0.2s ease,
color 0.2s ease;
position: relative;
}

/* Subtle noise texture for depth - minimal like VoidZero */
body::before {
content: '';
content: "";
position: fixed;
inset: 0;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
Expand All @@ -102,18 +104,32 @@ body::before {
}

/* Typography - clean professional headings */
h1, h2, h3, h4, h5, h6 {
h1,
h2,
h3,
h4,
h5,
h6 {
margin: 0;
font-family: var(--font-display);
font-weight: 600;
letter-spacing: -0.025em;
line-height: 1.15;
}

h1 { font-size: 2.25rem; font-weight: 700; }
h2 { font-size: 1.5rem; }
h3 { font-size: 1.125rem; }
h4 { font-size: 1rem; }
h1 {
font-size: 2.25rem;
font-weight: 700;
}
h2 {
font-size: 1.5rem;
}
h3 {
font-size: 1.125rem;
}
h4 {
font-size: 1rem;
}

/* Monospace for code/technical elements */
.font-mono {
Expand Down Expand Up @@ -156,7 +172,11 @@ h4 { font-size: 1rem; }
}

/* Smooth transitions for interactive elements */
button, a, input, textarea, select {
button,
a,
input,
textarea,
select {
transition: all 0.2s ease;
}

Expand Down Expand Up @@ -204,7 +224,8 @@ button, a, input, textarea, select {

/* Gradient animations */
@keyframes gradient-shift {
0%, 100% {
0%,
100% {
background-position: 0% 50%;
}
50% {
Expand All @@ -219,7 +240,8 @@ button, a, input, textarea, select {

/* Floating animation */
@keyframes float {
0%, 100% {
0%,
100% {
transform: translateY(0px);
}
50% {
Expand All @@ -233,7 +255,8 @@ button, a, input, textarea, select {

/* Pulse glow effect - VoidZero orange accent */
@keyframes pulse-glow {
0%, 100% {
0%,
100% {
box-shadow: 0 0 20px rgba(244, 129, 32, 0.3);
}
50% {
Expand All @@ -246,15 +269,27 @@ button, a, input, textarea, select {
}

/* Stagger animation utilities */
.stagger-1 { animation-delay: 0.05s; }
.stagger-2 { animation-delay: 0.1s; }
.stagger-3 { animation-delay: 0.15s; }
.stagger-4 { animation-delay: 0.2s; }
.stagger-1 {
animation-delay: 0.05s;
}
.stagger-2 {
animation-delay: 0.1s;
}
.stagger-3 {
animation-delay: 0.15s;
}
.stagger-4 {
animation-delay: 0.2s;
}

/* Card hover lift effect */
@keyframes card-lift {
from { transform: translateY(0); }
to { transform: translateY(-4px); }
from {
transform: translateY(0);
}
to {
transform: translateY(-4px);
}
}

/* Accent underline on hover */
Expand All @@ -263,7 +298,7 @@ button, a, input, textarea, select {
}

.accent-underline::after {
content: '';
content: "";
position: absolute;
bottom: -2px;
left: 0;
Expand All @@ -289,7 +324,7 @@ button, a, input, textarea, select {
}

.active-bar::before {
content: '';
content: "";
position: absolute;
left: 0;
top: 0;
Expand Down
2 changes: 1 addition & 1 deletion apps/dashboard/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"files": [],
"compilerOptions": {
"composite": true,
"composite": true
},
"references": [
{ "path": "./tsconfig.app.json" },
Expand Down
2 changes: 1 addition & 1 deletion apps/dashboard/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export default defineConfig({
},
build: {
rolldownOptions: {
experimental: {
output: {
strictExecutionOrder: false,
},
},
Expand Down
2 changes: 1 addition & 1 deletion data/dependents.json
Original file line number Diff line number Diff line change
Expand Up @@ -1009,4 +1009,4 @@
]
}
}
}
}
2 changes: 1 addition & 1 deletion data/rolldown-version-stats.json
Original file line number Diff line number Diff line change
Expand Up @@ -889,4 +889,4 @@
"totalSize": 722474,
"buildTime": 985
}
]
]
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
{
"name": "vibe-dashboard",
"version": "0.1.0",
"description": "A frontend dashboard for displaying different metrics",
"private": true,
"packageManager": "pnpm@10.26.0",
"description": "A frontend dashboard for displaying different metrics",
"type": "module",
"scripts": {
"ready": "vite run fmt && vite run lint && vite run test && vite run build",
Expand All @@ -20,5 +19,6 @@
"playwright": "catalog:",
"top-github-dependents-by-stars": "catalog:",
"vite-plus": "catalog:"
}
},
"packageManager": "pnpm@10.26.0"
}
5 changes: 1 addition & 4 deletions packages/shared/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,5 @@
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"],
"references": [
{ "path": "../ui" },
{ "path": "../utils" }
]
"references": [{ "path": "../ui" }, { "path": "../utils" }]
}
Loading