Meridian is an enterprise finance dashboard template for Next.js and shadcn/ui: 22 screens in light and dark, every figure computed from one seeded book (meridian.upfork.dev). It was scaffolded on 28 October 2026 with the latest stable version of every package and shipped on 30 October as a release ZIP made with git archive. Seventeen things on that road didn't behave as expected: version ranges that no longer fit, CLIs that answer prompts for you, a Next.js that writes into your project, and a release ZIP that once came out empty and once carried CRLFs git wouldn't convert.
What you'll learn here: how to set up Next.js 16.4 with TypeScript, ESLint 10, Tailwind 4, pnpm 12 and shadcn/ui 4.23 from a script, and how to make and check a release ZIP from a monorepo, each with the exact error and a fix you can reuse. How the dashboard itself works is in the main article.
What Meridian ended up on:
| Package | Version |
|---|
| next / react | 16.4.3 / 19.3.1 |
| typescript | ~6.0.3 |
| tailwindcss | 4.3.3 |
| shadcn (CLI) / radix-ui | 4.23.0, style new-york / 1.8.1 |
| eslint / eslint-config-next | 10.13.0 / 16.4.3 |
| eslint-plugin-tailwindcss | 4.4.0 |
| cn | 0.5.0 |
| pnpm / Node | 12.8.1 / 22.23.1 |
Three of the newest releases didn't fit together, and two tools changed their defaults.
shadcn's CLI 4.23 sets up projects from presets, so Meridian's components.json (style new-york, Radix, neutral) was written by hand, and every component was added with pnpm dlx shadcn@4.23.0 add <names> --yes. Primitives edited for Meridian carry a comment starting Meridian:, so a buyer re-adding one with --overwrite can see what they would undo. Chart, form, checkbox, select, table and five more were written from the registry's JSON instead of the CLI, because chart.json pins recharts@3.8.0 and the project has 3.10.1.
The buyer's ZIP is git archive of the committed folder, without the build log, the lessons or the screenshots: git -c core.autocrlf=false -c core.eol=lf archive --format=zip --prefix=meridian/ -o dist/meridian-1.0.0.zip HEAD:meridian, run from the repository root, with .gitattributes keeping docs/, qa/ and the listing scripts out. The 1.0.0 ZIP holds 337 files with 0 CRs and 0 NUL bytes, and an unzipped copy passes pnpm install --frozen-lockfile and pnpm build. Five lessons came out of getting there.
The listing's pictures and its tour video were made by Playwright scripts (scripts/listing-shots.mjs and listing-video.mjs), so they can be retaken after any change. Two things went wrong on the way.
Comments
0 comments
No comments yet. Questions, what you built with it, what could be better: its developer reads them.
Sign in to comment.
Sign in to comment