rahman-resources 1.2.0 → 1.4.0
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 +857 -72
- 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-16T13:46:33.202Z",
|
|
4
4
|
"repo": "rahmanef63/resource-site",
|
|
5
5
|
"branch": "main",
|
|
6
6
|
"layouts": [
|
|
@@ -1343,9 +1343,9 @@
|
|
|
1343
1343
|
},
|
|
1344
1344
|
{
|
|
1345
1345
|
"slug": "ai-router",
|
|
1346
|
-
"title": "AI Router
|
|
1346
|
+
"title": "AI Router — Tiered Provider Proxy",
|
|
1347
1347
|
"category": "ai",
|
|
1348
|
-
"description": "Tier-routed LLM access
|
|
1348
|
+
"description": "Backend infrastructure slice. Tier-routed LLM access — nano (Haiku) for classification, mid (Sonnet) for chat, flagship (Opus) for deep reasoning. Per-call usage log + cost guard. Works with direct Anthropic/OpenAI/Google keys or OpenRouter umbrella key. Every other AI slice calls through it.",
|
|
1349
1349
|
"source": "rahmanef63/resource-site",
|
|
1350
1350
|
"docsUrl": "https://sdk.vercel.ai/docs",
|
|
1351
1351
|
"install": "npm i ai @openrouter/ai-sdk-provider",
|
|
@@ -1357,9 +1357,137 @@
|
|
|
1357
1357
|
"agentRecipe": "Wrap every AI call through ai-router action. Pick tier based on workload: nano for spam-flag/headline-suggest, mid for chat/draft, flagship for methodology-review. Log token usage to ai_usage table for cost dashboard.",
|
|
1358
1358
|
"tags": [
|
|
1359
1359
|
"ai",
|
|
1360
|
-
"
|
|
1361
|
-
"
|
|
1362
|
-
"
|
|
1360
|
+
"ai:backend",
|
|
1361
|
+
"tier-routing",
|
|
1362
|
+
"cost-guard"
|
|
1363
|
+
]
|
|
1364
|
+
},
|
|
1365
|
+
{
|
|
1366
|
+
"slug": "ai-chatbot",
|
|
1367
|
+
"title": "AI Chatbot — Three-Column Workbench",
|
|
1368
|
+
"category": "ai",
|
|
1369
|
+
"description": "Claude.ai / ChatGPT-style chatbot. Three-column shell: threads + attachments + active tools on the left, streaming messages in the center, model + params + skills + actions on the right. Multi-provider, 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 workbench; admin surface = per-bot persona, fallback responses, guardrails.",
|
|
1370
|
+
"source": "rahmanef63/resource-site",
|
|
1371
|
+
"docsUrl": "https://sdk.vercel.ai/docs",
|
|
1372
|
+
"install": "npm i ai @ai-sdk/anthropic @ai-sdk/openai",
|
|
1373
|
+
"npmPackages": [
|
|
1374
|
+
"ai",
|
|
1375
|
+
"@ai-sdk/anthropic",
|
|
1376
|
+
"@ai-sdk/openai"
|
|
1377
|
+
],
|
|
1378
|
+
"exampleCode": "",
|
|
1379
|
+
"agentRecipe": "Run `npx rr add ai-chatbot`. Mount `<ChatWorkbench />` at /chat (public) and `<ChatbotAdminPanel />` at /admin/ai-chatbot. Streaming via HTTP action SSE; tool registry pulled from ai-admin; multimodal attachments via Convex storage.",
|
|
1380
|
+
"tags": [
|
|
1381
|
+
"ai",
|
|
1382
|
+
"ai:chatbot",
|
|
1383
|
+
"streaming",
|
|
1384
|
+
"multimodal",
|
|
1385
|
+
"tool-calls",
|
|
1386
|
+
"agent-mode",
|
|
1387
|
+
"rag",
|
|
1388
|
+
"citations",
|
|
1389
|
+
"branching",
|
|
1390
|
+
"history"
|
|
1391
|
+
]
|
|
1392
|
+
},
|
|
1393
|
+
{
|
|
1394
|
+
"slug": "ai-first-app",
|
|
1395
|
+
"title": "AI-First App — Generation Canvas",
|
|
1396
|
+
"category": "ai",
|
|
1397
|
+
"description": "AI is the primary UI — single big prompt input → live-streaming generation canvas with iteration toolbar. Suno / Midjourney / Lovable pattern. Includes prompt history, version tree (branch & compare outputs), variation grid, share-to-link. Public surface = generator; admin surface = template library + few-shot example bank + output moderation rules.",
|
|
1398
|
+
"source": "rahmanef63/resource-site",
|
|
1399
|
+
"install": "",
|
|
1400
|
+
"npmPackages": [],
|
|
1401
|
+
"exampleCode": "",
|
|
1402
|
+
"agentRecipe": "Run `npx rr add ai-first-app`. Mount `<GeneratorCanvas />` at /. Use case: prompt → output is the entire product flow. Wire your output renderer (text/image/code/audio) via the OutputSlot adapter.",
|
|
1403
|
+
"tags": [
|
|
1404
|
+
"ai",
|
|
1405
|
+
"ai:first-app",
|
|
1406
|
+
"generation",
|
|
1407
|
+
"streaming",
|
|
1408
|
+
"history",
|
|
1409
|
+
"branching",
|
|
1410
|
+
"image-gen"
|
|
1411
|
+
]
|
|
1412
|
+
},
|
|
1413
|
+
{
|
|
1414
|
+
"slug": "ai-copilot",
|
|
1415
|
+
"title": "AI Copilot — Sidebar Companion",
|
|
1416
|
+
"category": "ai",
|
|
1417
|
+
"description": "AI sits in a collapsible sidebar of an existing CRUD app — context-aware suggestions for the currently-focused entity (record, doc, ticket). Inline accept/dismiss diff hunks, slash-command palette, multi-turn drill-down. Public surface = embedded copilot panel; admin surface = trigger rules (which entity types fire which prompts) + tone/persona overrides.",
|
|
1418
|
+
"source": "rahmanef63/resource-site",
|
|
1419
|
+
"install": "",
|
|
1420
|
+
"npmPackages": [],
|
|
1421
|
+
"exampleCode": "",
|
|
1422
|
+
"agentRecipe": "Run `npx rr add ai-copilot`. Wrap your host app in `<CopilotProvider>` and mount `<CopilotPanel />` in the page shell. Register entity → prompt mappings in ai-admin.copilot.triggers.",
|
|
1423
|
+
"tags": [
|
|
1424
|
+
"ai",
|
|
1425
|
+
"ai:copilot",
|
|
1426
|
+
"streaming",
|
|
1427
|
+
"tool-calls",
|
|
1428
|
+
"suggestions",
|
|
1429
|
+
"context-aware"
|
|
1430
|
+
]
|
|
1431
|
+
},
|
|
1432
|
+
{
|
|
1433
|
+
"slug": "ai-agent-runner",
|
|
1434
|
+
"title": "AI Agent Runner — Async Worker Dashboard",
|
|
1435
|
+
"category": "ai",
|
|
1436
|
+
"description": "Autonomous background agents. Public surface = task queue + run results dashboard with step-by-step traces (Devin/Replit-Agent style). Admin surface = agent registry (skill + model + tool subset + max-iter + schedule + concurrency caps) + retry/backoff policy. Each run produces an audit-log entry, cost tally, and shareable trace URL.",
|
|
1437
|
+
"source": "rahmanef63/resource-site",
|
|
1438
|
+
"install": "",
|
|
1439
|
+
"npmPackages": [],
|
|
1440
|
+
"exampleCode": "",
|
|
1441
|
+
"agentRecipe": "Run `npx rr add ai-agent-runner`. Mount `<RunnerDashboard />` at /agents. Trigger runs via `runAgent({agentSlug, input, scheduleAt?})`. Cron scheduler optional via Convex cron — wire if you need scheduled runs.",
|
|
1442
|
+
"tags": [
|
|
1443
|
+
"ai",
|
|
1444
|
+
"ai:agent",
|
|
1445
|
+
"agent-mode",
|
|
1446
|
+
"tool-calls",
|
|
1447
|
+
"async",
|
|
1448
|
+
"queue",
|
|
1449
|
+
"traces"
|
|
1450
|
+
]
|
|
1451
|
+
},
|
|
1452
|
+
{
|
|
1453
|
+
"slug": "ai-search",
|
|
1454
|
+
"title": "AI Search — Ask with Citations",
|
|
1455
|
+
"category": "ai",
|
|
1456
|
+
"description": "Perplexity-style answer engine over a workspace corpus. Public surface = ask box + streaming answer with inline numbered citations + source cards strip. Admin surface = corpus ingestion (URLs / files / Notion / Slack) + crawl schedule + reranker tuning + per-source weight.",
|
|
1457
|
+
"source": "rahmanef63/resource-site",
|
|
1458
|
+
"install": "",
|
|
1459
|
+
"npmPackages": [],
|
|
1460
|
+
"exampleCode": "",
|
|
1461
|
+
"agentRecipe": "Run `npx rr add ai-search`. Mount `<AskBox />` at /ask. Ingestion runs in ai-admin → AI Search → Sources. Wire vector-search slice for embedding store.",
|
|
1462
|
+
"tags": [
|
|
1463
|
+
"ai",
|
|
1464
|
+
"ai:search",
|
|
1465
|
+
"rag",
|
|
1466
|
+
"citations",
|
|
1467
|
+
"streaming",
|
|
1468
|
+
"corpus"
|
|
1469
|
+
]
|
|
1470
|
+
},
|
|
1471
|
+
{
|
|
1472
|
+
"slug": "ai-admin",
|
|
1473
|
+
"title": "AI Admin — Central Config Console",
|
|
1474
|
+
"category": "ai",
|
|
1475
|
+
"description": "Operator console for the whole AI stack — API sources (Anthropic/OpenAI/Google/Mistral/Ollama), model registry with capabilities + pricing, skill library (system prompts + tool defaults), tool registry (typed JSON schemas + sandbox flags), agent definitions, per-workspace cost budgets, full audit log of every call. Plugs into the existing admin-panel section registry. Every other ai-* slice reads its registries here.",
|
|
1476
|
+
"source": "rahmanef63/resource-site",
|
|
1477
|
+
"install": "",
|
|
1478
|
+
"npmPackages": [],
|
|
1479
|
+
"exampleCode": "",
|
|
1480
|
+
"agentRecipe": "Run `npx rr add ai-admin`. Adds an `AI` section to the admin-panel ADMIN_SECTIONS registry with sub-tabs (Providers/Models/Skills/Tools/Agents/Budgets/Audit). API keys encrypted at rest via AI_ADMIN_ENCRYPTION_KEY. Skills + tools + agents are SSOTs consumed by every ai-* consumer slice.",
|
|
1481
|
+
"tags": [
|
|
1482
|
+
"ai",
|
|
1483
|
+
"ai:admin",
|
|
1484
|
+
"config",
|
|
1485
|
+
"providers",
|
|
1486
|
+
"models",
|
|
1487
|
+
"skills",
|
|
1488
|
+
"tools",
|
|
1489
|
+
"agents",
|
|
1490
|
+
"budgets"
|
|
1363
1491
|
]
|
|
1364
1492
|
},
|
|
1365
1493
|
{
|
|
@@ -1621,9 +1749,9 @@
|
|
|
1621
1749
|
},
|
|
1622
1750
|
{
|
|
1623
1751
|
"slug": "icon-picker",
|
|
1624
|
-
"title": "
|
|
1752
|
+
"title": "Icon Picker",
|
|
1625
1753
|
"category": "ui",
|
|
1626
|
-
"description": "Emoji + lucide icon picker with search, 10-color
|
|
1754
|
+
"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
1755
|
"source": "notion-page-clone",
|
|
1628
1756
|
"install": "npx rahman-resources add icon-picker",
|
|
1629
1757
|
"npmPackages": [],
|
|
@@ -1656,6 +1784,26 @@
|
|
|
1656
1784
|
"brutalist"
|
|
1657
1785
|
]
|
|
1658
1786
|
},
|
|
1787
|
+
{
|
|
1788
|
+
"slug": "hero",
|
|
1789
|
+
"title": "Hero",
|
|
1790
|
+
"category": "ui",
|
|
1791
|
+
"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.",
|
|
1792
|
+
"source": "rahmanef.com",
|
|
1793
|
+
"install": "npx rahman-resources add hero",
|
|
1794
|
+
"npmPackages": [],
|
|
1795
|
+
"exampleCode": "",
|
|
1796
|
+
"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).",
|
|
1797
|
+
"tags": [
|
|
1798
|
+
"ui",
|
|
1799
|
+
"hero",
|
|
1800
|
+
"marketing",
|
|
1801
|
+
"landing",
|
|
1802
|
+
"section",
|
|
1803
|
+
"editorial",
|
|
1804
|
+
"brutalist"
|
|
1805
|
+
]
|
|
1806
|
+
},
|
|
1659
1807
|
{
|
|
1660
1808
|
"slug": "rate-limit",
|
|
1661
1809
|
"title": "Rate Limit",
|
|
@@ -1674,6 +1822,80 @@
|
|
|
1674
1822
|
"throttle"
|
|
1675
1823
|
]
|
|
1676
1824
|
},
|
|
1825
|
+
{
|
|
1826
|
+
"slug": "subscribers",
|
|
1827
|
+
"title": "Subscribers",
|
|
1828
|
+
"category": "email",
|
|
1829
|
+
"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.",
|
|
1830
|
+
"source": "rahmanef.com",
|
|
1831
|
+
"install": "npx rahman-resources add subscribers",
|
|
1832
|
+
"npmPackages": [],
|
|
1833
|
+
"exampleCode": "",
|
|
1834
|
+
"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 })`.",
|
|
1835
|
+
"tags": [
|
|
1836
|
+
"email",
|
|
1837
|
+
"newsletter",
|
|
1838
|
+
"subscribers",
|
|
1839
|
+
"convex",
|
|
1840
|
+
"backend"
|
|
1841
|
+
]
|
|
1842
|
+
},
|
|
1843
|
+
{
|
|
1844
|
+
"slug": "testimonials",
|
|
1845
|
+
"title": "Testimonials",
|
|
1846
|
+
"category": "content",
|
|
1847
|
+
"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`.",
|
|
1848
|
+
"source": "rahmanef.com",
|
|
1849
|
+
"install": "npx rahman-resources add testimonials",
|
|
1850
|
+
"npmPackages": [],
|
|
1851
|
+
"exampleCode": "",
|
|
1852
|
+
"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)`.",
|
|
1853
|
+
"tags": [
|
|
1854
|
+
"content",
|
|
1855
|
+
"testimonials",
|
|
1856
|
+
"convex",
|
|
1857
|
+
"backend",
|
|
1858
|
+
"marketing"
|
|
1859
|
+
]
|
|
1860
|
+
},
|
|
1861
|
+
{
|
|
1862
|
+
"slug": "services",
|
|
1863
|
+
"title": "Services",
|
|
1864
|
+
"category": "content",
|
|
1865
|
+
"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`.",
|
|
1866
|
+
"source": "rahmanef.com",
|
|
1867
|
+
"install": "npx rahman-resources add services",
|
|
1868
|
+
"npmPackages": [],
|
|
1869
|
+
"exampleCode": "",
|
|
1870
|
+
"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.",
|
|
1871
|
+
"tags": [
|
|
1872
|
+
"content",
|
|
1873
|
+
"services",
|
|
1874
|
+
"convex",
|
|
1875
|
+
"backend",
|
|
1876
|
+
"marketing",
|
|
1877
|
+
"agency"
|
|
1878
|
+
]
|
|
1879
|
+
},
|
|
1880
|
+
{
|
|
1881
|
+
"slug": "socials",
|
|
1882
|
+
"title": "Socials",
|
|
1883
|
+
"category": "content",
|
|
1884
|
+
"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.",
|
|
1885
|
+
"source": "rahmanef.com",
|
|
1886
|
+
"install": "npx rahman-resources add socials",
|
|
1887
|
+
"npmPackages": [],
|
|
1888
|
+
"exampleCode": "",
|
|
1889
|
+
"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.",
|
|
1890
|
+
"tags": [
|
|
1891
|
+
"content",
|
|
1892
|
+
"socials",
|
|
1893
|
+
"seo",
|
|
1894
|
+
"indieweb",
|
|
1895
|
+
"convex",
|
|
1896
|
+
"backend"
|
|
1897
|
+
]
|
|
1898
|
+
},
|
|
1677
1899
|
{
|
|
1678
1900
|
"slug": "contact-form-resend",
|
|
1679
1901
|
"title": "Contact Form + Resend",
|
|
@@ -2019,11 +2241,11 @@
|
|
|
2019
2241
|
},
|
|
2020
2242
|
{
|
|
2021
2243
|
"slug": "ai-router",
|
|
2022
|
-
"title": "AI Router
|
|
2244
|
+
"title": "AI Router — Tiered Provider Proxy",
|
|
2023
2245
|
"category": "ai",
|
|
2024
2246
|
"kind": "backend",
|
|
2025
2247
|
"version": "0.1.0",
|
|
2026
|
-
"description": "Tier-routed LLM access
|
|
2248
|
+
"description": "Backend infrastructure slice. Tier-routed LLM access — nano (Haiku) for classification, mid (Sonnet) for chat, flagship (Opus) for deep reasoning. Per-call usage log + cost guard. Works with direct Anthropic/OpenAI/Google keys or OpenRouter umbrella key. Every other AI slice calls through it.",
|
|
2027
2249
|
"source": "rahmanef63/resource-site",
|
|
2028
2250
|
"slicePath": "frontend/slices/ai-router",
|
|
2029
2251
|
"convexPaths": [
|
|
@@ -2047,121 +2269,501 @@
|
|
|
2047
2269
|
"providers": [],
|
|
2048
2270
|
"tags": [
|
|
2049
2271
|
"ai",
|
|
2050
|
-
"
|
|
2051
|
-
"
|
|
2052
|
-
"
|
|
2272
|
+
"ai:backend",
|
|
2273
|
+
"tier-routing",
|
|
2274
|
+
"cost-guard"
|
|
2053
2275
|
],
|
|
2054
2276
|
"agentRecipe": "Wrap every AI call through ai-router action. Pick tier based on workload: nano for spam-flag/headline-suggest, mid for chat/draft, flagship for methodology-review. Log token usage to ai_usage table for cost dashboard."
|
|
2055
2277
|
},
|
|
2056
2278
|
{
|
|
2057
|
-
"slug": "
|
|
2058
|
-
"title": "
|
|
2059
|
-
"category": "
|
|
2279
|
+
"slug": "ai-chatbot",
|
|
2280
|
+
"title": "AI Chatbot — Three-Column Workbench",
|
|
2281
|
+
"category": "ai",
|
|
2060
2282
|
"kind": "full",
|
|
2061
2283
|
"version": "0.1.0",
|
|
2062
|
-
"description": "
|
|
2284
|
+
"description": "Claude.ai / ChatGPT-style chatbot. Three-column shell: threads + attachments + active tools on the left, streaming messages in the center, model + params + skills + actions on the right. Multi-provider, 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 workbench; admin surface = per-bot persona, fallback responses, guardrails.",
|
|
2063
2285
|
"source": "rahmanef63/resource-site",
|
|
2064
|
-
"slicePath": "frontend/slices/
|
|
2286
|
+
"slicePath": "frontend/slices/ai-chatbot",
|
|
2065
2287
|
"convexPaths": [
|
|
2066
|
-
"convex/features/
|
|
2288
|
+
"convex/features/ai-chatbot"
|
|
2067
2289
|
],
|
|
2068
2290
|
"npm": [
|
|
2069
|
-
"
|
|
2291
|
+
"ai@^4.0.0",
|
|
2292
|
+
"@ai-sdk/anthropic@^0.0.50",
|
|
2293
|
+
"@ai-sdk/openai@^0.0.60"
|
|
2070
2294
|
],
|
|
2071
2295
|
"shadcn": [
|
|
2296
|
+
"button",
|
|
2072
2297
|
"card",
|
|
2073
|
-
"
|
|
2298
|
+
"badge",
|
|
2299
|
+
"avatar",
|
|
2300
|
+
"scroll-area",
|
|
2301
|
+
"select",
|
|
2302
|
+
"separator",
|
|
2303
|
+
"slider",
|
|
2304
|
+
"switch",
|
|
2305
|
+
"textarea",
|
|
2306
|
+
"tabs"
|
|
2074
2307
|
],
|
|
2075
2308
|
"env": [
|
|
2309
|
+
{
|
|
2310
|
+
"name": "ANTHROPIC_API_KEY",
|
|
2311
|
+
"scope": "convex",
|
|
2312
|
+
"required": false
|
|
2313
|
+
},
|
|
2076
2314
|
{
|
|
2077
2315
|
"name": "OPENAI_API_KEY",
|
|
2078
2316
|
"scope": "convex",
|
|
2079
|
-
"required":
|
|
2317
|
+
"required": false
|
|
2318
|
+
},
|
|
2319
|
+
{
|
|
2320
|
+
"name": "GOOGLE_GENERATIVE_AI_API_KEY",
|
|
2321
|
+
"scope": "convex",
|
|
2322
|
+
"required": false
|
|
2323
|
+
}
|
|
2324
|
+
],
|
|
2325
|
+
"peers": [
|
|
2326
|
+
{
|
|
2327
|
+
"slug": "convex-auth",
|
|
2328
|
+
"range": "^0.1",
|
|
2329
|
+
"reason": "Thread ownership requires authenticated user."
|
|
2330
|
+
},
|
|
2331
|
+
{
|
|
2332
|
+
"slug": "ai-router",
|
|
2333
|
+
"range": "^0.1",
|
|
2334
|
+
"reason": "Routes provider calls through tiered proxy."
|
|
2335
|
+
},
|
|
2336
|
+
{
|
|
2337
|
+
"slug": "ai-admin",
|
|
2338
|
+
"range": "^0.1",
|
|
2339
|
+
"reason": "Reads skills/tools/models from ai-admin registry."
|
|
2340
|
+
},
|
|
2341
|
+
{
|
|
2342
|
+
"slug": "vector-search",
|
|
2343
|
+
"range": "^0.1",
|
|
2344
|
+
"reason": "Optional — RAG tool uses workspace embeddings."
|
|
2080
2345
|
}
|
|
2081
2346
|
],
|
|
2082
|
-
"peers": [],
|
|
2083
2347
|
"providers": [],
|
|
2084
2348
|
"tags": [
|
|
2085
|
-
"
|
|
2086
|
-
"
|
|
2087
|
-
"
|
|
2088
|
-
"
|
|
2089
|
-
"
|
|
2349
|
+
"ai",
|
|
2350
|
+
"ai:chatbot",
|
|
2351
|
+
"streaming",
|
|
2352
|
+
"multimodal",
|
|
2353
|
+
"tool-calls",
|
|
2354
|
+
"agent-mode",
|
|
2355
|
+
"rag",
|
|
2356
|
+
"citations",
|
|
2357
|
+
"branching",
|
|
2358
|
+
"history"
|
|
2090
2359
|
],
|
|
2091
|
-
"agentRecipe": "
|
|
2360
|
+
"agentRecipe": "Run `npx rr add ai-chatbot`. Mount `<ChatWorkbench />` at /chat (public) and `<ChatbotAdminPanel />` at /admin/ai-chatbot. Streaming via HTTP action SSE; tool registry pulled from ai-admin; multimodal attachments via Convex storage."
|
|
2092
2361
|
},
|
|
2093
2362
|
{
|
|
2094
|
-
"slug": "
|
|
2095
|
-
"title": "
|
|
2096
|
-
"category": "
|
|
2097
|
-
"kind": "
|
|
2098
|
-
"version": "0.
|
|
2099
|
-
"description": "
|
|
2363
|
+
"slug": "ai-first-app",
|
|
2364
|
+
"title": "AI-First App — Generation Canvas",
|
|
2365
|
+
"category": "ai",
|
|
2366
|
+
"kind": "full",
|
|
2367
|
+
"version": "0.1.0",
|
|
2368
|
+
"description": "AI is the primary UI — single big prompt input → live-streaming generation canvas with iteration toolbar. Suno / Midjourney / Lovable pattern. Includes prompt history, version tree (branch & compare outputs), variation grid, share-to-link. Public surface = generator; admin surface = template library + few-shot example bank + output moderation rules.",
|
|
2100
2369
|
"source": "rahmanef63/resource-site",
|
|
2101
|
-
"slicePath": "frontend/slices/
|
|
2102
|
-
"convexPaths": [
|
|
2370
|
+
"slicePath": "frontend/slices/ai-first-app",
|
|
2371
|
+
"convexPaths": [
|
|
2372
|
+
"convex/features/ai-first-app"
|
|
2373
|
+
],
|
|
2103
2374
|
"npm": [
|
|
2104
|
-
"
|
|
2105
|
-
"gray-matter@^4.0.3",
|
|
2106
|
-
"rehype-pretty-code@^0.14.0"
|
|
2375
|
+
"ai@^4.0.0"
|
|
2107
2376
|
],
|
|
2108
2377
|
"shadcn": [
|
|
2109
|
-
"
|
|
2378
|
+
"button",
|
|
2379
|
+
"card",
|
|
2380
|
+
"badge",
|
|
2381
|
+
"textarea",
|
|
2382
|
+
"tabs",
|
|
2383
|
+
"tooltip",
|
|
2384
|
+
"scroll-area",
|
|
2385
|
+
"select"
|
|
2110
2386
|
],
|
|
2111
2387
|
"env": [],
|
|
2112
|
-
"peers": [
|
|
2388
|
+
"peers": [
|
|
2389
|
+
{
|
|
2390
|
+
"slug": "convex-auth",
|
|
2391
|
+
"range": "^0.1",
|
|
2392
|
+
"reason": "Generation history per user."
|
|
2393
|
+
},
|
|
2394
|
+
{
|
|
2395
|
+
"slug": "ai-router",
|
|
2396
|
+
"range": "^0.1",
|
|
2397
|
+
"reason": "All generation calls flow through router."
|
|
2398
|
+
},
|
|
2399
|
+
{
|
|
2400
|
+
"slug": "ai-admin",
|
|
2401
|
+
"range": "^0.1",
|
|
2402
|
+
"reason": "Templates + moderation rules live in ai-admin."
|
|
2403
|
+
}
|
|
2404
|
+
],
|
|
2113
2405
|
"providers": [],
|
|
2114
2406
|
"tags": [
|
|
2115
|
-
"
|
|
2116
|
-
"
|
|
2117
|
-
"
|
|
2118
|
-
"
|
|
2407
|
+
"ai",
|
|
2408
|
+
"ai:first-app",
|
|
2409
|
+
"generation",
|
|
2410
|
+
"streaming",
|
|
2411
|
+
"history",
|
|
2412
|
+
"branching",
|
|
2413
|
+
"image-gen"
|
|
2119
2414
|
],
|
|
2120
|
-
"agentRecipe": "
|
|
2415
|
+
"agentRecipe": "Run `npx rr add ai-first-app`. Mount `<GeneratorCanvas />` at /. Use case: prompt → output is the entire product flow. Wire your output renderer (text/image/code/audio) via the OutputSlot adapter."
|
|
2121
2416
|
},
|
|
2122
2417
|
{
|
|
2123
|
-
"slug": "
|
|
2124
|
-
"title": "
|
|
2125
|
-
"category": "
|
|
2418
|
+
"slug": "ai-copilot",
|
|
2419
|
+
"title": "AI Copilot — Sidebar Companion",
|
|
2420
|
+
"category": "ai",
|
|
2126
2421
|
"kind": "full",
|
|
2127
2422
|
"version": "0.1.0",
|
|
2128
|
-
"description": "
|
|
2423
|
+
"description": "AI sits in a collapsible sidebar of an existing CRUD app — context-aware suggestions for the currently-focused entity (record, doc, ticket). Inline accept/dismiss diff hunks, slash-command palette, multi-turn drill-down. Public surface = embedded copilot panel; admin surface = trigger rules (which entity types fire which prompts) + tone/persona overrides.",
|
|
2129
2424
|
"source": "rahmanef63/resource-site",
|
|
2130
|
-
"slicePath": "frontend/slices/
|
|
2425
|
+
"slicePath": "frontend/slices/ai-copilot",
|
|
2131
2426
|
"convexPaths": [
|
|
2132
|
-
"convex/features/
|
|
2427
|
+
"convex/features/ai-copilot"
|
|
2133
2428
|
],
|
|
2134
2429
|
"npm": [
|
|
2135
|
-
"
|
|
2430
|
+
"ai@^4.0.0"
|
|
2136
2431
|
],
|
|
2137
2432
|
"shadcn": [
|
|
2138
|
-
"
|
|
2433
|
+
"button",
|
|
2434
|
+
"card",
|
|
2435
|
+
"badge",
|
|
2436
|
+
"command",
|
|
2437
|
+
"scroll-area",
|
|
2438
|
+
"sheet",
|
|
2439
|
+
"separator",
|
|
2440
|
+
"tooltip"
|
|
2139
2441
|
],
|
|
2140
|
-
"env": [
|
|
2442
|
+
"env": [],
|
|
2443
|
+
"peers": [
|
|
2141
2444
|
{
|
|
2142
|
-
"
|
|
2143
|
-
"
|
|
2144
|
-
"
|
|
2445
|
+
"slug": "convex-auth",
|
|
2446
|
+
"range": "^0.1",
|
|
2447
|
+
"reason": "Suggestions scoped to authed user."
|
|
2145
2448
|
},
|
|
2146
2449
|
{
|
|
2147
|
-
"
|
|
2148
|
-
"
|
|
2149
|
-
"
|
|
2450
|
+
"slug": "ai-router",
|
|
2451
|
+
"range": "^0.1",
|
|
2452
|
+
"reason": "Inference via tiered router."
|
|
2453
|
+
},
|
|
2454
|
+
{
|
|
2455
|
+
"slug": "ai-admin",
|
|
2456
|
+
"range": "^0.1",
|
|
2457
|
+
"reason": "Trigger rules + personas live in ai-admin."
|
|
2150
2458
|
}
|
|
2151
2459
|
],
|
|
2152
|
-
"peers": [],
|
|
2153
2460
|
"providers": [],
|
|
2154
2461
|
"tags": [
|
|
2155
|
-
"
|
|
2156
|
-
"
|
|
2157
|
-
"
|
|
2158
|
-
"
|
|
2462
|
+
"ai",
|
|
2463
|
+
"ai:copilot",
|
|
2464
|
+
"streaming",
|
|
2465
|
+
"tool-calls",
|
|
2466
|
+
"suggestions",
|
|
2467
|
+
"context-aware"
|
|
2159
2468
|
],
|
|
2160
|
-
"agentRecipe": "
|
|
2469
|
+
"agentRecipe": "Run `npx rr add ai-copilot`. Wrap your host app in `<CopilotProvider>` and mount `<CopilotPanel />` in the page shell. Register entity → prompt mappings in ai-admin.copilot.triggers."
|
|
2161
2470
|
},
|
|
2162
2471
|
{
|
|
2163
|
-
"slug": "
|
|
2164
|
-
"title": "
|
|
2472
|
+
"slug": "ai-agent-runner",
|
|
2473
|
+
"title": "AI Agent Runner — Async Worker Dashboard",
|
|
2474
|
+
"category": "ai",
|
|
2475
|
+
"kind": "full",
|
|
2476
|
+
"version": "0.1.0",
|
|
2477
|
+
"description": "Autonomous background agents. Public surface = task queue + run results dashboard with step-by-step traces (Devin/Replit-Agent style). Admin surface = agent registry (skill + model + tool subset + max-iter + schedule + concurrency caps) + retry/backoff policy. Each run produces an audit-log entry, cost tally, and shareable trace URL.",
|
|
2478
|
+
"source": "rahmanef63/resource-site",
|
|
2479
|
+
"slicePath": "frontend/slices/ai-agent-runner",
|
|
2480
|
+
"convexPaths": [
|
|
2481
|
+
"convex/features/ai-agent-runner"
|
|
2482
|
+
],
|
|
2483
|
+
"npm": [
|
|
2484
|
+
"ai@^4.0.0"
|
|
2485
|
+
],
|
|
2486
|
+
"shadcn": [
|
|
2487
|
+
"button",
|
|
2488
|
+
"card",
|
|
2489
|
+
"badge",
|
|
2490
|
+
"table",
|
|
2491
|
+
"tabs",
|
|
2492
|
+
"scroll-area",
|
|
2493
|
+
"progress"
|
|
2494
|
+
],
|
|
2495
|
+
"env": [],
|
|
2496
|
+
"peers": [
|
|
2497
|
+
{
|
|
2498
|
+
"slug": "convex-auth",
|
|
2499
|
+
"range": "^0.1",
|
|
2500
|
+
"reason": "Per-user agent run ownership."
|
|
2501
|
+
},
|
|
2502
|
+
{
|
|
2503
|
+
"slug": "ai-router",
|
|
2504
|
+
"range": "^0.1",
|
|
2505
|
+
"reason": "Step calls flow through router."
|
|
2506
|
+
},
|
|
2507
|
+
{
|
|
2508
|
+
"slug": "ai-admin",
|
|
2509
|
+
"range": "^0.1",
|
|
2510
|
+
"reason": "Agents defined in ai-admin.agents."
|
|
2511
|
+
},
|
|
2512
|
+
{
|
|
2513
|
+
"slug": "audit-log",
|
|
2514
|
+
"range": "^0.1",
|
|
2515
|
+
"reason": "Every step logged."
|
|
2516
|
+
}
|
|
2517
|
+
],
|
|
2518
|
+
"providers": [],
|
|
2519
|
+
"tags": [
|
|
2520
|
+
"ai",
|
|
2521
|
+
"ai:agent",
|
|
2522
|
+
"agent-mode",
|
|
2523
|
+
"tool-calls",
|
|
2524
|
+
"async",
|
|
2525
|
+
"queue",
|
|
2526
|
+
"traces"
|
|
2527
|
+
],
|
|
2528
|
+
"agentRecipe": "Run `npx rr add ai-agent-runner`. Mount `<RunnerDashboard />` at /agents. Trigger runs via `runAgent({agentSlug, input, scheduleAt?})`. Cron scheduler optional via Convex cron — wire if you need scheduled runs."
|
|
2529
|
+
},
|
|
2530
|
+
{
|
|
2531
|
+
"slug": "ai-search",
|
|
2532
|
+
"title": "AI Search — Ask with Citations",
|
|
2533
|
+
"category": "ai",
|
|
2534
|
+
"kind": "full",
|
|
2535
|
+
"version": "0.1.0",
|
|
2536
|
+
"description": "Perplexity-style answer engine over a workspace corpus. Public surface = ask box + streaming answer with inline numbered citations + source cards strip. Admin surface = corpus ingestion (URLs / files / Notion / Slack) + crawl schedule + reranker tuning + per-source weight.",
|
|
2537
|
+
"source": "rahmanef63/resource-site",
|
|
2538
|
+
"slicePath": "frontend/slices/ai-search",
|
|
2539
|
+
"convexPaths": [
|
|
2540
|
+
"convex/features/ai-search"
|
|
2541
|
+
],
|
|
2542
|
+
"npm": [
|
|
2543
|
+
"ai@^4.0.0"
|
|
2544
|
+
],
|
|
2545
|
+
"shadcn": [
|
|
2546
|
+
"button",
|
|
2547
|
+
"card",
|
|
2548
|
+
"badge",
|
|
2549
|
+
"input",
|
|
2550
|
+
"tabs",
|
|
2551
|
+
"scroll-area",
|
|
2552
|
+
"separator"
|
|
2553
|
+
],
|
|
2554
|
+
"env": [],
|
|
2555
|
+
"peers": [
|
|
2556
|
+
{
|
|
2557
|
+
"slug": "convex-auth",
|
|
2558
|
+
"range": "^0.1",
|
|
2559
|
+
"reason": "Per-workspace corpus scoping."
|
|
2560
|
+
},
|
|
2561
|
+
{
|
|
2562
|
+
"slug": "ai-router",
|
|
2563
|
+
"range": "^0.1",
|
|
2564
|
+
"reason": "Answer synthesis via router."
|
|
2565
|
+
},
|
|
2566
|
+
{
|
|
2567
|
+
"slug": "ai-admin",
|
|
2568
|
+
"range": "^0.1",
|
|
2569
|
+
"reason": "Reranker + source weights tunable in ai-admin."
|
|
2570
|
+
},
|
|
2571
|
+
{
|
|
2572
|
+
"slug": "vector-search",
|
|
2573
|
+
"range": "^0.1",
|
|
2574
|
+
"reason": "Embeddings index for retrieval."
|
|
2575
|
+
}
|
|
2576
|
+
],
|
|
2577
|
+
"providers": [],
|
|
2578
|
+
"tags": [
|
|
2579
|
+
"ai",
|
|
2580
|
+
"ai:search",
|
|
2581
|
+
"rag",
|
|
2582
|
+
"citations",
|
|
2583
|
+
"streaming",
|
|
2584
|
+
"corpus"
|
|
2585
|
+
],
|
|
2586
|
+
"agentRecipe": "Run `npx rr add ai-search`. Mount `<AskBox />` at /ask. Ingestion runs in ai-admin → AI Search → Sources. Wire vector-search slice for embedding store."
|
|
2587
|
+
},
|
|
2588
|
+
{
|
|
2589
|
+
"slug": "ai-admin",
|
|
2590
|
+
"title": "AI Admin — Central Config Console",
|
|
2591
|
+
"category": "ai",
|
|
2592
|
+
"kind": "full",
|
|
2593
|
+
"version": "0.1.0",
|
|
2594
|
+
"description": "Operator console for the whole AI stack — API sources (Anthropic/OpenAI/Google/Mistral/Ollama), model registry with capabilities + pricing, skill library (system prompts + tool defaults), tool registry (typed JSON schemas + sandbox flags), agent definitions, per-workspace cost budgets, full audit log of every call. Plugs into the existing admin-panel section registry. Every other ai-* slice reads its registries here.",
|
|
2595
|
+
"source": "rahmanef63/resource-site",
|
|
2596
|
+
"slicePath": "frontend/slices/ai-admin",
|
|
2597
|
+
"convexPaths": [
|
|
2598
|
+
"convex/features/ai-admin"
|
|
2599
|
+
],
|
|
2600
|
+
"npm": [],
|
|
2601
|
+
"shadcn": [
|
|
2602
|
+
"card",
|
|
2603
|
+
"button",
|
|
2604
|
+
"badge",
|
|
2605
|
+
"tabs",
|
|
2606
|
+
"table",
|
|
2607
|
+
"dialog",
|
|
2608
|
+
"input",
|
|
2609
|
+
"label",
|
|
2610
|
+
"select",
|
|
2611
|
+
"textarea",
|
|
2612
|
+
"switch"
|
|
2613
|
+
],
|
|
2614
|
+
"env": [
|
|
2615
|
+
{
|
|
2616
|
+
"name": "AI_ADMIN_ENCRYPTION_KEY",
|
|
2617
|
+
"scope": "convex",
|
|
2618
|
+
"required": true,
|
|
2619
|
+
"description": "Encrypts stored provider API keys at rest."
|
|
2620
|
+
}
|
|
2621
|
+
],
|
|
2622
|
+
"peers": [
|
|
2623
|
+
{
|
|
2624
|
+
"slug": "convex-auth",
|
|
2625
|
+
"range": "^0.1",
|
|
2626
|
+
"reason": "requireAdmin gate."
|
|
2627
|
+
},
|
|
2628
|
+
{
|
|
2629
|
+
"slug": "rbac-roles",
|
|
2630
|
+
"range": "^0.1",
|
|
2631
|
+
"reason": "Section gated by AI_ADMIN permission."
|
|
2632
|
+
},
|
|
2633
|
+
{
|
|
2634
|
+
"slug": "admin-panel",
|
|
2635
|
+
"range": "^0.1",
|
|
2636
|
+
"reason": "Lives as a registered admin section."
|
|
2637
|
+
},
|
|
2638
|
+
{
|
|
2639
|
+
"slug": "audit-log",
|
|
2640
|
+
"range": "^0.1",
|
|
2641
|
+
"reason": "Every config change + AI call routes through audit-log."
|
|
2642
|
+
}
|
|
2643
|
+
],
|
|
2644
|
+
"providers": [],
|
|
2645
|
+
"tags": [
|
|
2646
|
+
"ai",
|
|
2647
|
+
"ai:admin",
|
|
2648
|
+
"config",
|
|
2649
|
+
"providers",
|
|
2650
|
+
"models",
|
|
2651
|
+
"skills",
|
|
2652
|
+
"tools",
|
|
2653
|
+
"agents",
|
|
2654
|
+
"budgets"
|
|
2655
|
+
],
|
|
2656
|
+
"agentRecipe": "Run `npx rr add ai-admin`. Adds an `AI` section to the admin-panel ADMIN_SECTIONS registry with sub-tabs (Providers/Models/Skills/Tools/Agents/Budgets/Audit). API keys encrypted at rest via AI_ADMIN_ENCRYPTION_KEY. Skills + tools + agents are SSOTs consumed by every ai-* consumer slice."
|
|
2657
|
+
},
|
|
2658
|
+
{
|
|
2659
|
+
"slug": "vector-search",
|
|
2660
|
+
"title": "Convex Vector Search",
|
|
2661
|
+
"category": "search",
|
|
2662
|
+
"kind": "full",
|
|
2663
|
+
"version": "0.1.0",
|
|
2664
|
+
"description": "Embeddings-based search via Convex's built-in vector index. Embed via OpenAI text-embedding-3-small (1536-dim), query via vectorIndex().",
|
|
2665
|
+
"source": "rahmanef63/resource-site",
|
|
2666
|
+
"slicePath": "frontend/slices/vector-search",
|
|
2667
|
+
"convexPaths": [
|
|
2668
|
+
"convex/features/search"
|
|
2669
|
+
],
|
|
2670
|
+
"npm": [
|
|
2671
|
+
"@convex-dev/vector-search@^0.0.5"
|
|
2672
|
+
],
|
|
2673
|
+
"shadcn": [
|
|
2674
|
+
"card",
|
|
2675
|
+
"input"
|
|
2676
|
+
],
|
|
2677
|
+
"env": [
|
|
2678
|
+
{
|
|
2679
|
+
"name": "OPENAI_API_KEY",
|
|
2680
|
+
"scope": "convex",
|
|
2681
|
+
"required": true
|
|
2682
|
+
}
|
|
2683
|
+
],
|
|
2684
|
+
"peers": [],
|
|
2685
|
+
"providers": [],
|
|
2686
|
+
"tags": [
|
|
2687
|
+
"search",
|
|
2688
|
+
"vector",
|
|
2689
|
+
"embeddings",
|
|
2690
|
+
"convex",
|
|
2691
|
+
"rag"
|
|
2692
|
+
],
|
|
2693
|
+
"agentRecipe": "Add embedding field + vectorIndex per searchable table. Re-embed on upsert via Convex action. Cache embeddings — don't re-call OpenAI on every read."
|
|
2694
|
+
},
|
|
2695
|
+
{
|
|
2696
|
+
"slug": "mdx-blog",
|
|
2697
|
+
"title": "MDX Blog",
|
|
2698
|
+
"category": "content",
|
|
2699
|
+
"kind": "ui",
|
|
2700
|
+
"version": "0.2.0",
|
|
2701
|
+
"description": "Markdown-with-JSX untuk blog post. File-based MDX content collection. Portable defineMdxBlog(opts) factory dengan 4 config props (basePath, contentDir, labels.list, nav) — defaults preserve legacy /blog + content/blog. Auto-generate ToC, reading-time, syntax highlight, plus embed React components inline.",
|
|
2702
|
+
"source": "rahmanef63/resource-site",
|
|
2703
|
+
"slicePath": "frontend/slices/mdx-blog",
|
|
2704
|
+
"convexPaths": [],
|
|
2705
|
+
"npm": [
|
|
2706
|
+
"@next/mdx@^16.0.0",
|
|
2707
|
+
"gray-matter@^4.0.3",
|
|
2708
|
+
"rehype-pretty-code@^0.14.0"
|
|
2709
|
+
],
|
|
2710
|
+
"shadcn": [
|
|
2711
|
+
"card"
|
|
2712
|
+
],
|
|
2713
|
+
"env": [],
|
|
2714
|
+
"peers": [],
|
|
2715
|
+
"providers": [],
|
|
2716
|
+
"tags": [
|
|
2717
|
+
"content",
|
|
2718
|
+
"blog",
|
|
2719
|
+
"mdx",
|
|
2720
|
+
"static"
|
|
2721
|
+
],
|
|
2722
|
+
"agentRecipe": "Store post body sebagai markdown di content/blog/*.mdx. Render dengan MDXRemote di [slug]/page.tsx. Auto-extract headings ke ToC via remark plugin custom."
|
|
2723
|
+
},
|
|
2724
|
+
{
|
|
2725
|
+
"slug": "cal-com-booking",
|
|
2726
|
+
"title": "Cal.com Booking",
|
|
2727
|
+
"category": "data",
|
|
2728
|
+
"kind": "full",
|
|
2729
|
+
"version": "0.1.0",
|
|
2730
|
+
"description": "Embedded Cal.com booking widget + webhook receiver to mirror bookings into Convex.",
|
|
2731
|
+
"source": "rahmanef63/resource-site",
|
|
2732
|
+
"slicePath": "frontend/slices/cal-com-booking",
|
|
2733
|
+
"convexPaths": [
|
|
2734
|
+
"convex/features/bookings"
|
|
2735
|
+
],
|
|
2736
|
+
"npm": [
|
|
2737
|
+
"@calcom/embed-react@^1.5.0"
|
|
2738
|
+
],
|
|
2739
|
+
"shadcn": [
|
|
2740
|
+
"card"
|
|
2741
|
+
],
|
|
2742
|
+
"env": [
|
|
2743
|
+
{
|
|
2744
|
+
"name": "NEXT_PUBLIC_CALCOM_USERNAME",
|
|
2745
|
+
"scope": "next-public",
|
|
2746
|
+
"required": true
|
|
2747
|
+
},
|
|
2748
|
+
{
|
|
2749
|
+
"name": "CALCOM_WEBHOOK_SECRET",
|
|
2750
|
+
"scope": "convex",
|
|
2751
|
+
"required": true
|
|
2752
|
+
}
|
|
2753
|
+
],
|
|
2754
|
+
"peers": [],
|
|
2755
|
+
"providers": [],
|
|
2756
|
+
"tags": [
|
|
2757
|
+
"data",
|
|
2758
|
+
"scheduling",
|
|
2759
|
+
"cal-com",
|
|
2760
|
+
"bookings"
|
|
2761
|
+
],
|
|
2762
|
+
"agentRecipe": "Embed Cal.com via @calcom/embed-react di halaman services. Configure webhook di Cal.com dashboard → POST ke /api/cal-webhook → upsert booking di Convex."
|
|
2763
|
+
},
|
|
2764
|
+
{
|
|
2765
|
+
"slug": "full-width-toggle",
|
|
2766
|
+
"title": "Full Width Toggle",
|
|
2165
2767
|
"category": "ui",
|
|
2166
2768
|
"kind": "ui",
|
|
2167
2769
|
"version": "0.1.0",
|
|
@@ -2462,11 +3064,11 @@
|
|
|
2462
3064
|
},
|
|
2463
3065
|
{
|
|
2464
3066
|
"slug": "icon-picker",
|
|
2465
|
-
"title": "
|
|
3067
|
+
"title": "Icon Picker",
|
|
2466
3068
|
"category": "ui",
|
|
2467
3069
|
"kind": "ui",
|
|
2468
3070
|
"version": "0.2.0",
|
|
2469
|
-
"description": "Emoji + lucide icon picker with search, 10-color
|
|
3071
|
+
"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
3072
|
"source": "notion-page-clone",
|
|
2471
3073
|
"slicePath": "frontend/slices/icon-picker",
|
|
2472
3074
|
"convexPaths": [],
|
|
@@ -2517,6 +3119,34 @@
|
|
|
2517
3119
|
],
|
|
2518
3120
|
"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
3121
|
},
|
|
3122
|
+
{
|
|
3123
|
+
"slug": "hero",
|
|
3124
|
+
"title": "Hero",
|
|
3125
|
+
"category": "ui",
|
|
3126
|
+
"kind": "ui",
|
|
3127
|
+
"version": "0.1.0",
|
|
3128
|
+
"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.",
|
|
3129
|
+
"source": "rahmanef.com",
|
|
3130
|
+
"slicePath": "frontend/slices/hero",
|
|
3131
|
+
"convexPaths": [],
|
|
3132
|
+
"npm": [
|
|
3133
|
+
"lucide-react@^0.400.0"
|
|
3134
|
+
],
|
|
3135
|
+
"shadcn": [],
|
|
3136
|
+
"env": [],
|
|
3137
|
+
"peers": [],
|
|
3138
|
+
"providers": [],
|
|
3139
|
+
"tags": [
|
|
3140
|
+
"ui",
|
|
3141
|
+
"hero",
|
|
3142
|
+
"marketing",
|
|
3143
|
+
"landing",
|
|
3144
|
+
"section",
|
|
3145
|
+
"editorial",
|
|
3146
|
+
"brutalist"
|
|
3147
|
+
],
|
|
3148
|
+
"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)."
|
|
3149
|
+
},
|
|
2520
3150
|
{
|
|
2521
3151
|
"slug": "rate-limit",
|
|
2522
3152
|
"title": "Rate Limit",
|
|
@@ -2543,6 +3173,161 @@
|
|
|
2543
3173
|
],
|
|
2544
3174
|
"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
3175
|
},
|
|
3176
|
+
{
|
|
3177
|
+
"slug": "subscribers",
|
|
3178
|
+
"title": "Subscribers",
|
|
3179
|
+
"category": "email",
|
|
3180
|
+
"kind": "backend",
|
|
3181
|
+
"version": "0.1.0",
|
|
3182
|
+
"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.",
|
|
3183
|
+
"source": "rahmanef.com",
|
|
3184
|
+
"slicePath": "frontend/slices/subscribers",
|
|
3185
|
+
"convexPaths": [
|
|
3186
|
+
"convex/features/subscribers"
|
|
3187
|
+
],
|
|
3188
|
+
"npm": [],
|
|
3189
|
+
"shadcn": [],
|
|
3190
|
+
"env": [
|
|
3191
|
+
{
|
|
3192
|
+
"name": "SUPER_ADMIN_EMAIL",
|
|
3193
|
+
"scope": "convex",
|
|
3194
|
+
"required": false,
|
|
3195
|
+
"description": "Optional super-admin gate for admin queries."
|
|
3196
|
+
}
|
|
3197
|
+
],
|
|
3198
|
+
"peers": [
|
|
3199
|
+
{
|
|
3200
|
+
"slug": "convex-auth",
|
|
3201
|
+
"range": "^0.1",
|
|
3202
|
+
"reason": "requireAdmin uses getAuthUserId from @convex-dev/auth."
|
|
3203
|
+
}
|
|
3204
|
+
],
|
|
3205
|
+
"providers": [],
|
|
3206
|
+
"tags": [
|
|
3207
|
+
"email",
|
|
3208
|
+
"newsletter",
|
|
3209
|
+
"subscribers",
|
|
3210
|
+
"convex",
|
|
3211
|
+
"backend"
|
|
3212
|
+
],
|
|
3213
|
+
"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 })`."
|
|
3214
|
+
},
|
|
3215
|
+
{
|
|
3216
|
+
"slug": "testimonials",
|
|
3217
|
+
"title": "Testimonials",
|
|
3218
|
+
"category": "content",
|
|
3219
|
+
"kind": "backend",
|
|
3220
|
+
"version": "0.1.0",
|
|
3221
|
+
"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`.",
|
|
3222
|
+
"source": "rahmanef.com",
|
|
3223
|
+
"slicePath": "frontend/slices/testimonials",
|
|
3224
|
+
"convexPaths": [
|
|
3225
|
+
"convex/features/testimonials"
|
|
3226
|
+
],
|
|
3227
|
+
"npm": [],
|
|
3228
|
+
"shadcn": [],
|
|
3229
|
+
"env": [
|
|
3230
|
+
{
|
|
3231
|
+
"name": "SUPER_ADMIN_EMAIL",
|
|
3232
|
+
"scope": "convex",
|
|
3233
|
+
"required": false
|
|
3234
|
+
}
|
|
3235
|
+
],
|
|
3236
|
+
"peers": [
|
|
3237
|
+
{
|
|
3238
|
+
"slug": "convex-auth",
|
|
3239
|
+
"range": "^0.1",
|
|
3240
|
+
"reason": "requireAdmin uses getAuthUserId from @convex-dev/auth."
|
|
3241
|
+
}
|
|
3242
|
+
],
|
|
3243
|
+
"providers": [],
|
|
3244
|
+
"tags": [
|
|
3245
|
+
"content",
|
|
3246
|
+
"testimonials",
|
|
3247
|
+
"convex",
|
|
3248
|
+
"backend",
|
|
3249
|
+
"marketing"
|
|
3250
|
+
],
|
|
3251
|
+
"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)`."
|
|
3252
|
+
},
|
|
3253
|
+
{
|
|
3254
|
+
"slug": "services",
|
|
3255
|
+
"title": "Services",
|
|
3256
|
+
"category": "content",
|
|
3257
|
+
"kind": "backend",
|
|
3258
|
+
"version": "0.1.0",
|
|
3259
|
+
"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`.",
|
|
3260
|
+
"source": "rahmanef.com",
|
|
3261
|
+
"slicePath": "frontend/slices/services",
|
|
3262
|
+
"convexPaths": [
|
|
3263
|
+
"convex/features/services"
|
|
3264
|
+
],
|
|
3265
|
+
"npm": [],
|
|
3266
|
+
"shadcn": [],
|
|
3267
|
+
"env": [
|
|
3268
|
+
{
|
|
3269
|
+
"name": "SUPER_ADMIN_EMAIL",
|
|
3270
|
+
"scope": "convex",
|
|
3271
|
+
"required": false
|
|
3272
|
+
}
|
|
3273
|
+
],
|
|
3274
|
+
"peers": [
|
|
3275
|
+
{
|
|
3276
|
+
"slug": "convex-auth",
|
|
3277
|
+
"range": "^0.1",
|
|
3278
|
+
"reason": "requireAdmin uses getAuthUserId from @convex-dev/auth."
|
|
3279
|
+
}
|
|
3280
|
+
],
|
|
3281
|
+
"providers": [],
|
|
3282
|
+
"tags": [
|
|
3283
|
+
"content",
|
|
3284
|
+
"services",
|
|
3285
|
+
"convex",
|
|
3286
|
+
"backend",
|
|
3287
|
+
"marketing",
|
|
3288
|
+
"agency"
|
|
3289
|
+
],
|
|
3290
|
+
"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."
|
|
3291
|
+
},
|
|
3292
|
+
{
|
|
3293
|
+
"slug": "socials",
|
|
3294
|
+
"title": "Socials",
|
|
3295
|
+
"category": "content",
|
|
3296
|
+
"kind": "backend",
|
|
3297
|
+
"version": "0.1.0",
|
|
3298
|
+
"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.",
|
|
3299
|
+
"source": "rahmanef.com",
|
|
3300
|
+
"slicePath": "frontend/slices/socials",
|
|
3301
|
+
"convexPaths": [
|
|
3302
|
+
"convex/features/socials"
|
|
3303
|
+
],
|
|
3304
|
+
"npm": [],
|
|
3305
|
+
"shadcn": [],
|
|
3306
|
+
"env": [
|
|
3307
|
+
{
|
|
3308
|
+
"name": "SUPER_ADMIN_EMAIL",
|
|
3309
|
+
"scope": "convex",
|
|
3310
|
+
"required": false
|
|
3311
|
+
}
|
|
3312
|
+
],
|
|
3313
|
+
"peers": [
|
|
3314
|
+
{
|
|
3315
|
+
"slug": "convex-auth",
|
|
3316
|
+
"range": "^0.1",
|
|
3317
|
+
"reason": "requireAdmin uses getAuthUserId from @convex-dev/auth."
|
|
3318
|
+
}
|
|
3319
|
+
],
|
|
3320
|
+
"providers": [],
|
|
3321
|
+
"tags": [
|
|
3322
|
+
"content",
|
|
3323
|
+
"socials",
|
|
3324
|
+
"seo",
|
|
3325
|
+
"indieweb",
|
|
3326
|
+
"convex",
|
|
3327
|
+
"backend"
|
|
3328
|
+
],
|
|
3329
|
+
"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."
|
|
3330
|
+
},
|
|
2546
3331
|
{
|
|
2547
3332
|
"slug": "contact-form-resend",
|
|
2548
3333
|
"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.4.0",
|
|
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",
|