# Rahman Resources > Reusable Next.js + Convex + shadcn vertical-slice template kitab. Copy-first. Production-grade. Site: https://resource.rahmanef.com Repo: https://github.com/rahmanef63/resource-site Author: Rahman (https://rahmanef.com) ## Stack - [Next.js 16](https://nextjs.org/docs) - [React 19](https://react.dev) - [TypeScript 5.6](https://www.typescriptlang.org) - [Tailwind CSS 4](https://tailwindcss.com) - [shadcn/ui](https://ui.shadcn.com) - [Convex (self-hosted)](https://docs.convex.dev/self-hosting) - [@convex-dev/auth](https://labs.convex.dev/auth) - [Dokploy](https://dokploy.com) - [Radix UI](https://www.radix-ui.com) - [Lucide Icons](https://lucide.dev) ## What's in the box - **Vertical-Slice Architecture**: Each feature owns its config, page, views, components, settings, agent, and Convex mirror. Add or remove a feature by adding or removing one folder. - **Copy-First Flow**: Never greenfield. Every artifact comes from a proven source project (internal kitab-core, rahmanef.com, cescadesigns, notion-clone). Edit imports, ship. - **shadcn-only UI**: All components are shadcn primitives or composed from them. ResponsiveDialog, DateField, FileUpload — no raw HTML buttons or dialogs. - **audit-bp Gated**: Best-practice auditor pulls latest Next 16 / React 19 / Convex docs via Context7 before scoring. Score ≥80 to ship. - **Dokploy in One Command**: si-coder skill creates the GitHub repo, pushes, configures Dokploy, sets DNS, and triggers deploy. Zero human involvement. - **Self-hosted Convex + @convex-dev/auth**: No Clerk. Self-hosted Convex backend in the same docker-compose. Postgres-backed for prod. - **Auto-generated Slice Docs**: Per-slice DEPS.md, CONTRACT.md, STATUS.md, USAGE.md generated from imports + defineFeature config. - **Cookbook + Recipes**: 8 layout variants and 8 feature drop-ins (block editor, command palette, db views, comments, ...) ready to mount. ## Layouts ### Personal Brand OS - slug: `personal-brand-os` category: `website-template` source: saudivisuals.com + cescadesigns - Full-app personal site — public landing (hero, blog, portfolio, services, resources, contact) + admin dashboard (posts, leads, chatbot, comments). Inspired by saudivisuals.com + cescadesigns. Fill-in-the-blank with lorem ipsum. - repo path: `app/preview/personal-brand-os` - primary file: `app/preview/personal-brand-os/public/page.tsx` - detail: https://resource.rahmanef.com/layouts/personal-brand-os - agent recipe: Run `npx rr init --template personal-brand-os` (or `npx rr add personal-brand-os` inside an existing project). Personal Brand OS = full-app template (public + admin). 1) Default `npx rr add personal-brand-os` runs `--at root`: routes promoted to app/(public)/ + app/admin/, and /preview/personal-brand-os/* path constants in nav-config/site-config/robots/sitemap auto-rewritten. (Pass `--at preview` only for sandbox demos that keep /preview/personal-brand-os/* URLs.) 2) Edit components/templates/personal-brand/shared/site-config.ts — set brandName, ownerName, baseUrl, twitter, email. 3) Wire convex-templates/personal-brand-os/* into your convex/features/personal-brand-os/ (kitab ships them outside `convex/` so the bundler doesn't try to compile scaffolds without _generated) and add @convex-dev/auth on admin routes. 4) Replace localStorage StoreProvider with Convex queries (schema mirrors localStorage shape). ### Agency Studio OS - slug: `agency-studio-os` category: `website-template` source: saudivisuals.com + cescadesigns - Full-app B2B agency / studio site — public (home, services, work + project detail, about, contact) + admin (dashboard, projects pipeline, clients, services, leads, settings). Inspired by saudivisuals.com + cescadesigns. - repo path: `app/preview/agency-studio-os` - primary file: `app/preview/agency-studio-os/public/page.tsx` - detail: https://resource.rahmanef.com/layouts/agency-studio-os - agent recipe: Run `npx rr init --template agency-studio-os`. Agency Studio OS = full-app B2B agency template (public + admin). 1) Move app/preview/agency-studio-os/{robots,sitemap,opengraph-image}.* to app root. 2) Copy public into app/(public)/, admin into app/(admin)/. 3) Edit components/templates/agency-studio/shared/site-config.ts — set studioName, brandName, baseUrl, twitter, email. 4) Wire convex-templates/agency-studio-os/* into your convex/ (kitab ships them outside `convex/` so the bundler doesn't try to compile scaffolds without _generated) and add @convex-dev/auth on admin routes. 5) Replace localStorage StoreProvider with Convex queries. ### Landing — Hero Carousel - slug: `landing-hero-carousel` category: `marketing` source: cescadesigns - Full-width image carousel hero with auto-fade + dot indicators. Originally CMS-driven via Convex. Best for visual brands. - repo path: `cookbook/layouts/landing-hero-carousel` - primary file: `cookbook/layouts/landing-hero-carousel/src/HeroSection.tsx` - detail: https://resource.rahmanef.com/layouts/landing-hero-carousel - agent recipe: Run `npx rr add landing-hero-carousel`. Mount the HeroSection from cookbook/layouts/landing-hero-carousel as the hero of the marketing route group. Provide image array via props or wire to Convex api.heroImages.list. ### Landing — Asymmetric Masonry - slug: `landing-asymmetric-masonry` category: `marketing` source: rahmanef.com - 8-slot repeating asymmetric grid. Intersection-observer staggered scroll-reveal. Lifted from rahmanef.com portfolio. - repo path: `cookbook/layouts/landing-asymmetric-masonry` - primary file: `cookbook/layouts/landing-asymmetric-masonry/src/PortfolioGrid.tsx` - detail: https://resource.rahmanef.com/layouts/landing-asymmetric-masonry - agent recipe: Run `npx rr add landing-asymmetric-masonry`. Use PortfolioGrid for case-study or portfolio pages. Items array shape: { id, title, cover, href, category }. The 8-slot pattern repeats; supply at least 8 items for the layout to bloom. ### Landing — Bento Grid - slug: `landing-bento` category: `marketing` source: synthesized - Feature-grid marketing landing. Compose Card + Magnetic + KineticHeading. Modern SaaS feel. - repo path: `cookbook/layouts/landing-bento` - primary file: `README.md` - detail: https://resource.rahmanef.com/layouts/landing-bento - agent recipe: Run `npx rr add landing-bento`. Compose a 3-column CSS grid with explicit area assignments per feature. Mix Card sizes (1x1, 1x2, 2x1, 2x2) for visual rhythm. ### Landing — Kinetic Text - slug: `landing-kinetic-text` category: `marketing` source: rahmanef.com - Brand-forward landing. Letter-stagger headings + magnetic CTAs + marquee strips. Motion-heavy. - repo path: `cookbook/layouts/landing-kinetic-text` - primary file: `README.md` - detail: https://resource.rahmanef.com/layouts/landing-kinetic-text - agent recipe: Run `npx rr add landing-kinetic-text`. Use motion primitives marquee, kinetic-heading, magnetic from components/motion (already imported into the kitab from rahmanef.com). All respect prefers-reduced-motion automatically. ### Dashboard — Three Column - slug: `dashboard-three-column` category: `dashboard` source: kitab-core - Kitab flagship. Left tree / main / right inspector. Resizable, collapsible, mobile drawer fallback. Used by Database, Tasks, Contacts. - repo path: `cookbook/layouts/dashboard-three-column` - primary file: `template-base/frontend/shared/ui/layout/container/three-column/ThreeColumnLayout.tsx` - detail: https://resource.rahmanef.com/layouts/dashboard-three-column - agent recipe: Run `npx rr add dashboard-three-column`. Mount inside app/dashboard//page.tsx. Wrap with the kitab's . Slot in slice-specific sidebars and inspectors. Mobile auto-collapses to drawers. ### Dashboard — IDE - slug: `dashboard-ide` category: `dashboard` source: synthesized - Activity bar + tabs + editor + bottom panel. Editor-first apps (notion, code, doc tools). - repo path: `cookbook/layouts/dashboard-ide` - primary file: `README.md` - detail: https://resource.rahmanef.com/layouts/dashboard-ide - agent recipe: Run `npx rr add dashboard-ide`. Compose grid: 48px activity bar + tabs row + editor/inspector flex row + bottom console. Wire activity bar items to dispatch into tabs/inspector store. ### Dashboard — Mobile Dock - slug: `dashboard-mobile-dock` category: `dashboard` source: kitab-core - Mobile-first auth app. MobileTopBar + content + MobileDashboardDock bottom nav. Native-app feel on mobile, sidebar on desktop. - repo path: `cookbook/layouts/dashboard-mobile-dock` - primary file: `template-base/frontend/shared/ui/layout/dashboard/MobileDashboardShell.tsx` - detail: https://resource.rahmanef.com/layouts/dashboard-mobile-dock - agent recipe: Run `npx rr add dashboard-mobile-dock`. Use ResponsiveDashboardShell which branches desktop (sidebar) vs mobile (dock). Customize MobileDashboardDock items and MobileTopBar workspace switcher to your domain. ### CMS — Public Storefront - slug: `cms-public-storefront` category: `cms` source: kitab-core cms-lite - E-commerce / blog public storefront. Convex read-only. Cart context + currency selector + i18n. - repo path: `cookbook/layouts/cms-public-storefront` - primary file: `README.md` - detail: https://resource.rahmanef.com/layouts/cms-public-storefront - agent recipe: Run `npx rr add cms-public-storefront`. Port kitab-core slices/cms-lite/ into your project's app/(cms)/ route group. Fetch products/pages from Convex via api.cmsLite.* queries. ### Notion Page Clone OS — localStorage demo (pointer to open-silong for production) - slug: `notion-page-clone-os` category: `website-template` source: synthesized + notion-shell wrappers + notion-blocks bundle; production stack at github.com/rahmanef63/open-silong - localStorage-only DEMO of a Notion-clone surface — tree-structured sidebar + page editor + embedded databases. Built from rr's notion-shell wrappers (NotionSidebar / NotionPage / NotionBlock / NotionDatabase) + notion-blocks primitives (equation / code / notify / drag-fill grid) + createTemplateStore (localStorage + BroadcastChannel). No Convex, no auth, no multi-user — drop-in starter for evaluating the UI or embedding a Notion-style editor in your own project. **For the production-grade Convex-backed product (multi-workspace + auth + sharing + comments + snapshots + MCP), use the open-source open-silong repo: https://github.com/rahmanef63/open-silong (silong.rahmanef.com).** This rr template is the DEMO; the github repo is the PRODUCT. - repo path: `app/preview/notion-page-clone-os` - primary file: `app/preview/notion-page-clone-os/public/page.tsx` - detail: https://resource.rahmanef.com/layouts/notion-page-clone-os - agent recipe: Run `npx rr init --template notion-page-clone-os`. Cascades notion-shell (wrappers) + notion-blocks (4 editor primitives) + icon-picker. Edit components/templates/notion-page-clone/shared/site-config.ts to set brand; seed.ts to bootstrap docs + databases. Sidebar CRUD already wired — hover a row → +/✎/🗑. ### SaaS Marketing OS - slug: `saas-marketing-os` category: `website-template` source: synthesized + mdx-blog feature - Marketing site for a SaaS product — landing, pricing, features, blog, changelog, about, contact — backed by a full admin panel (Pages, Posts, Pricing, Features, Customers, Subscriptions, Leads, Changelog, Settings). Same grouped Pages + Features sidebar pattern as every other template. - repo path: `app/preview/saas-marketing-os` - primary file: `app/preview/saas-marketing-os/public/page.tsx` - detail: https://resource.rahmanef.com/layouts/saas-marketing-os - agent recipe: Run `npx rr init --template saas-marketing-os`. SaaS Marketing OS = public-only marketing template. Blog + changelog use MDX (add the mdx-blog feature). Edit components/templates/saas-marketing/shared/site-config.ts to set product name, tagline, pricing tiers, contact email. ### Kreator Studio OS - slug: `kreator-studio-os` category: `website-template` source: synthesized - Multi-channel content planner + voice trainer + repurposing engine + carousel maker. Public newsletter site + admin (planner, voice, scripts, carousels, assets, performance, comments). Bahasa Indonesia, ID-first. - repo path: `app/preview/kreator-studio-os` - primary file: `app/preview/kreator-studio-os/public/page.tsx` - detail: https://resource.rahmanef.com/layouts/kreator-studio-os - agent recipe: Run `npx rr init --template kreator-studio-os`. Kreator Studio OS = full-app content-creator template (public newsletter + 9-tab admin). 1) Edit components/templates/kreator-studio/shared/site-config.ts (brandName, ownerName, baseUrl, twitter). 2) Replace localStorage StoreProvider with Convex queries (state shape mirrors localStorage). 3) Wire Resend for newsletter + Midtrans tip-jar on public CTA. 4) Voice/Scripts/Carousels admin views are scaffolds — wire to ai-router (mid tier for voice-train/voice-apply, nano for shortform script). ### Konsultan OS - slug: `konsultan-os` category: `website-template` source: synthesized - Consultancy workspace — public services landing + case studies + admin (CRM, proposals AI, kontrak ID-aware, projects, PajakAware billing, documents). Indonesian-tax aware (PPN/PPh). - repo path: `app/preview/konsultan-os` - primary file: `app/preview/konsultan-os/public/page.tsx` - detail: https://resource.rahmanef.com/layouts/konsultan-os - agent recipe: Run `npx rr init --template konsultan-os`. Konsultan OS = full-app consultancy template (public services + 7-tab admin). 1) Edit components/templates/konsultan/shared/site-config.ts (brandName, ownerName, baseUrl). 2) Replace localStorage StoreProvider with Convex queries. 3) Add @convex-dev/auth + RBAC on /admin routes. 4) Wire Resend for proposal email + e-sign provider for contracts. 5) Billing view is PajakAware-ready — connect to Midtrans + Indonesian-tax calc on invoice generation. ### Wirausaha OS - slug: `wirausaha-os` category: `website-template` source: synthesized - Indonesian UKM operations hub — public storefront + 8-tab admin (multi-business registry, inventory, orders, customers/CRM, finance with AI laporan, staff). Bahasa Indonesia, mobile-first public. - repo path: `app/preview/wirausaha-os` - primary file: `app/preview/wirausaha-os/public/page.tsx` - detail: https://resource.rahmanef.com/layouts/wirausaha-os - agent recipe: Run `npx rr init --template wirausaha-os`. Wirausaha OS = full-app UKM template (mobile-first public storefront + 8-tab admin). 1) Edit components/templates/wirausaha/shared/site-config.ts. 2) Replace localStorage StoreProvider with Convex queries. 3) Wire Midtrans + QRIS for orders. 4) Add WhatsApp-bot for order confirmations. 5) Finance view scaffolds AI-laporan — connect to ai-router (mid tier) for narrative generation from monthly aggregates. ### Riset Kit - slug: `riset-kit` category: `website-template` source: synthesized - Research workspace — public knowledge-base reader + admin (document library, AI reader, literature review, citations, notes). Bahasa Indonesia academic-style, vector-search ready. - repo path: `app/preview/riset-kit` - primary file: `app/preview/riset-kit/public/page.tsx` - detail: https://resource.rahmanef.com/layouts/riset-kit - agent recipe: Run `npx rr init --template riset-kit`. Riset Kit = full-app research template (public KB reader + 6-tab admin). 1) Edit components/templates/research/shared/site-config.ts. 2) Replace localStorage StoreProvider with Convex queries. 3) Add @convex-dev/auth on /admin (single owner suffices). 4) Document library expects pdf-extract + vector-search — wire convex-vector-search component. 5) AI Reader wires ai-router (mid tier) for QA over uploaded PDFs. 6) Lit-review matrix is a scaffold — wire AI summarizer per cell. ### Hero — Centered - slug: `hero-centered` category: `marketing` source: kitab - Single-column centered hero with eyebrow pill, headline, sub-copy, and dual CTA. Radial gradient backdrop. - repo path: `app/preview/hero-centered` - primary file: `app/preview/hero-centered/page.tsx` - detail: https://resource.rahmanef.com/layouts/hero-centered - agent recipe: Run `npx rr add hero-centered`. Pure layout. Drop into landing pages where the product needs minimum framing. Replace the eyebrow pill with a status badge or release tag. Two CTAs is the sweet spot. ### Hero — Split (Text + Visual) - slug: `hero-split` category: `marketing` source: kitab - Two-column hero: left copy + feature list + CTAs, right visual slot. 9-cell mock grid placeholder for product shot. - repo path: `app/preview/hero-split` - primary file: `app/preview/hero-split/page.tsx` - detail: https://resource.rahmanef.com/layouts/hero-split - agent recipe: Run `npx rr add hero-split`. Right column accepts any visual — screenshot, product mock, illustration, or live demo iframe. Feature list pairs Lucide icons with one-line value props. ### Hero — Bento Background - slug: `hero-bento-bg` category: `marketing` source: kitab - Bento mini-grid behind a centered headline. Radial mask focuses the eye on the copy while the grid hints at features. - repo path: `app/preview/hero-bento-bg` - primary file: `app/preview/hero-bento-bg/page.tsx` - detail: https://resource.rahmanef.com/layouts/hero-bento-bg - agent recipe: Run `npx rr add hero-bento-bg`. Background tiles get a radial mask so the center stays readable. Use 6-8 tiles with asymmetric spans (col-span-2 row-span-2 for one, others 1x1). Lucide icon in each tile. ### Hero — Video Loop (dark) - slug: `hero-video-loop` category: `marketing` source: kitab - Dark-mode hero with conic-gradient animated backdrop (stand-in for video). Play CTA, headline, dual CTA. - repo path: `app/preview/hero-video-loop` - primary file: `app/preview/hero-video-loop/page.tsx` - detail: https://resource.rahmanef.com/layouts/hero-video-loop - agent recipe: Run `npx rr add hero-video-loop`. Replace the conic-gradient backdrop with a muted