rahman-resources 1.2.0 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/manifest.json +740 -17
- package/package.json +1 -1
package/lib/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 2,
|
|
3
|
-
"generatedAt": "2026-05-
|
|
3
|
+
"generatedAt": "2026-05-16T15:42:08.348Z",
|
|
4
4
|
"repo": "rahmanef63/resource-site",
|
|
5
5
|
"branch": "main",
|
|
6
6
|
"layouts": [
|
|
@@ -1341,11 +1341,102 @@
|
|
|
1341
1341
|
"resend"
|
|
1342
1342
|
]
|
|
1343
1343
|
},
|
|
1344
|
+
{
|
|
1345
|
+
"slug": "ai-chat",
|
|
1346
|
+
"title": "AI Chat — Workbench / Sidebar / Search",
|
|
1347
|
+
"category": "ai",
|
|
1348
|
+
"description": "One conversational AI feature, three render modes. Same Convex backend (threads + streaming + tool calls + RAG), pick the surface via prop:\n\n • workbench — Claude.ai / ChatGPT three-column page (default)\n • sidebar — collapsible copilot panel inside another CRUD app\n • search — single-question + answer + citations (Perplexity)\n\nUse cases:\n – Customer-support chatbot embedded in your marketing site\n – Developer copilot in your PR/docs admin\n – Knowledge-base search over your blog + docs corpus\n – Internal AI assistant in your dashboard\n\nWhat it ships: multi-provider (Anthropic / OpenAI / Google / Mistral / Ollama), multimodal (text + image + PDF + audio), typed tool calls with inline inspector, agent mode (plan→execute→reflect), branching threads, RAG citations, resumable streams, usage telemetry. Public surface = consumer chat; admin surface = persona, fallback, guardrails per-bot.",
|
|
1349
|
+
"source": "rahmanef63/resource-site",
|
|
1350
|
+
"docsUrl": "https://sdk.vercel.ai/docs",
|
|
1351
|
+
"install": "npm i ai @ai-sdk/anthropic @ai-sdk/openai",
|
|
1352
|
+
"npmPackages": [
|
|
1353
|
+
"ai",
|
|
1354
|
+
"@ai-sdk/anthropic",
|
|
1355
|
+
"@ai-sdk/openai"
|
|
1356
|
+
],
|
|
1357
|
+
"exampleCode": "",
|
|
1358
|
+
"agentRecipe": "Run `npx rr add ai-chat`. Pick `mode=\"workbench\" | \"sidebar\" | \"search\"` on `<AIChat />` (or use the convenience exports `<AIChatWorkbench />`, `<AIChatSidebar />`, `<AIChatSearch />`). Same backend tables + streaming action for all three.",
|
|
1359
|
+
"tags": [
|
|
1360
|
+
"ai",
|
|
1361
|
+
"ai:chat",
|
|
1362
|
+
"streaming",
|
|
1363
|
+
"multimodal",
|
|
1364
|
+
"tool-calls",
|
|
1365
|
+
"agent-mode",
|
|
1366
|
+
"rag",
|
|
1367
|
+
"citations",
|
|
1368
|
+
"branching",
|
|
1369
|
+
"history"
|
|
1370
|
+
]
|
|
1371
|
+
},
|
|
1372
|
+
{
|
|
1373
|
+
"slug": "ai-studio",
|
|
1374
|
+
"title": "AI Studio — Generation Canvas",
|
|
1375
|
+
"category": "ai",
|
|
1376
|
+
"description": "AI is the primary UI — single big prompt input → live-streaming output → variation grid → version tree. Suno / Midjourney / Lovable / v0 pattern. Output kinds: text, code, image, audio (configurable per template).\n\nUse cases:\n – AI image generation product (creative output)\n – AI logo / banner / social-post studio\n – AI code-snippet generator (component scaffolder)\n – AI music / voiceover producer\n – AI blog-draft factory (text)\n\nFeatures: prompt history, branch + compare outputs, like + favorite, share-to-link, templates from ai-admin.",
|
|
1377
|
+
"source": "rahmanef63/resource-site",
|
|
1378
|
+
"install": "",
|
|
1379
|
+
"npmPackages": [],
|
|
1380
|
+
"exampleCode": "",
|
|
1381
|
+
"agentRecipe": "Run `npx rr add ai-studio`. Mount `<GeneratorCanvas />` at /. Use case: prompt → output IS the entire product. Wire your output renderer (text/image/code/audio) via the OutputSlot adapter. Templates loaded from ai-admin.studio.templates.",
|
|
1382
|
+
"tags": [
|
|
1383
|
+
"ai",
|
|
1384
|
+
"ai:studio",
|
|
1385
|
+
"generation",
|
|
1386
|
+
"streaming",
|
|
1387
|
+
"history",
|
|
1388
|
+
"branching",
|
|
1389
|
+
"image-gen"
|
|
1390
|
+
]
|
|
1391
|
+
},
|
|
1392
|
+
{
|
|
1393
|
+
"slug": "ai-agents",
|
|
1394
|
+
"title": "AI Agents — Autonomous Workers",
|
|
1395
|
+
"category": "ai",
|
|
1396
|
+
"description": "Background AI workers. Define an agent (skill × model × tools × max-iter), trigger it on-demand or on a cron schedule, watch the step-by-step trace as it runs. Devin / Replit-Agent / Manus pattern.\n\nUse cases:\n – Nightly audit-bp on the codebase (PR-reviewer style)\n – Weekly SEO crawl + content suggestions\n – Auto-moderate comment queue\n – Scheduled data ingestion + summarization\n – Long-form research task with multi-source citations\n\nFeatures: queue + live trace, per-step retry policy, hard cost cap, shareable trace URLs, full audit-log integration.",
|
|
1397
|
+
"source": "rahmanef63/resource-site",
|
|
1398
|
+
"install": "",
|
|
1399
|
+
"npmPackages": [],
|
|
1400
|
+
"exampleCode": "",
|
|
1401
|
+
"agentRecipe": "Run `npx rr add ai-agents`. Mount `<RunnerDashboard />` at /agents. Trigger runs via `runAgent({agentSlug, input, scheduleAt?})`. Cron scheduler via Convex cron — wire if you need scheduled runs. Agent definitions managed in ai-admin.",
|
|
1402
|
+
"tags": [
|
|
1403
|
+
"ai",
|
|
1404
|
+
"ai:agents",
|
|
1405
|
+
"agent-mode",
|
|
1406
|
+
"tool-calls",
|
|
1407
|
+
"async",
|
|
1408
|
+
"queue",
|
|
1409
|
+
"traces"
|
|
1410
|
+
]
|
|
1411
|
+
},
|
|
1412
|
+
{
|
|
1413
|
+
"slug": "ai-admin",
|
|
1414
|
+
"title": "AI Admin — Console (Instructions · Skills · Tools · Agents · Providers)",
|
|
1415
|
+
"category": "ai",
|
|
1416
|
+
"description": "Central operator console for the whole AI stack. Every other ai-* feature reads its registries from here. Tabs ordered to match the build-flow:\n\n 1. Providers — register Anthropic / OpenAI / Google / Mistral / Ollama (API keys AES-encrypted at rest)\n 2. Models — per-provider catalog (capabilities, context window, pricing)\n 3. Instructions — custom system-prompt library (Claude Projects-style)\n 4. Skills — named instruction + model default + tool defaults (consumed by chat + studio)\n 5. Tools — JSON-schema function specs + impl (http / convex / shell) + sandbox flag\n 6. Agents — skill × model × tools × max-iter (consumed by ai-agents)\n 7. Budgets — per-workspace cost caps + alerts + hard kill\n 8. Audit — every AI call: actor / agent / tokens / cost / latency / outcome\n\nIncludes Create-Agent / Create-Skill / Create-Tool / Create-Instruction wizards.",
|
|
1417
|
+
"source": "rahmanef63/resource-site",
|
|
1418
|
+
"install": "",
|
|
1419
|
+
"npmPackages": [],
|
|
1420
|
+
"exampleCode": "",
|
|
1421
|
+
"agentRecipe": "Run `npx rr add ai-admin`. Adds an `AI` section to the admin-panel ADMIN_SECTIONS registry. Sub-tabs ordered to match build-flow: Providers → Models → Instructions → Skills → Tools → Agents → Budgets → Audit. Includes Create-* wizards for instructions / skills / tools / agents. API keys AES-encrypted via AI_ADMIN_ENCRYPTION_KEY env. The instruction / skill / tool / agent registries are SSOTs consumed by every ai-* consumer slice (chat + studio + agents).",
|
|
1422
|
+
"tags": [
|
|
1423
|
+
"ai",
|
|
1424
|
+
"ai:admin",
|
|
1425
|
+
"instructions",
|
|
1426
|
+
"skills",
|
|
1427
|
+
"tools",
|
|
1428
|
+
"agents",
|
|
1429
|
+
"providers",
|
|
1430
|
+
"models",
|
|
1431
|
+
"budgets",
|
|
1432
|
+
"audit"
|
|
1433
|
+
]
|
|
1434
|
+
},
|
|
1344
1435
|
{
|
|
1345
1436
|
"slug": "ai-router",
|
|
1346
|
-
"title": "AI Router
|
|
1437
|
+
"title": "AI Router — Backend Provider Proxy",
|
|
1347
1438
|
"category": "ai",
|
|
1348
|
-
"description": "
|
|
1439
|
+
"description": "Backend infrastructure (no UI). Single proxy that every other ai-* feature calls. Tier-routed — nano (Haiku) for classification, mid (Sonnet) for chat, flagship (Opus) for deep reasoning. Per-call usage log + cost guard. Works with direct provider keys or OpenRouter umbrella.\n\nNot something you mount — installed automatically as a peer when you add ai-chat / ai-studio / ai-agents.",
|
|
1349
1440
|
"source": "rahmanef63/resource-site",
|
|
1350
1441
|
"docsUrl": "https://sdk.vercel.ai/docs",
|
|
1351
1442
|
"install": "npm i ai @openrouter/ai-sdk-provider",
|
|
@@ -1354,12 +1445,12 @@
|
|
|
1354
1445
|
"@openrouter/ai-sdk-provider"
|
|
1355
1446
|
],
|
|
1356
1447
|
"exampleCode": "",
|
|
1357
|
-
"agentRecipe": "Wrap every AI call through ai-router
|
|
1448
|
+
"agentRecipe": "Wrap every AI call through ai-router. Tiers: nano = quick classification (spam-flag, headline-suggest), mid = chat / draft, flagship = methodology-review / deep-think. Token usage logs to ai_usage table for the cost dashboard.",
|
|
1358
1449
|
"tags": [
|
|
1359
1450
|
"ai",
|
|
1360
|
-
"
|
|
1361
|
-
"
|
|
1362
|
-
"
|
|
1451
|
+
"ai:backend",
|
|
1452
|
+
"tier-routing",
|
|
1453
|
+
"cost-guard"
|
|
1363
1454
|
]
|
|
1364
1455
|
},
|
|
1365
1456
|
{
|
|
@@ -1621,9 +1712,9 @@
|
|
|
1621
1712
|
},
|
|
1622
1713
|
{
|
|
1623
1714
|
"slug": "icon-picker",
|
|
1624
|
-
"title": "
|
|
1715
|
+
"title": "Icon Picker",
|
|
1625
1716
|
"category": "ui",
|
|
1626
|
-
"description": "Emoji + lucide icon picker with search, 10-color
|
|
1717
|
+
"description": "Emoji + lucide icon picker with search, 10-color palette, Twemoji/native toggle, recents tracking. One string stores emoji OR lucide:Name OR with ?c=hex tint — backwards-compat with raw-emoji fields. Two variants: Popover (compact trigger) and Inline (full sheet/dialog use). Lifted 2026-05-16 from notion-page-clone — full implementation (19 files) including emoji-keywords search index, twemoji renderer, lucide-catalog, recents store, style-pref hook.",
|
|
1627
1718
|
"source": "notion-page-clone",
|
|
1628
1719
|
"install": "npx rahman-resources add icon-picker",
|
|
1629
1720
|
"npmPackages": [],
|
|
@@ -1656,6 +1747,26 @@
|
|
|
1656
1747
|
"brutalist"
|
|
1657
1748
|
]
|
|
1658
1749
|
},
|
|
1750
|
+
{
|
|
1751
|
+
"slug": "hero",
|
|
1752
|
+
"title": "Hero",
|
|
1753
|
+
"category": "ui",
|
|
1754
|
+
"description": "Editorial split-grid landing hero — eyebrow pill + large serif H1 + italic pull-quote + 1-2 button CTA row + right-column portrait card with optional caption. Fully props-driven (title/quote/ctas/image). Sanitized from rahmanef.com on 2026-05-16: SITE_CONFIG hardcode dropped, custom Heading/Section primitives replaced with raw semantic elements + stock Tailwind tracking-widest so the slice ships without consumer preset utilities.",
|
|
1755
|
+
"source": "rahmanef.com",
|
|
1756
|
+
"install": "npx rahman-resources add hero",
|
|
1757
|
+
"npmPackages": [],
|
|
1758
|
+
"exampleCode": "",
|
|
1759
|
+
"agentRecipe": "Run `npx rr add hero`. <HeroView title eyebrow quote ctas image imageCaption /> — all props optional except title. Pass `image={undefined}` for text-only hero (auto-collapses to single 12-column row). Pairs visually with cta slice (same brutalist border + serif scale).",
|
|
1760
|
+
"tags": [
|
|
1761
|
+
"ui",
|
|
1762
|
+
"hero",
|
|
1763
|
+
"marketing",
|
|
1764
|
+
"landing",
|
|
1765
|
+
"section",
|
|
1766
|
+
"editorial",
|
|
1767
|
+
"brutalist"
|
|
1768
|
+
]
|
|
1769
|
+
},
|
|
1659
1770
|
{
|
|
1660
1771
|
"slug": "rate-limit",
|
|
1661
1772
|
"title": "Rate Limit",
|
|
@@ -1674,6 +1785,102 @@
|
|
|
1674
1785
|
"throttle"
|
|
1675
1786
|
]
|
|
1676
1787
|
},
|
|
1788
|
+
{
|
|
1789
|
+
"slug": "subscribers",
|
|
1790
|
+
"title": "Subscribers",
|
|
1791
|
+
"category": "email",
|
|
1792
|
+
"description": "Newsletter list with honeypot + per-email rate-limit + token-based unsubscribe + admin remove. Public `subscribe` returns status strings (`created` / `already` / `resubscribed` / `honeypot`); admin `listAll` / `count` queries gated by `requireAdmin` (rr `_shared/auth`). Lifted 2026-05-16 from rahmanef.com; sanitized: token args dropped, sibling `analyticsEvents` insert removed — wrap subscribe in a consumer action if you want funnel telemetry.",
|
|
1793
|
+
"source": "rahmanef.com",
|
|
1794
|
+
"install": "npx rahman-resources add subscribers",
|
|
1795
|
+
"npmPackages": [],
|
|
1796
|
+
"exampleCode": "",
|
|
1797
|
+
"agentRecipe": "Run `npx rr add subscribers`. Compose `subscribersTables` into root convex/schema.ts. Public form posts `api.features.subscribers.mutations.subscribe({ email, source, website })` — `website` is the honeypot, leave it `\"\"` from the form. Render unsubscribe link `/unsubscribe?t=<token>` and call `unsubscribe({ token })`.",
|
|
1798
|
+
"tags": [
|
|
1799
|
+
"email",
|
|
1800
|
+
"newsletter",
|
|
1801
|
+
"subscribers",
|
|
1802
|
+
"convex",
|
|
1803
|
+
"backend"
|
|
1804
|
+
]
|
|
1805
|
+
},
|
|
1806
|
+
{
|
|
1807
|
+
"slug": "testimonials",
|
|
1808
|
+
"title": "Testimonials",
|
|
1809
|
+
"category": "content",
|
|
1810
|
+
"description": "Quote/name/role rotator backend. Public `listAll` + `get` (no auth — testimonials are public), admin CRUD via `requireAdmin`, internal `seed` for one-shot bootstrap. Indexed by `order` so carousel/grid keeps stable rotation. Lifted 2026-05-16 from rahmanef.com; token-based admin gate swapped for rr `_shared/auth`.",
|
|
1811
|
+
"source": "rahmanef.com",
|
|
1812
|
+
"install": "npx rahman-resources add testimonials",
|
|
1813
|
+
"npmPackages": [],
|
|
1814
|
+
"exampleCode": "",
|
|
1815
|
+
"agentRecipe": "Run `npx rr add testimonials`. Compose `testimonialsTables` into root schema. Bootstrap via `npx convex run internal.features.testimonials.mutations.seed '{\"items\":[{\"quote\":\"...\",\"name\":\"...\",\"role\":\"...\",\"order\":1}]}'`. Render with `useQuery(api.features.testimonials.queries.listAll)`.",
|
|
1816
|
+
"tags": [
|
|
1817
|
+
"content",
|
|
1818
|
+
"testimonials",
|
|
1819
|
+
"convex",
|
|
1820
|
+
"backend",
|
|
1821
|
+
"marketing"
|
|
1822
|
+
]
|
|
1823
|
+
},
|
|
1824
|
+
{
|
|
1825
|
+
"slug": "services",
|
|
1826
|
+
"title": "Services",
|
|
1827
|
+
"category": "content",
|
|
1828
|
+
"description": "Service offerings backend — title + summary + deliverables array + sort order. Public read, admin CRUD, internal seed. Pairs with a frontend services grid/list (consumer-side). Lifted 2026-05-16 from rahmanef.com; token-based admin gate swapped for rr `_shared/auth`.",
|
|
1829
|
+
"source": "rahmanef.com",
|
|
1830
|
+
"install": "npx rahman-resources add services",
|
|
1831
|
+
"npmPackages": [],
|
|
1832
|
+
"exampleCode": "",
|
|
1833
|
+
"agentRecipe": "Run `npx rr add services`. Compose `servicesTables` into root schema. Use `useQuery(api.features.services.queries.listAll)` from a server component / route to render service cards. CRUD via admin UI calling `create` / `update` / `remove` after `requireAdmin` passes.",
|
|
1834
|
+
"tags": [
|
|
1835
|
+
"content",
|
|
1836
|
+
"services",
|
|
1837
|
+
"convex",
|
|
1838
|
+
"backend",
|
|
1839
|
+
"marketing",
|
|
1840
|
+
"agency"
|
|
1841
|
+
]
|
|
1842
|
+
},
|
|
1843
|
+
{
|
|
1844
|
+
"slug": "socials",
|
|
1845
|
+
"title": "Socials",
|
|
1846
|
+
"category": "content",
|
|
1847
|
+
"description": "Single source of truth for profile/social links. Powers JSON-LD `Person.sameAs` (Google entity graph), IndieWeb `<link rel=\"me\">` tags, and footer/contact/about UI surfaces. URL-deduped, ordered, `visible` / `featured` / `relMe` / `sameAs` flags. Lifted 2026-05-16 from rahmanef.com; token-based admin gate swapped, baked-in 14-platform rahmanef seed dropped — `seed` now takes items via args so each adopter ships their own list.",
|
|
1848
|
+
"source": "rahmanef.com",
|
|
1849
|
+
"install": "npx rahman-resources add socials",
|
|
1850
|
+
"npmPackages": [],
|
|
1851
|
+
"exampleCode": "",
|
|
1852
|
+
"agentRecipe": "Run `npx rr add socials`. Compose `socialsTables` into root schema. Bootstrap with `npx convex run internal.features.socials.mutations.seed '{\"items\":[{\"platform\":\"github\",\"url\":\"https://github.com/<you>\",\"order\":1,\"visible\":true,\"featured\":true,\"sameAs\":true,\"relMe\":true}]}'`. Wire `useQuery(api.features.socials.queries.listVisible)` into footer for entity-graph SEO.",
|
|
1853
|
+
"tags": [
|
|
1854
|
+
"content",
|
|
1855
|
+
"socials",
|
|
1856
|
+
"seo",
|
|
1857
|
+
"indieweb",
|
|
1858
|
+
"convex",
|
|
1859
|
+
"backend"
|
|
1860
|
+
]
|
|
1861
|
+
},
|
|
1862
|
+
{
|
|
1863
|
+
"slug": "create-your-mcp",
|
|
1864
|
+
"title": "Create Your MCP",
|
|
1865
|
+
"category": "ai",
|
|
1866
|
+
"description": "Turn any rr-based app into an MCP server that ChatGPT custom apps, Claude.ai connectors, Cursor MCP, and other AI clients authenticate to. OAuth 2.1 + PKCE flow with code → bearer exchange, env-configured vendor-host allowlist, single-use codes, 1-year bearer tokens, scope-tagged tools, opaque error collapsing, constant-time token compare. Static MCP_API_KEY fallback for service-account / CI scripts. Sanitized 2026-05-16 from rahmanef.com's production MCP integration — vendor literals (chatgpt.com / OpenAI paths) replaced with MCP_OAUTH_ALLOWED_HOSTS + MCP_OAUTH_ALLOWED_PATH_PREFIXES env vars so the slice ships portable.",
|
|
1867
|
+
"source": "rahmanef.com",
|
|
1868
|
+
"install": "npx rahman-resources add create-your-mcp",
|
|
1869
|
+
"npmPackages": [],
|
|
1870
|
+
"exampleCode": "",
|
|
1871
|
+
"agentRecipe": "Run `npx rr add create-your-mcp`. Compose `createYourMcpTables` into root schema. Move `slices/create-your-mcp/routes/mcp.route.ts` → `app/api/mcp/route.ts` and `oauth-token.route.ts` → `app/api/oauth/token/route.ts`. Set MCP_OAUTH_ALLOWED_HOSTS (CSV vendor domains). Mount `<McpAdminView />` at /admin/mcp. Connect ChatGPT/Claude/Cursor via the setup form rendered by the admin view.",
|
|
1872
|
+
"tags": [
|
|
1873
|
+
"ai",
|
|
1874
|
+
"mcp",
|
|
1875
|
+
"oauth",
|
|
1876
|
+
"pkce",
|
|
1877
|
+
"chatgpt",
|
|
1878
|
+
"claude",
|
|
1879
|
+
"cursor",
|
|
1880
|
+
"convex",
|
|
1881
|
+
"integration"
|
|
1882
|
+
]
|
|
1883
|
+
},
|
|
1677
1884
|
{
|
|
1678
1885
|
"slug": "contact-form-resend",
|
|
1679
1886
|
"title": "Contact Form + Resend",
|
|
@@ -2017,13 +2224,285 @@
|
|
|
2017
2224
|
],
|
|
2018
2225
|
"agentRecipe": "Use Resend Audiences API for newsletter — store subscriber emails in Convex too for segmentation. Double opt-in: subscriber.create with status 'pending' → click link → status 'confirmed'."
|
|
2019
2226
|
},
|
|
2227
|
+
{
|
|
2228
|
+
"slug": "ai-chat",
|
|
2229
|
+
"title": "AI Chat — Workbench / Sidebar / Search",
|
|
2230
|
+
"category": "ai",
|
|
2231
|
+
"kind": "full",
|
|
2232
|
+
"version": "0.1.0",
|
|
2233
|
+
"description": "One conversational AI feature, three render modes. Same Convex backend (threads + streaming + tool calls + RAG), pick the surface via prop:\n\n • workbench — Claude.ai / ChatGPT three-column page (default)\n • sidebar — collapsible copilot panel inside another CRUD app\n • search — single-question + answer + citations (Perplexity)\n\nUse cases:\n – Customer-support chatbot embedded in your marketing site\n – Developer copilot in your PR/docs admin\n – Knowledge-base search over your blog + docs corpus\n – Internal AI assistant in your dashboard\n\nWhat it ships: multi-provider (Anthropic / OpenAI / Google / Mistral / Ollama), multimodal (text + image + PDF + audio), typed tool calls with inline inspector, agent mode (plan→execute→reflect), branching threads, RAG citations, resumable streams, usage telemetry. Public surface = consumer chat; admin surface = persona, fallback, guardrails per-bot.",
|
|
2234
|
+
"source": "rahmanef63/resource-site",
|
|
2235
|
+
"slicePath": "frontend/slices/ai-chat",
|
|
2236
|
+
"convexPaths": [
|
|
2237
|
+
"convex/features/ai-chat"
|
|
2238
|
+
],
|
|
2239
|
+
"npm": [
|
|
2240
|
+
"ai@^4.0.0",
|
|
2241
|
+
"@ai-sdk/anthropic@^0.0.50",
|
|
2242
|
+
"@ai-sdk/openai@^0.0.60"
|
|
2243
|
+
],
|
|
2244
|
+
"shadcn": [
|
|
2245
|
+
"button",
|
|
2246
|
+
"card",
|
|
2247
|
+
"badge",
|
|
2248
|
+
"avatar",
|
|
2249
|
+
"scroll-area",
|
|
2250
|
+
"select",
|
|
2251
|
+
"separator",
|
|
2252
|
+
"slider",
|
|
2253
|
+
"switch",
|
|
2254
|
+
"textarea",
|
|
2255
|
+
"tabs",
|
|
2256
|
+
"command",
|
|
2257
|
+
"sheet"
|
|
2258
|
+
],
|
|
2259
|
+
"env": [
|
|
2260
|
+
{
|
|
2261
|
+
"name": "ANTHROPIC_API_KEY",
|
|
2262
|
+
"scope": "convex",
|
|
2263
|
+
"required": false
|
|
2264
|
+
},
|
|
2265
|
+
{
|
|
2266
|
+
"name": "OPENAI_API_KEY",
|
|
2267
|
+
"scope": "convex",
|
|
2268
|
+
"required": false
|
|
2269
|
+
},
|
|
2270
|
+
{
|
|
2271
|
+
"name": "GOOGLE_GENERATIVE_AI_API_KEY",
|
|
2272
|
+
"scope": "convex",
|
|
2273
|
+
"required": false
|
|
2274
|
+
}
|
|
2275
|
+
],
|
|
2276
|
+
"peers": [
|
|
2277
|
+
{
|
|
2278
|
+
"slug": "convex-auth",
|
|
2279
|
+
"range": "^0.1",
|
|
2280
|
+
"reason": "Thread ownership requires authenticated user."
|
|
2281
|
+
},
|
|
2282
|
+
{
|
|
2283
|
+
"slug": "ai-router",
|
|
2284
|
+
"range": "^0.1",
|
|
2285
|
+
"reason": "Routes provider calls through tiered proxy."
|
|
2286
|
+
},
|
|
2287
|
+
{
|
|
2288
|
+
"slug": "ai-admin",
|
|
2289
|
+
"range": "^0.1",
|
|
2290
|
+
"reason": "Reads instructions / skills / tools / models from ai-admin registry."
|
|
2291
|
+
},
|
|
2292
|
+
{
|
|
2293
|
+
"slug": "vector-search",
|
|
2294
|
+
"range": "^0.1",
|
|
2295
|
+
"reason": "Optional — RAG / search modes pull workspace embeddings."
|
|
2296
|
+
}
|
|
2297
|
+
],
|
|
2298
|
+
"providers": [],
|
|
2299
|
+
"tags": [
|
|
2300
|
+
"ai",
|
|
2301
|
+
"ai:chat",
|
|
2302
|
+
"streaming",
|
|
2303
|
+
"multimodal",
|
|
2304
|
+
"tool-calls",
|
|
2305
|
+
"agent-mode",
|
|
2306
|
+
"rag",
|
|
2307
|
+
"citations",
|
|
2308
|
+
"branching",
|
|
2309
|
+
"history"
|
|
2310
|
+
],
|
|
2311
|
+
"agentRecipe": "Run `npx rr add ai-chat`. Pick `mode=\"workbench\" | \"sidebar\" | \"search\"` on `<AIChat />` (or use the convenience exports `<AIChatWorkbench />`, `<AIChatSidebar />`, `<AIChatSearch />`). Same backend tables + streaming action for all three."
|
|
2312
|
+
},
|
|
2313
|
+
{
|
|
2314
|
+
"slug": "ai-studio",
|
|
2315
|
+
"title": "AI Studio — Generation Canvas",
|
|
2316
|
+
"category": "ai",
|
|
2317
|
+
"kind": "full",
|
|
2318
|
+
"version": "0.1.0",
|
|
2319
|
+
"description": "AI is the primary UI — single big prompt input → live-streaming output → variation grid → version tree. Suno / Midjourney / Lovable / v0 pattern. Output kinds: text, code, image, audio (configurable per template).\n\nUse cases:\n – AI image generation product (creative output)\n – AI logo / banner / social-post studio\n – AI code-snippet generator (component scaffolder)\n – AI music / voiceover producer\n – AI blog-draft factory (text)\n\nFeatures: prompt history, branch + compare outputs, like + favorite, share-to-link, templates from ai-admin.",
|
|
2320
|
+
"source": "rahmanef63/resource-site",
|
|
2321
|
+
"slicePath": "frontend/slices/ai-studio",
|
|
2322
|
+
"convexPaths": [
|
|
2323
|
+
"convex/features/ai-studio"
|
|
2324
|
+
],
|
|
2325
|
+
"npm": [
|
|
2326
|
+
"ai@^4.0.0"
|
|
2327
|
+
],
|
|
2328
|
+
"shadcn": [
|
|
2329
|
+
"button",
|
|
2330
|
+
"card",
|
|
2331
|
+
"badge",
|
|
2332
|
+
"textarea",
|
|
2333
|
+
"tabs",
|
|
2334
|
+
"tooltip",
|
|
2335
|
+
"scroll-area",
|
|
2336
|
+
"select"
|
|
2337
|
+
],
|
|
2338
|
+
"env": [],
|
|
2339
|
+
"peers": [
|
|
2340
|
+
{
|
|
2341
|
+
"slug": "convex-auth",
|
|
2342
|
+
"range": "^0.1",
|
|
2343
|
+
"reason": "Generation history per user."
|
|
2344
|
+
},
|
|
2345
|
+
{
|
|
2346
|
+
"slug": "ai-router",
|
|
2347
|
+
"range": "^0.1",
|
|
2348
|
+
"reason": "All generation calls flow through router."
|
|
2349
|
+
},
|
|
2350
|
+
{
|
|
2351
|
+
"slug": "ai-admin",
|
|
2352
|
+
"range": "^0.1",
|
|
2353
|
+
"reason": "Templates + few-shot library + moderation rules live in ai-admin."
|
|
2354
|
+
}
|
|
2355
|
+
],
|
|
2356
|
+
"providers": [],
|
|
2357
|
+
"tags": [
|
|
2358
|
+
"ai",
|
|
2359
|
+
"ai:studio",
|
|
2360
|
+
"generation",
|
|
2361
|
+
"streaming",
|
|
2362
|
+
"history",
|
|
2363
|
+
"branching",
|
|
2364
|
+
"image-gen"
|
|
2365
|
+
],
|
|
2366
|
+
"agentRecipe": "Run `npx rr add ai-studio`. Mount `<GeneratorCanvas />` at /. Use case: prompt → output IS the entire product. Wire your output renderer (text/image/code/audio) via the OutputSlot adapter. Templates loaded from ai-admin.studio.templates."
|
|
2367
|
+
},
|
|
2368
|
+
{
|
|
2369
|
+
"slug": "ai-agents",
|
|
2370
|
+
"title": "AI Agents — Autonomous Workers",
|
|
2371
|
+
"category": "ai",
|
|
2372
|
+
"kind": "full",
|
|
2373
|
+
"version": "0.1.0",
|
|
2374
|
+
"description": "Background AI workers. Define an agent (skill × model × tools × max-iter), trigger it on-demand or on a cron schedule, watch the step-by-step trace as it runs. Devin / Replit-Agent / Manus pattern.\n\nUse cases:\n – Nightly audit-bp on the codebase (PR-reviewer style)\n – Weekly SEO crawl + content suggestions\n – Auto-moderate comment queue\n – Scheduled data ingestion + summarization\n – Long-form research task with multi-source citations\n\nFeatures: queue + live trace, per-step retry policy, hard cost cap, shareable trace URLs, full audit-log integration.",
|
|
2375
|
+
"source": "rahmanef63/resource-site",
|
|
2376
|
+
"slicePath": "frontend/slices/ai-agents",
|
|
2377
|
+
"convexPaths": [
|
|
2378
|
+
"convex/features/ai-agents"
|
|
2379
|
+
],
|
|
2380
|
+
"npm": [
|
|
2381
|
+
"ai@^4.0.0"
|
|
2382
|
+
],
|
|
2383
|
+
"shadcn": [
|
|
2384
|
+
"button",
|
|
2385
|
+
"card",
|
|
2386
|
+
"badge",
|
|
2387
|
+
"table",
|
|
2388
|
+
"tabs",
|
|
2389
|
+
"scroll-area",
|
|
2390
|
+
"progress"
|
|
2391
|
+
],
|
|
2392
|
+
"env": [],
|
|
2393
|
+
"peers": [
|
|
2394
|
+
{
|
|
2395
|
+
"slug": "convex-auth",
|
|
2396
|
+
"range": "^0.1",
|
|
2397
|
+
"reason": "Per-user agent run ownership."
|
|
2398
|
+
},
|
|
2399
|
+
{
|
|
2400
|
+
"slug": "ai-router",
|
|
2401
|
+
"range": "^0.1",
|
|
2402
|
+
"reason": "Step calls flow through router."
|
|
2403
|
+
},
|
|
2404
|
+
{
|
|
2405
|
+
"slug": "ai-admin",
|
|
2406
|
+
"range": "^0.1",
|
|
2407
|
+
"reason": "Agent definitions live in ai-admin → Agents."
|
|
2408
|
+
},
|
|
2409
|
+
{
|
|
2410
|
+
"slug": "audit-log",
|
|
2411
|
+
"range": "^0.1",
|
|
2412
|
+
"reason": "Every step logged."
|
|
2413
|
+
}
|
|
2414
|
+
],
|
|
2415
|
+
"providers": [],
|
|
2416
|
+
"tags": [
|
|
2417
|
+
"ai",
|
|
2418
|
+
"ai:agents",
|
|
2419
|
+
"agent-mode",
|
|
2420
|
+
"tool-calls",
|
|
2421
|
+
"async",
|
|
2422
|
+
"queue",
|
|
2423
|
+
"traces"
|
|
2424
|
+
],
|
|
2425
|
+
"agentRecipe": "Run `npx rr add ai-agents`. Mount `<RunnerDashboard />` at /agents. Trigger runs via `runAgent({agentSlug, input, scheduleAt?})`. Cron scheduler via Convex cron — wire if you need scheduled runs. Agent definitions managed in ai-admin."
|
|
2426
|
+
},
|
|
2427
|
+
{
|
|
2428
|
+
"slug": "ai-admin",
|
|
2429
|
+
"title": "AI Admin — Console (Instructions · Skills · Tools · Agents · Providers)",
|
|
2430
|
+
"category": "ai",
|
|
2431
|
+
"kind": "full",
|
|
2432
|
+
"version": "0.2.0",
|
|
2433
|
+
"description": "Central operator console for the whole AI stack. Every other ai-* feature reads its registries from here. Tabs ordered to match the build-flow:\n\n 1. Providers — register Anthropic / OpenAI / Google / Mistral / Ollama (API keys AES-encrypted at rest)\n 2. Models — per-provider catalog (capabilities, context window, pricing)\n 3. Instructions — custom system-prompt library (Claude Projects-style)\n 4. Skills — named instruction + model default + tool defaults (consumed by chat + studio)\n 5. Tools — JSON-schema function specs + impl (http / convex / shell) + sandbox flag\n 6. Agents — skill × model × tools × max-iter (consumed by ai-agents)\n 7. Budgets — per-workspace cost caps + alerts + hard kill\n 8. Audit — every AI call: actor / agent / tokens / cost / latency / outcome\n\nIncludes Create-Agent / Create-Skill / Create-Tool / Create-Instruction wizards.",
|
|
2434
|
+
"source": "rahmanef63/resource-site",
|
|
2435
|
+
"slicePath": "frontend/slices/ai-admin",
|
|
2436
|
+
"convexPaths": [
|
|
2437
|
+
"convex/features/ai-admin"
|
|
2438
|
+
],
|
|
2439
|
+
"npm": [],
|
|
2440
|
+
"shadcn": [
|
|
2441
|
+
"card",
|
|
2442
|
+
"button",
|
|
2443
|
+
"badge",
|
|
2444
|
+
"tabs",
|
|
2445
|
+
"table",
|
|
2446
|
+
"dialog",
|
|
2447
|
+
"input",
|
|
2448
|
+
"label",
|
|
2449
|
+
"select",
|
|
2450
|
+
"textarea",
|
|
2451
|
+
"switch",
|
|
2452
|
+
"command"
|
|
2453
|
+
],
|
|
2454
|
+
"env": [
|
|
2455
|
+
{
|
|
2456
|
+
"name": "AI_ADMIN_ENCRYPTION_KEY",
|
|
2457
|
+
"scope": "convex",
|
|
2458
|
+
"required": true,
|
|
2459
|
+
"description": "Encrypts stored provider API keys at rest."
|
|
2460
|
+
}
|
|
2461
|
+
],
|
|
2462
|
+
"peers": [
|
|
2463
|
+
{
|
|
2464
|
+
"slug": "convex-auth",
|
|
2465
|
+
"range": "^0.1",
|
|
2466
|
+
"reason": "requireAdmin gate."
|
|
2467
|
+
},
|
|
2468
|
+
{
|
|
2469
|
+
"slug": "rbac-roles",
|
|
2470
|
+
"range": "^0.1",
|
|
2471
|
+
"reason": "Section gated by ai.* permissions (manage_providers, manage_skills, etc)."
|
|
2472
|
+
},
|
|
2473
|
+
{
|
|
2474
|
+
"slug": "admin-panel",
|
|
2475
|
+
"range": "^0.1",
|
|
2476
|
+
"reason": "Lives as a registered admin section."
|
|
2477
|
+
},
|
|
2478
|
+
{
|
|
2479
|
+
"slug": "audit-log",
|
|
2480
|
+
"range": "^0.1",
|
|
2481
|
+
"reason": "Every config change + AI call routes through audit-log."
|
|
2482
|
+
}
|
|
2483
|
+
],
|
|
2484
|
+
"providers": [],
|
|
2485
|
+
"tags": [
|
|
2486
|
+
"ai",
|
|
2487
|
+
"ai:admin",
|
|
2488
|
+
"instructions",
|
|
2489
|
+
"skills",
|
|
2490
|
+
"tools",
|
|
2491
|
+
"agents",
|
|
2492
|
+
"providers",
|
|
2493
|
+
"models",
|
|
2494
|
+
"budgets",
|
|
2495
|
+
"audit"
|
|
2496
|
+
],
|
|
2497
|
+
"agentRecipe": "Run `npx rr add ai-admin`. Adds an `AI` section to the admin-panel ADMIN_SECTIONS registry. Sub-tabs ordered to match build-flow: Providers → Models → Instructions → Skills → Tools → Agents → Budgets → Audit. Includes Create-* wizards for instructions / skills / tools / agents. API keys AES-encrypted via AI_ADMIN_ENCRYPTION_KEY env. The instruction / skill / tool / agent registries are SSOTs consumed by every ai-* consumer slice (chat + studio + agents)."
|
|
2498
|
+
},
|
|
2020
2499
|
{
|
|
2021
2500
|
"slug": "ai-router",
|
|
2022
|
-
"title": "AI Router
|
|
2501
|
+
"title": "AI Router — Backend Provider Proxy",
|
|
2023
2502
|
"category": "ai",
|
|
2024
2503
|
"kind": "backend",
|
|
2025
2504
|
"version": "0.1.0",
|
|
2026
|
-
"description": "
|
|
2505
|
+
"description": "Backend infrastructure (no UI). Single proxy that every other ai-* feature calls. Tier-routed — nano (Haiku) for classification, mid (Sonnet) for chat, flagship (Opus) for deep reasoning. Per-call usage log + cost guard. Works with direct provider keys or OpenRouter umbrella.\n\nNot something you mount — installed automatically as a peer when you add ai-chat / ai-studio / ai-agents.",
|
|
2027
2506
|
"source": "rahmanef63/resource-site",
|
|
2028
2507
|
"slicePath": "frontend/slices/ai-router",
|
|
2029
2508
|
"convexPaths": [
|
|
@@ -2047,11 +2526,11 @@
|
|
|
2047
2526
|
"providers": [],
|
|
2048
2527
|
"tags": [
|
|
2049
2528
|
"ai",
|
|
2050
|
-
"
|
|
2051
|
-
"
|
|
2052
|
-
"
|
|
2529
|
+
"ai:backend",
|
|
2530
|
+
"tier-routing",
|
|
2531
|
+
"cost-guard"
|
|
2053
2532
|
],
|
|
2054
|
-
"agentRecipe": "Wrap every AI call through ai-router
|
|
2533
|
+
"agentRecipe": "Wrap every AI call through ai-router. Tiers: nano = quick classification (spam-flag, headline-suggest), mid = chat / draft, flagship = methodology-review / deep-think. Token usage logs to ai_usage table for the cost dashboard."
|
|
2055
2534
|
},
|
|
2056
2535
|
{
|
|
2057
2536
|
"slug": "vector-search",
|
|
@@ -2462,11 +2941,11 @@
|
|
|
2462
2941
|
},
|
|
2463
2942
|
{
|
|
2464
2943
|
"slug": "icon-picker",
|
|
2465
|
-
"title": "
|
|
2944
|
+
"title": "Icon Picker",
|
|
2466
2945
|
"category": "ui",
|
|
2467
2946
|
"kind": "ui",
|
|
2468
2947
|
"version": "0.2.0",
|
|
2469
|
-
"description": "Emoji + lucide icon picker with search, 10-color
|
|
2948
|
+
"description": "Emoji + lucide icon picker with search, 10-color palette, Twemoji/native toggle, recents tracking. One string stores emoji OR lucide:Name OR with ?c=hex tint — backwards-compat with raw-emoji fields. Two variants: Popover (compact trigger) and Inline (full sheet/dialog use). Lifted 2026-05-16 from notion-page-clone — full implementation (19 files) including emoji-keywords search index, twemoji renderer, lucide-catalog, recents store, style-pref hook.",
|
|
2470
2949
|
"source": "notion-page-clone",
|
|
2471
2950
|
"slicePath": "frontend/slices/icon-picker",
|
|
2472
2951
|
"convexPaths": [],
|
|
@@ -2517,6 +2996,34 @@
|
|
|
2517
2996
|
],
|
|
2518
2997
|
"agentRecipe": "Run `npx rr add cta`. <CtaView eyebrow title body href ctaLabel /> renders the full section; <CtaButton href label /> drops a standalone arrow button anywhere. Override tracking-brutal utilities in tailwind.config or swap for tracking-wide if your design system has no brutal preset."
|
|
2519
2998
|
},
|
|
2999
|
+
{
|
|
3000
|
+
"slug": "hero",
|
|
3001
|
+
"title": "Hero",
|
|
3002
|
+
"category": "ui",
|
|
3003
|
+
"kind": "ui",
|
|
3004
|
+
"version": "0.1.0",
|
|
3005
|
+
"description": "Editorial split-grid landing hero — eyebrow pill + large serif H1 + italic pull-quote + 1-2 button CTA row + right-column portrait card with optional caption. Fully props-driven (title/quote/ctas/image). Sanitized from rahmanef.com on 2026-05-16: SITE_CONFIG hardcode dropped, custom Heading/Section primitives replaced with raw semantic elements + stock Tailwind tracking-widest so the slice ships without consumer preset utilities.",
|
|
3006
|
+
"source": "rahmanef.com",
|
|
3007
|
+
"slicePath": "frontend/slices/hero",
|
|
3008
|
+
"convexPaths": [],
|
|
3009
|
+
"npm": [
|
|
3010
|
+
"lucide-react@^0.400.0"
|
|
3011
|
+
],
|
|
3012
|
+
"shadcn": [],
|
|
3013
|
+
"env": [],
|
|
3014
|
+
"peers": [],
|
|
3015
|
+
"providers": [],
|
|
3016
|
+
"tags": [
|
|
3017
|
+
"ui",
|
|
3018
|
+
"hero",
|
|
3019
|
+
"marketing",
|
|
3020
|
+
"landing",
|
|
3021
|
+
"section",
|
|
3022
|
+
"editorial",
|
|
3023
|
+
"brutalist"
|
|
3024
|
+
],
|
|
3025
|
+
"agentRecipe": "Run `npx rr add hero`. <HeroView title eyebrow quote ctas image imageCaption /> — all props optional except title. Pass `image={undefined}` for text-only hero (auto-collapses to single 12-column row). Pairs visually with cta slice (same brutalist border + serif scale)."
|
|
3026
|
+
},
|
|
2520
3027
|
{
|
|
2521
3028
|
"slug": "rate-limit",
|
|
2522
3029
|
"title": "Rate Limit",
|
|
@@ -2543,6 +3050,222 @@
|
|
|
2543
3050
|
],
|
|
2544
3051
|
"agentRecipe": "Run `npx rr add rate-limit`. Compose `rateLimitTables` into root convex/schema.ts. Wire `internal.features.rate_limit.mutations._pruneExpired` into convex/crons.ts every 5 min. Call `api.features.rate_limit.mutations.consume({ key, limit, windowMs })` from server-side handlers — keep a fail-open wrapper so a Convex outage doesn't 503 the route."
|
|
2545
3052
|
},
|
|
3053
|
+
{
|
|
3054
|
+
"slug": "subscribers",
|
|
3055
|
+
"title": "Subscribers",
|
|
3056
|
+
"category": "email",
|
|
3057
|
+
"kind": "backend",
|
|
3058
|
+
"version": "0.1.0",
|
|
3059
|
+
"description": "Newsletter list with honeypot + per-email rate-limit + token-based unsubscribe + admin remove. Public `subscribe` returns status strings (`created` / `already` / `resubscribed` / `honeypot`); admin `listAll` / `count` queries gated by `requireAdmin` (rr `_shared/auth`). Lifted 2026-05-16 from rahmanef.com; sanitized: token args dropped, sibling `analyticsEvents` insert removed — wrap subscribe in a consumer action if you want funnel telemetry.",
|
|
3060
|
+
"source": "rahmanef.com",
|
|
3061
|
+
"slicePath": "frontend/slices/subscribers",
|
|
3062
|
+
"convexPaths": [
|
|
3063
|
+
"convex/features/subscribers"
|
|
3064
|
+
],
|
|
3065
|
+
"npm": [],
|
|
3066
|
+
"shadcn": [],
|
|
3067
|
+
"env": [
|
|
3068
|
+
{
|
|
3069
|
+
"name": "SUPER_ADMIN_EMAIL",
|
|
3070
|
+
"scope": "convex",
|
|
3071
|
+
"required": false,
|
|
3072
|
+
"description": "Optional super-admin gate for admin queries."
|
|
3073
|
+
}
|
|
3074
|
+
],
|
|
3075
|
+
"peers": [
|
|
3076
|
+
{
|
|
3077
|
+
"slug": "convex-auth",
|
|
3078
|
+
"range": "^0.1",
|
|
3079
|
+
"reason": "requireAdmin uses getAuthUserId from @convex-dev/auth."
|
|
3080
|
+
}
|
|
3081
|
+
],
|
|
3082
|
+
"providers": [],
|
|
3083
|
+
"tags": [
|
|
3084
|
+
"email",
|
|
3085
|
+
"newsletter",
|
|
3086
|
+
"subscribers",
|
|
3087
|
+
"convex",
|
|
3088
|
+
"backend"
|
|
3089
|
+
],
|
|
3090
|
+
"agentRecipe": "Run `npx rr add subscribers`. Compose `subscribersTables` into root convex/schema.ts. Public form posts `api.features.subscribers.mutations.subscribe({ email, source, website })` — `website` is the honeypot, leave it `\"\"` from the form. Render unsubscribe link `/unsubscribe?t=<token>` and call `unsubscribe({ token })`."
|
|
3091
|
+
},
|
|
3092
|
+
{
|
|
3093
|
+
"slug": "testimonials",
|
|
3094
|
+
"title": "Testimonials",
|
|
3095
|
+
"category": "content",
|
|
3096
|
+
"kind": "backend",
|
|
3097
|
+
"version": "0.1.0",
|
|
3098
|
+
"description": "Quote/name/role rotator backend. Public `listAll` + `get` (no auth — testimonials are public), admin CRUD via `requireAdmin`, internal `seed` for one-shot bootstrap. Indexed by `order` so carousel/grid keeps stable rotation. Lifted 2026-05-16 from rahmanef.com; token-based admin gate swapped for rr `_shared/auth`.",
|
|
3099
|
+
"source": "rahmanef.com",
|
|
3100
|
+
"slicePath": "frontend/slices/testimonials",
|
|
3101
|
+
"convexPaths": [
|
|
3102
|
+
"convex/features/testimonials"
|
|
3103
|
+
],
|
|
3104
|
+
"npm": [],
|
|
3105
|
+
"shadcn": [],
|
|
3106
|
+
"env": [
|
|
3107
|
+
{
|
|
3108
|
+
"name": "SUPER_ADMIN_EMAIL",
|
|
3109
|
+
"scope": "convex",
|
|
3110
|
+
"required": false
|
|
3111
|
+
}
|
|
3112
|
+
],
|
|
3113
|
+
"peers": [
|
|
3114
|
+
{
|
|
3115
|
+
"slug": "convex-auth",
|
|
3116
|
+
"range": "^0.1",
|
|
3117
|
+
"reason": "requireAdmin uses getAuthUserId from @convex-dev/auth."
|
|
3118
|
+
}
|
|
3119
|
+
],
|
|
3120
|
+
"providers": [],
|
|
3121
|
+
"tags": [
|
|
3122
|
+
"content",
|
|
3123
|
+
"testimonials",
|
|
3124
|
+
"convex",
|
|
3125
|
+
"backend",
|
|
3126
|
+
"marketing"
|
|
3127
|
+
],
|
|
3128
|
+
"agentRecipe": "Run `npx rr add testimonials`. Compose `testimonialsTables` into root schema. Bootstrap via `npx convex run internal.features.testimonials.mutations.seed '{\"items\":[{\"quote\":\"...\",\"name\":\"...\",\"role\":\"...\",\"order\":1}]}'`. Render with `useQuery(api.features.testimonials.queries.listAll)`."
|
|
3129
|
+
},
|
|
3130
|
+
{
|
|
3131
|
+
"slug": "services",
|
|
3132
|
+
"title": "Services",
|
|
3133
|
+
"category": "content",
|
|
3134
|
+
"kind": "backend",
|
|
3135
|
+
"version": "0.1.0",
|
|
3136
|
+
"description": "Service offerings backend — title + summary + deliverables array + sort order. Public read, admin CRUD, internal seed. Pairs with a frontend services grid/list (consumer-side). Lifted 2026-05-16 from rahmanef.com; token-based admin gate swapped for rr `_shared/auth`.",
|
|
3137
|
+
"source": "rahmanef.com",
|
|
3138
|
+
"slicePath": "frontend/slices/services",
|
|
3139
|
+
"convexPaths": [
|
|
3140
|
+
"convex/features/services"
|
|
3141
|
+
],
|
|
3142
|
+
"npm": [],
|
|
3143
|
+
"shadcn": [],
|
|
3144
|
+
"env": [
|
|
3145
|
+
{
|
|
3146
|
+
"name": "SUPER_ADMIN_EMAIL",
|
|
3147
|
+
"scope": "convex",
|
|
3148
|
+
"required": false
|
|
3149
|
+
}
|
|
3150
|
+
],
|
|
3151
|
+
"peers": [
|
|
3152
|
+
{
|
|
3153
|
+
"slug": "convex-auth",
|
|
3154
|
+
"range": "^0.1",
|
|
3155
|
+
"reason": "requireAdmin uses getAuthUserId from @convex-dev/auth."
|
|
3156
|
+
}
|
|
3157
|
+
],
|
|
3158
|
+
"providers": [],
|
|
3159
|
+
"tags": [
|
|
3160
|
+
"content",
|
|
3161
|
+
"services",
|
|
3162
|
+
"convex",
|
|
3163
|
+
"backend",
|
|
3164
|
+
"marketing",
|
|
3165
|
+
"agency"
|
|
3166
|
+
],
|
|
3167
|
+
"agentRecipe": "Run `npx rr add services`. Compose `servicesTables` into root schema. Use `useQuery(api.features.services.queries.listAll)` from a server component / route to render service cards. CRUD via admin UI calling `create` / `update` / `remove` after `requireAdmin` passes."
|
|
3168
|
+
},
|
|
3169
|
+
{
|
|
3170
|
+
"slug": "socials",
|
|
3171
|
+
"title": "Socials",
|
|
3172
|
+
"category": "content",
|
|
3173
|
+
"kind": "backend",
|
|
3174
|
+
"version": "0.1.0",
|
|
3175
|
+
"description": "Single source of truth for profile/social links. Powers JSON-LD `Person.sameAs` (Google entity graph), IndieWeb `<link rel=\"me\">` tags, and footer/contact/about UI surfaces. URL-deduped, ordered, `visible` / `featured` / `relMe` / `sameAs` flags. Lifted 2026-05-16 from rahmanef.com; token-based admin gate swapped, baked-in 14-platform rahmanef seed dropped — `seed` now takes items via args so each adopter ships their own list.",
|
|
3176
|
+
"source": "rahmanef.com",
|
|
3177
|
+
"slicePath": "frontend/slices/socials",
|
|
3178
|
+
"convexPaths": [
|
|
3179
|
+
"convex/features/socials"
|
|
3180
|
+
],
|
|
3181
|
+
"npm": [],
|
|
3182
|
+
"shadcn": [],
|
|
3183
|
+
"env": [
|
|
3184
|
+
{
|
|
3185
|
+
"name": "SUPER_ADMIN_EMAIL",
|
|
3186
|
+
"scope": "convex",
|
|
3187
|
+
"required": false
|
|
3188
|
+
}
|
|
3189
|
+
],
|
|
3190
|
+
"peers": [
|
|
3191
|
+
{
|
|
3192
|
+
"slug": "convex-auth",
|
|
3193
|
+
"range": "^0.1",
|
|
3194
|
+
"reason": "requireAdmin uses getAuthUserId from @convex-dev/auth."
|
|
3195
|
+
}
|
|
3196
|
+
],
|
|
3197
|
+
"providers": [],
|
|
3198
|
+
"tags": [
|
|
3199
|
+
"content",
|
|
3200
|
+
"socials",
|
|
3201
|
+
"seo",
|
|
3202
|
+
"indieweb",
|
|
3203
|
+
"convex",
|
|
3204
|
+
"backend"
|
|
3205
|
+
],
|
|
3206
|
+
"agentRecipe": "Run `npx rr add socials`. Compose `socialsTables` into root schema. Bootstrap with `npx convex run internal.features.socials.mutations.seed '{\"items\":[{\"platform\":\"github\",\"url\":\"https://github.com/<you>\",\"order\":1,\"visible\":true,\"featured\":true,\"sameAs\":true,\"relMe\":true}]}'`. Wire `useQuery(api.features.socials.queries.listVisible)` into footer for entity-graph SEO."
|
|
3207
|
+
},
|
|
3208
|
+
{
|
|
3209
|
+
"slug": "create-your-mcp",
|
|
3210
|
+
"title": "Create Your MCP",
|
|
3211
|
+
"category": "ai",
|
|
3212
|
+
"kind": "full",
|
|
3213
|
+
"version": "0.1.0",
|
|
3214
|
+
"description": "Turn any rr-based app into an MCP server that ChatGPT custom apps, Claude.ai connectors, Cursor MCP, and other AI clients authenticate to. OAuth 2.1 + PKCE flow with code → bearer exchange, env-configured vendor-host allowlist, single-use codes, 1-year bearer tokens, scope-tagged tools, opaque error collapsing, constant-time token compare. Static MCP_API_KEY fallback for service-account / CI scripts. Sanitized 2026-05-16 from rahmanef.com's production MCP integration — vendor literals (chatgpt.com / OpenAI paths) replaced with MCP_OAUTH_ALLOWED_HOSTS + MCP_OAUTH_ALLOWED_PATH_PREFIXES env vars so the slice ships portable.",
|
|
3215
|
+
"source": "rahmanef.com",
|
|
3216
|
+
"slicePath": "frontend/slices/create-your-mcp",
|
|
3217
|
+
"convexPaths": [
|
|
3218
|
+
"convex/features/create-your-mcp"
|
|
3219
|
+
],
|
|
3220
|
+
"npm": [],
|
|
3221
|
+
"shadcn": [],
|
|
3222
|
+
"env": [
|
|
3223
|
+
{
|
|
3224
|
+
"name": "MCP_API_KEY",
|
|
3225
|
+
"scope": "server",
|
|
3226
|
+
"required": false,
|
|
3227
|
+
"description": "Static bearer for service-account / CI access. Min 32 chars. Must match Convex env."
|
|
3228
|
+
},
|
|
3229
|
+
{
|
|
3230
|
+
"name": "MCP_OAUTH_ALLOWED_HOSTS",
|
|
3231
|
+
"scope": "convex",
|
|
3232
|
+
"required": false,
|
|
3233
|
+
"description": "CSV vendor domains for redirect_uri (chatgpt.com,claude.ai,cursor.sh)."
|
|
3234
|
+
},
|
|
3235
|
+
{
|
|
3236
|
+
"name": "MCP_OAUTH_ALLOWED_PATH_PREFIXES",
|
|
3237
|
+
"scope": "convex",
|
|
3238
|
+
"required": false,
|
|
3239
|
+
"description": "CSV path prefixes under allowed hosts (/aip/,/connector/,/oauth/)."
|
|
3240
|
+
},
|
|
3241
|
+
{
|
|
3242
|
+
"name": "NEXT_PUBLIC_SITE_URL",
|
|
3243
|
+
"scope": "next-public",
|
|
3244
|
+
"required": true,
|
|
3245
|
+
"description": "Public site origin for WWW-Authenticate challenge."
|
|
3246
|
+
}
|
|
3247
|
+
],
|
|
3248
|
+
"peers": [
|
|
3249
|
+
{
|
|
3250
|
+
"slug": "convex-auth",
|
|
3251
|
+
"range": "^0.1",
|
|
3252
|
+
"reason": "requireAdmin uses getAuthUserId from @convex-dev/auth."
|
|
3253
|
+
}
|
|
3254
|
+
],
|
|
3255
|
+
"providers": [],
|
|
3256
|
+
"tags": [
|
|
3257
|
+
"ai",
|
|
3258
|
+
"mcp",
|
|
3259
|
+
"oauth",
|
|
3260
|
+
"pkce",
|
|
3261
|
+
"chatgpt",
|
|
3262
|
+
"claude",
|
|
3263
|
+
"cursor",
|
|
3264
|
+
"convex",
|
|
3265
|
+
"integration"
|
|
3266
|
+
],
|
|
3267
|
+
"agentRecipe": "Run `npx rr add create-your-mcp`. Compose `createYourMcpTables` into root schema. Move `slices/create-your-mcp/routes/mcp.route.ts` → `app/api/mcp/route.ts` and `oauth-token.route.ts` → `app/api/oauth/token/route.ts`. Set MCP_OAUTH_ALLOWED_HOSTS (CSV vendor domains). Mount `<McpAdminView />` at /admin/mcp. Connect ChatGPT/Claude/Cursor via the setup form rendered by the admin view."
|
|
3268
|
+
},
|
|
2546
3269
|
{
|
|
2547
3270
|
"slug": "contact-form-resend",
|
|
2548
3271
|
"title": "Contact Form + Resend",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rahman-resources",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.1",
|
|
4
4
|
"description": "Rahman Resources (rr) — shadcn-style installer for vertical slices. `npx resources add <slug>` copies slice into your project's `slices/<slug>/`. You own the files.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|