Skip to content

Crypto Exchange

A regulated exchange, front to back: a moving price rail, a public markets screen, the custody facts, the fee schedule and the risk warning as a section rather than as small print.

8 routes8 pages · 30 blocks49 files · 6,768 lineslucide-reactAdded 14 Sept 2026

What's included

  • app/globals.css
  • app/layout.tsx
  • app/legal/page.tsx
  • app/login/page.tsx
  • app/markets/page.tsx
  • app/not-found.tsx
  • and 12 more files
  • 8 pages it is built from, installed with it
  • Needs lucide-react

Works with

  • React
  • Next.js
  • Tailwind CSS
  • TypeScript

npx hoverlab init crypto-exchange ./my-app

Or over MCP, from your editor's agent — no account needed.

License

Free to read, copy and install, for personal and non-commercial projects. Shipping it in client work or a paid product needs Pro ($79 once). The source lands in your repo and stops being ours — no attribution, nothing to upgrade.

Was this useful?

Every screen

BTC$63,204.10+2.41% up
ETH$3,118.62+1.08% up
SOL$147.93−3.22% down
USDC$1.00010.00% unchanged
XRP$0.5284−0.94% down
ADA$0.4471+5.67% up
AVAX$27.84+0.72% up
DOT$6.19−1.55% down

Indicative prices, delayed 15 minutes

MiCA-authorised · FCA-registered

An exchange that publishes the number you are actually paying

Spot trading on 214 assets, a real order book, and a fee schedule on the same page as the marketing. Withdraw to your own wallet whenever you like — there is no lock-up and never was.

30-day spot volume
$4.1bn
Taker fee, entry tier
0.10%
Assets listed
214
Reserves, attested monthly
1:1

Custody

Where the money actually is

The four facts that decide whether an exchange is safe to use, each one checkable rather than asserted. If a venue will not answer these, that is the answer.

98% in cold storage
Offline

Multi-party signing, three geographies, no single quorum holder

Client assets segregated
Ring-fenced

Held apart from company funds in a bankruptcy-remote entity

Proof of reserves
Monthly

Merkle-tree attestation you can verify against your own balance

Insurance on the hot wallet
$250m

Underwritten by a Lloyd’s syndicate, policy published in full

Operations

Measured, published, and externally checked

Numbers from the last twelve months. The status page is third-party hosted, so it stays up when we do not.

Matching engine uptime
99.99%

Rolling 12 months, measured externally and published at status.meridian.exchange

Median withdrawal
4 min

Fiat SEPA, business hours, last 90 days

Order latency, p99
11 ms

Frankfurt colocation, matched to acknowledgement

Regulated in
9 markets

MiCA authorisation in the EU, FCA registration in the UK

Three things, done properly

We are not trying to be a bank, a card, a social network and a launchpad. Trading, custody and reporting — and the reporting is the one everybody else treats as an afterthought.

Trade

A real order book, not a swap widget

Limit, market, stop and trailing orders on every pair, with the full depth visible and no hidden spread priced into the quote you are shown.

  • Post-only and reduce-only flags on every order type
  • The spread is shown; we do not widen it and call it "zero fee"
  • REST and WebSocket APIs on the same rate limits we use ourselves

Hold

Withdraw to your own wallet, always, without asking

Self-custody is a right and not a feature. There is no minimum holding period, no withdrawal lock on a promotional balance, and no support ticket between you and your keys.

  • Whitelist addresses with a 24-hour cooling period you control
  • Hardware-key 2FA, and no SMS fallback that defeats it
  • A full CSV and API export of every movement, going back to day one

Report

The tax export your accountant will accept

Cost basis computed per jurisdiction, including the disposal rules that differ between the UK, Ireland and Germany, with the working shown rather than a single number.

  • FIFO, LIFO and average-cost, switchable per tax year
  • Direct export to three filing tools, or plain CSV
  • Free on every tier — a tax report behind a paywall is a hostage

The fee schedule, in full

Volume bands, not subscription plans — there is no monthly charge and nothing to cancel. Your band is recalculated every day on a rolling 30-day window.

The fee schedule, in full — features by plan
FeatureEntryActivePopularProfessionalInstitutional
30-day volumeUnder $50k$50k – $1m$1m – $10mOver $10m
Maker fee0.08%0.04%0.02%0.00%
Taker fee0.10%0.08%0.05%0.03%
Crypto withdrawalNetwork fee onlyNetwork fee onlyNetwork fee onlyNetwork fee only
SEPA deposit and withdrawalIncludedIncludedIncludedIncluded
Dedicated API rate limitNot includedNot includedIncludedIncluded
Named account managerNot includedNot includedNot includedIncluded

Risk warning

Read this part before the marketing

Crypto assets are unregulated in several of the markets we serve and are high risk everywhere. This section is required by law in most of them and we would print it anyway.

  • The value of crypto assets can go down as well as upYou may get back less than you put in, and you may get back nothing at all. Past performance tells you nothing about future returns.
  • Crypto assets are not covered by a deposit guarantee schemeUnlike a bank account, there is no FSCS or equivalent compensation if we fail. This is why segregation and proof of reserves are on this page.
  • You are responsible for your own tax positionWe produce the report; we do not file it and we are not your accountant. Disposals are usually taxable even when you never touch fiat.
  • Do not trade with money you needWe will not lend you money to trade, we do not offer leverage to retail clients, and we would rather lose the account than the customer.

The questions worth asking any exchange

Including the ones we would rather you did not ask. If a competitor cannot answer these in writing, that tells you something.

Still deciding?

Our compliance team answers questions about custody and segregation directly, in writing, before you deposit anything.

Ask compliance a question
How do I know my money is not being lent out behind my back?

Because client assets sit in a separate, bankruptcy-remote entity and the monthly attestation is a Merkle tree you can check your own balance against — the leaf hash is in your account settings. We do not run a yield product, which is the mechanism by which this usually goes wrong.

What happens to my assets if you go out of business?

Client assets are segregated, so they are not part of the estate. The administrator returns them; they do not distribute them to our creditors. That is a legal structure rather than a promise, and it is the one question worth checking on any exchange.

Is "zero fee" trading elsewhere actually cheaper?

Usually not. Zero-fee venues make the money back on the spread, which is invisible at the moment you trade. Our spread is the order book’s and our fee is on this page, so the total cost is something you can calculate before you press the button.

Why do you need my identity documents?

Anti-money-laundering rules in all nine markets we are authorised in. We ask for the minimum the rule requires, delete the raw images after verification, and never sell or share the data. An exchange that skips this step is one regulatory action from freezing your withdrawals.

Can I use this through an API for a trading bot?

Yes, on every tier, with the same rate limits our own front end uses. Keys are scoped — a read-only key cannot place an order and a trading key cannot withdraw, which is the separation that saves people when a key leaks.

Live components in your current theme — switch routes, or the phone icon to check the mobile layout. Colours are this template’s Vault palette, which ships in app/globals.css. Deep teal on a cold near-white. The one hue no other palette in this set occupies, which is why it went to the exchange — finance reads as blue everywhere and teal is the nearest thing to blue that is not already spoken for.

Get it

49 files · .zip · nothing to configure · Pro

then

cd crypto-exchange
npm install
npm run dev

The archive contains the whole project — routes, blocks, theme tokens, Tailwind and PostCSS config, tsconfig and a .gitignore. One runtime dependency, and no Hoverlab dependency at all: it is your code from the moment it unzips.

For AI

The component, its props, the design tokens it expects and the command that installs it — as one prompt. Paste it into Claude, Cursor, v0 or ChatGPT and what they build around it will match the rest of the catalog instead of inventing its own system.

See the prompt

Routes

PathPageFile
/Crypto Exchange Landingapp/page.tsx
/marketsMarketsapp/markets/page.tsx
/securitySecurity & Trustapp/security/page.tsx
/statusStatus Pageapp/status/page.tsx
/legalLegal Documentapp/legal/page.tsx
/loginSign-In Screenapp/login/page.tsx
/signupSignup Pageapp/signup/page.tsx
404404 Pageapp/not-found.tsx

What you get

project root(8 files)

  • GETTING-STARTED.md
  • gitignore
  • next.config.ts
  • package.json
  • postcss.config.mjs
  • README.md
  • tailwind.config.ts
  • tsconfig.json

app/(10 files)

  • globals.css
  • layout.tsx
  • legal/page.tsx
  • login/page.tsx
  • markets/page.tsx
  • not-found.tsx
  • page.tsx
  • security/page.tsx
  • signup/page.tsx
  • status/page.tsx

components/(31 files)

  • activity-heatmap.tsx
  • auth-login-card.tsx
  • auth-signup-split.tsx
  • changelog-timeline.tsx
  • comparison-table.tsx
  • contact-sales-form.tsx
  • cta-sticky-bar.tsx
  • docs-layout.tsx
  • faq-accordion.tsx
  • faq-two-column.tsx
  • feature-rows.tsx
  • footer-compliance.tsx
  • footer-minimal.tsx
  • footer-status-locale.tsx
  • hero-metrics.tsx
  • hero-split.tsx
  • line-chart-panel.tsx
  • logo-cloud.tsx
  • maintenance-window-state.tsx
  • metric-sparkline-cards.tsx
  • navbar-simple.tsx
  • not-found-404.tsx
  • offline-state-banner.tsx
  • price-ticker-strip.tsx
  • pricing-value-split.tsx
  • retrieval-index-status.tsx
  • security-faq-list.tsx
  • security-posture-band.tsx
  • stats-benchmark-band.tsx
  • testimonial-ratings.tsx
  • theme-provider.tsx

Every file is listed. The 30 files in components/ are the blocks the pages import — each one has its own page if you want to read it on its own.

Project files

Everything except the blocks. Opens on app/globals.css — the file that makes the rest look right, since every block styles itself with bg-card and text-muted-foreground rather than literal colours.

app/globals.css
@tailwind base;
@tailwind components;
@tailwind utilities;

/**
 * Design tokens — the Vault palette.
 *
 * Deep teal on a cold near-white. The one hue no other palette in this set occupies, which is why it went to the exchange — finance reads as blue everywhere and teal is the nearest thing to blue that is not already spoken for.
 *
 * This file is the reason a pasted block looks right. Every block and page
 * styles itself with semantic classes — `bg-card`, `text-muted-foreground`,
 * `border-border` — rather than literal colours, so they inherit whatever
 * you define here instead of fighting it. Change a value below and every
 * section in the project moves with it. Change the hue on `--primary` and
 * `--ring` together and you have rebranded the site.
 *
 * Values are bare HSL channels, not `hsl(...)` calls. That is what lets
 * Tailwind compose them with an alpha suffix: `bg-primary/10` expands to
 * `hsl(var(--primary) / 0.1)`, which is impossible if the variable already
 * carries its own function wrapper.
 *
 * Every foreground/background pair below clears WCAG AA (4.5:1) in both
 * themes. If you retune one, check the pair rather than trusting the eye —
 * mid-lightness accents are the ones that fail.
 */

@layer base {
  :root {
    --background: 182 39% 99%;
    --foreground: 182 45% 9%;
    --card: 0 0% 100%;
    --card-foreground: 182 45% 9%;
    --popover: 0 0% 100%;
    --popover-foreground: 182 45% 9%;
    --primary: 182 78% 28%;
    --primary-foreground: 0 0% 100%;
    --secondary: 182 39% 96%;
    --secondary-foreground: 182 40% 20%;
    --muted: 182 26% 96%;
    --muted-foreground: 182 12% 41%;
    --accent: 196 60% 95%;
    --accent-foreground: 196 50% 22%;
    --destructive: 0 72% 45%;
    --destructive-foreground: 0 0% 100%;
    --border: 182 26% 90%;
    --input: 182 26% 90%;
    --ring: 182 78% 34%;

    --radius: 0.375rem;
  }

  .dark {
    --background: 182 40% 5%;
    --foreground: 182 15% 97%;
    --card: 182 32% 8%;
    --card-foreground: 182 15% 97%;
    --popover: 182 32% 8%;
    --popover-foreground: 182 15% 97%;
    --primary: 182 88% 72%;
    --primary-foreground: 182 45% 8%;
    --secondary: 182 25% 15%;
    --secondary-foreground: 182 15% 97%;
    --muted: 182 25% 15%;
    --muted-foreground: 182 12% 68%;
    --accent: 196 30% 18%;
    --accent-foreground: 196 40% 92%;
    --destructive: 0 62% 52%;
    --destructive-foreground: 0 0% 100%;
    --border: 182 22% 19%;
    --input: 182 22% 19%;
    --ring: 182 88% 72%;
  }
}

@layer base {
  * {
    @apply border-border;
  }

  body {
    @apply bg-background text-foreground antialiased;
  }

  /**
   * Global motion opt-out.
   *
   * Blocks guard their own animations with Tailwind's `motion-safe:`, but
   * third-party CSS and anything you add later will not. This is the
   * backstop: it neutralises every animation and transition on the page
   * for users who have asked the OS for reduced motion, rather than
   * relying on each author to remember.
   */
  @media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
      animation-duration: 0.01ms !important;
      animation-iteration-count: 1 !important;
      transition-duration: 0.01ms !important;
      scroll-behavior: auto !important;
    }
  }
}

More Marketing

Open the full page for this template

Marketing Site

A pricing page that answers the objection

Landing page, pricing page, 404. The smallest thing you can put in front of a product and have it look deliberate.

3 routes3 pages13 blocksVermilion
Pro
Open the full page for this template

Content Site

The article at a real measure

A publication that happens to belong to a company: blog index, article, careers and a 404. The site for when the writing is the product — or the marketing.

4 routes4 pages10 blocksInk
Pro
Open the full page for this template

Docs Site

The three-column docs frame

The three-column docs frame — sidebar, article, on-this-page rail — plus a changelog and a 404. The part of the product a search for an error message should find.

3 routes3 pages6 blocksAzure
Pro
Open the full page for this template

Help Centre

Search that answers before the ticket

The support surface, as four routes that agree with each other: searchable answers, the docs, what changed, and a status page carrying the same incident the help page announces.

5 routes5 pages13 blocksRose
Pro
Open the full page for this template

Developer Portfolio

The terminal that introduces you

An engineer’s site rather than a designer’s: a terminal hero, thirty legible lines of real code on the home page, the projects, the writing and a CV that prints.

8 routes8 pages26 blocksPhosphor
Open the full page for this template

Personal Résumé

A CV that prints properly

A minimal personal site whose home page is the CV itself — printable, indexable, and therefore the copy that actually gets maintained. Five routes, warm paper, square corners.

6 routes6 pages17 blocksLinen
Pro
Open the full page for this template

Conference Site

The agenda across three tracks

An event site built around a date: the ticket price step-up above the hero, a two-day programme across three tracks, speakers, venue and a code of conduct.

7 routes7 pages25 blocksMarquee
Pro
Open the full page for this template

Restaurant

The menu, typeset as a bill of fare

A dining room’s whole site: hours and phone above the fold, the menu typeset as a bill of fare, a real reservation flow, the room and the way to find it.

7 routes7 pages24 blocksLaurel
Pro
Open the full page for this template

Estate Agency

Map and results, scrolling apart

Property search with results already in it, a listing page that puts tenure and EPC above the prose, the agents, and a valuation route for the other half of the business.

6 routes6 pages23 blocksHeath
Pro
Open the full page for this template

Job Board

Salary on every row, grouped by craft

A two-sided board where candidates get the whole site and employers get one section and a price. Listings grouped by craft, each with a real salary range and the interview process published.

6 routes6 pages28 blocksFoundry
Open the full page for this template

Open Source Project

The install command, before anything else

A project site for a library: install command above the hero, the API in twenty lines, docs, changelog, roadmap, community, and who funds it said plainly.

7 routes7 pages21 blocksCarbon
Pro
Open the full page for this template

Directory

Facets that are not categories

A faceted index with a listing page that compares each entry against its alternatives, a paid submission route, and a published removal rate.

6 routes6 pages29 blocksMulberry
Pro
Open the full page for this template

Streaming Service

The watch screen, on the marketing page

A subscription video service: catalogue rails, a real watch screen with chapters and a transcript, one plan at one price, and the account behind it.

6 routes6 pages20 blocksNocturne