vccs
Composable charting components for Vue 3, ported from Recharts
Paste or drop a CSV to see per-column min, max, mean, median, and missing counts — all in your browser.
DataTypeScript · JavaScriptGitHub @ManSaintOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Paste or drop a CSV and instantly see per-column statistics — no upload, no sign-in, all in your browser.
Give it a CSV by pasting text, dropping a .csv file, or picking one with the file button. It parses the data locally and shows a table with one row per column:
• Numeric columns — min, max, mean, and median.
• Text columns — number of unique values and the most frequent one.
• Every column — how many values are missing (empty or whitespace) and how many are present.Read the full README ↗Paste or drop a CSV and instantly see per-column statistics — no upload, no sign-in, all in your browser.
Give it a CSV by pasting text, dropping a .csv file, or picking one with the file button. It parses the data locally and shows a table with one row per column:
Each column is labelled Numeric or Text so you can see at a glance how it was interpreted. Nothing is sent to a server — parsing and stats run entirely in the page.
Click any column header (or Tab to it and press Enter or Space) to sort the table by that column. Activating the same header again reverses the order; a third activation restores the original CSV column order. Only one column is sorted at a time, missing values always sort to the bottom, and the active header shows an arrow (▲ ascending, ▼ descending) alongside aria-sort for assistive tech.
bun install
bun run dev
Open http://localhost:3000 and paste a CSV.
| Command | Does |
|---|---|
bun run dev | dev server |
bun run build | production build |
bun run lint | Biome check |
bun run typecheck | route typegen + tsc |
bun run test | unit tests (Vitest) |
bun run test:e2e | end-to-end tests (Playwright) |
bun run test:a11y | accessibility scan (axe-core, WCAG 2.2 AA) |
lib/parseCsv.ts — wraps Papa Parse (header: true, skipEmptyLines: "greedy"), returning clean Record<string, string> rows plus any parse error.lib/stats.ts — pure functions that classify each column and compute its statistics. Fully unit-tested.lib/sortStats.ts — the pure three-state sort cycle (ascending → descending → original order) and comparator, including the null-sinks-to-bottom and tie-break-by-name rules. Fully unit-tested.components/ — CsvInput (paste / drop / pick), StatsTable, SortableHeader (the clickable, keyboard-operable column header), and TypeBadge, one per file.app/page.tsx — wires input to stats and renders the empty, error, and results states.Unit tests live beside the code they cover (lib/*.test.ts). End-to-end and accessibility specs live in e2e/. Every route is scanned against WCAG 2.2 A + AA — add new routes to the ROUTES array in e2e/a11y.spec.ts, since an unlisted route is not covered.
Bun, Next.js App Router, TypeScript strict, Tailwind CSS v4, Biome, Vitest, Playwright, Papa Parse.
Deployed on Vercel. Every pull request gets a preview build; production deploys are manual.