Doop
Doop is an open-source multiplayer design canvas and design MCP for Claude Code, Codex, and any AI agent. Design side by side with agents — free in beta.
Frieda is a free dark finance dashboard template for shadcn/ui with an AI assistant and support chat built on chatcn.
DesignTypeScript · CSSGitHub @mesbahismailOnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Frieda is a dark finance SaaS dashboard built with shadcn/ui and chatcn. It ships as a free shadcn registry. It has 13 screens plus an app shell with ⌘K search, notifications, a widgets center and the Frieda AI assistant. Every button works and the demo runs on mock data.
Stack: Next.js 16 (App Router) · React 19 · Tailwind CSS v4 · shadcn/ui (Radix, Nova preset) · chatcn · lucide-react · sonner.
| Route | Block | What it shows |
|---|---|---|
/ | dashboard | Balance, money flow rings, activity, goals gauge, cards, quick links, recent transactions, quick transfer |
/wallet | wallet | Total balance chart, top spenders, top earners, top recipients |
/cards | cards | Card carousel (top up, details, freeze, edit, delete), top earners, card budget, recent transactions |
/cards/new | add-card | Live card preview, color picker, validated card form |
/transactions | transactions | Grouped transactions with filters, spending donut, budget, CSV report |
/analytics | analytics | Income management, income graph, spending, goal rings, savings |
/documents | documents | Grid and list views, sorting, drag-and-drop upload, preview, rename, share, delete |
/budget | budget | Monthly budget, latest transactions, spending pie, budget history, edit budget |
/recipients | recipients | A–Z list with search, favorites and sorting, profile with send, request, gift, edit, delete |
/rewards | rewards | Points, add points, order again, award shelves, redeem |
/help | help | Ticket stats, ticket tabs, response rate, FAQ, new ticket |
/help/tickets | tickets | Support chat on chatcn: replies, reactions, edit, pin, attachments, voice input, typing indicator, close and reopen |
/settings | settings | Profile, preferences, notifications, security, demo data reset |
Every date range menu changes the numbers on its page. Cards, recipients,
favorites, pinned widgets, points, orders, your budget, tickets and chats are
saved in this browser (localStorage, key frieda:v1). Settings → Demo data
resets them.
The data lives in lib/data.ts and the state in lib/store.ts. Swap them for
your API. Support replies come from a keyword matcher in the tickets block, and
the assistant answers from components/frieda/assistant/engine.ts. Replace them
with your support tool and your model calls.
Point the @frieda namespace at the deployed registry in components.json:
{
"registries": {
"@frieda": "https://YOUR-DOMAIN/r/{name}.json"
}
}
Install the theme first (so its colors replace the defaults), then the app:
npx shadcn@latest add @frieda/theme @frieda/app
Or pick single blocks, for example npx shadcn@latest add @frieda/theme @frieda/wallet.
Set up your root layout:
import { Poppins } from "next/font/google"
import { Toaster } from "@/components/ui/sonner"
import { TooltipProvider } from "@/components/ui/tooltip"
const poppins = Poppins({ variable: "--font-poppins", subsets: ["latin"], weight: ["300", "400", "500", "600"] })
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en" className={`dark ${poppins.variable}`}>
<body className="min-h-svh antialiased">
<TooltipProvider delayDuration={200}>{children}</TooltipProvider>
<Toaster theme="dark" position="bottom-center" />
</body>
</html>
)
}
The pages install into app/(frieda)/, which shares the app shell layout. Delete the
starter app/page.tsx so the dashboard serves /. The blocks build with the
cacheComponents and partialPrefetching defaults of new Next.js apps.
All items are in registry.json. The sources are in
src/registry/frieda and
src/components/ui/chat.
theme, font-poppins, lib, avatarschat (chatcn)ui-kit (panels, page header, charts, bank cards,
transactions, dialogs, avatars, product art, document thumbnails)app-shell, dashboard, wallet, cards, add-card,
transactions, analytics, documents, budget, recipients, rewards,
help, tickets, settingsapp (tagged freebie, price: "free")chat itemThe chats use chatcn (MIT, see
components/ui/chat/LICENSE). Upstream chatcn ships its CSS as one string,
which the current shadcn CLI rejects (css: expected record). Frieda vendors
the components and publishes the CSS as a record, so the @frieda/chat item
installs cleanly. scripts/registry-css.mjs generates it.
npm install
npm run dev
npm run registry:build copies the CSS from globals.css and chatcn.css into
registry.json, then writes the installable JSON to public/r
(npm run build does both). The demo routes in src/app re-export the blocks
from src/registry/frieda/blocks, so what you see is exactly what gets installed.
homepage in registry.json if you host the docs somewhere other than GitHub./r/{name}.json.@frieda/... work without any config, submit the namespace to the
shadcn registry directory.Free for personal and commercial projects. No resale or redistribution. See LICENSE.