rahman-resources 1.0.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 +942 -67
- 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,14 +1749,14 @@
|
|
|
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": [],
|
|
1630
1758
|
"exampleCode": "",
|
|
1631
|
-
"agentRecipe": "parseIconValue() decodes; lucideValue()/withColor() build. Add 'icon: v.string()' to Convex table — no migration needed for existing emoji fields.
|
|
1759
|
+
"agentRecipe": "Run `npx rr add icon-picker`. parseIconValue() decodes; lucideValue()/withColor() build. Add 'icon: v.string()' to Convex table — no migration needed for existing emoji fields. <IconPicker> wraps any trigger (Popover); <IconPickerInline> for sheets/dialogs. <DynamicIcon> renders from parsed value.",
|
|
1632
1760
|
"tags": [
|
|
1633
1761
|
"icon",
|
|
1634
1762
|
"emoji",
|
|
@@ -1638,6 +1766,136 @@
|
|
|
1638
1766
|
"notion"
|
|
1639
1767
|
]
|
|
1640
1768
|
},
|
|
1769
|
+
{
|
|
1770
|
+
"slug": "cta",
|
|
1771
|
+
"title": "Call to Action",
|
|
1772
|
+
"category": "ui",
|
|
1773
|
+
"description": "Brutalist call-to-action section — eyebrow label, serif headline, body, arrow CTA. Pair with CtaButton standalone for inline placements. Lifted 2026-05-16 from rahmanef.com; assumes Tailwind tracking-brutal / tracking-brutal-sm utilities OR drop them for the default tracking scale.",
|
|
1774
|
+
"source": "rahmanef.com",
|
|
1775
|
+
"install": "npx rahman-resources add cta",
|
|
1776
|
+
"npmPackages": [],
|
|
1777
|
+
"exampleCode": "",
|
|
1778
|
+
"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.",
|
|
1779
|
+
"tags": [
|
|
1780
|
+
"ui",
|
|
1781
|
+
"marketing",
|
|
1782
|
+
"cta",
|
|
1783
|
+
"section",
|
|
1784
|
+
"brutalist"
|
|
1785
|
+
]
|
|
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
|
+
},
|
|
1807
|
+
{
|
|
1808
|
+
"slug": "rate-limit",
|
|
1809
|
+
"title": "Rate Limit",
|
|
1810
|
+
"category": "infra",
|
|
1811
|
+
"description": "Convex-backed per-key request counter. Atomic check-and-increment via `consume` mutation; expired rows pruned by `_pruneExpired` internalMutation wired to a 5-min cron. Replaces single-replica in-memory Map so multi-replica Next deployments share buckets. Caller chooses key namespace (csp:<ip>, mcp:<ip>, oauth_token:<ip>). Lifted 2026-05-16 from rahmanef.com.",
|
|
1812
|
+
"source": "rahmanef.com",
|
|
1813
|
+
"install": "npx rahman-resources add rate-limit",
|
|
1814
|
+
"npmPackages": [],
|
|
1815
|
+
"exampleCode": "",
|
|
1816
|
+
"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.",
|
|
1817
|
+
"tags": [
|
|
1818
|
+
"infra",
|
|
1819
|
+
"rate-limit",
|
|
1820
|
+
"convex",
|
|
1821
|
+
"backend",
|
|
1822
|
+
"throttle"
|
|
1823
|
+
]
|
|
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
|
+
},
|
|
1641
1899
|
{
|
|
1642
1900
|
"slug": "contact-form-resend",
|
|
1643
1901
|
"title": "Contact Form + Resend",
|
|
@@ -1983,11 +2241,11 @@
|
|
|
1983
2241
|
},
|
|
1984
2242
|
{
|
|
1985
2243
|
"slug": "ai-router",
|
|
1986
|
-
"title": "AI Router
|
|
2244
|
+
"title": "AI Router — Tiered Provider Proxy",
|
|
1987
2245
|
"category": "ai",
|
|
1988
2246
|
"kind": "backend",
|
|
1989
2247
|
"version": "0.1.0",
|
|
1990
|
-
"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.",
|
|
1991
2249
|
"source": "rahmanef63/resource-site",
|
|
1992
2250
|
"slicePath": "frontend/slices/ai-router",
|
|
1993
2251
|
"convexPaths": [
|
|
@@ -2011,104 +2269,484 @@
|
|
|
2011
2269
|
"providers": [],
|
|
2012
2270
|
"tags": [
|
|
2013
2271
|
"ai",
|
|
2014
|
-
"
|
|
2015
|
-
"
|
|
2016
|
-
"
|
|
2272
|
+
"ai:backend",
|
|
2273
|
+
"tier-routing",
|
|
2274
|
+
"cost-guard"
|
|
2017
2275
|
],
|
|
2018
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."
|
|
2019
2277
|
},
|
|
2020
2278
|
{
|
|
2021
|
-
"slug": "
|
|
2022
|
-
"title": "
|
|
2023
|
-
"category": "
|
|
2279
|
+
"slug": "ai-chatbot",
|
|
2280
|
+
"title": "AI Chatbot — Three-Column Workbench",
|
|
2281
|
+
"category": "ai",
|
|
2024
2282
|
"kind": "full",
|
|
2025
2283
|
"version": "0.1.0",
|
|
2026
|
-
"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.",
|
|
2027
2285
|
"source": "rahmanef63/resource-site",
|
|
2028
|
-
"slicePath": "frontend/slices/
|
|
2286
|
+
"slicePath": "frontend/slices/ai-chatbot",
|
|
2029
2287
|
"convexPaths": [
|
|
2030
|
-
"convex/features/
|
|
2288
|
+
"convex/features/ai-chatbot"
|
|
2031
2289
|
],
|
|
2032
2290
|
"npm": [
|
|
2033
|
-
"
|
|
2291
|
+
"ai@^4.0.0",
|
|
2292
|
+
"@ai-sdk/anthropic@^0.0.50",
|
|
2293
|
+
"@ai-sdk/openai@^0.0.60"
|
|
2034
2294
|
],
|
|
2035
2295
|
"shadcn": [
|
|
2296
|
+
"button",
|
|
2036
2297
|
"card",
|
|
2037
|
-
"
|
|
2298
|
+
"badge",
|
|
2299
|
+
"avatar",
|
|
2300
|
+
"scroll-area",
|
|
2301
|
+
"select",
|
|
2302
|
+
"separator",
|
|
2303
|
+
"slider",
|
|
2304
|
+
"switch",
|
|
2305
|
+
"textarea",
|
|
2306
|
+
"tabs"
|
|
2038
2307
|
],
|
|
2039
2308
|
"env": [
|
|
2309
|
+
{
|
|
2310
|
+
"name": "ANTHROPIC_API_KEY",
|
|
2311
|
+
"scope": "convex",
|
|
2312
|
+
"required": false
|
|
2313
|
+
},
|
|
2040
2314
|
{
|
|
2041
2315
|
"name": "OPENAI_API_KEY",
|
|
2042
2316
|
"scope": "convex",
|
|
2043
|
-
"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."
|
|
2044
2345
|
}
|
|
2045
2346
|
],
|
|
2046
|
-
"peers": [],
|
|
2047
2347
|
"providers": [],
|
|
2048
2348
|
"tags": [
|
|
2049
|
-
"
|
|
2050
|
-
"
|
|
2051
|
-
"
|
|
2052
|
-
"
|
|
2053
|
-
"
|
|
2349
|
+
"ai",
|
|
2350
|
+
"ai:chatbot",
|
|
2351
|
+
"streaming",
|
|
2352
|
+
"multimodal",
|
|
2353
|
+
"tool-calls",
|
|
2354
|
+
"agent-mode",
|
|
2355
|
+
"rag",
|
|
2356
|
+
"citations",
|
|
2357
|
+
"branching",
|
|
2358
|
+
"history"
|
|
2054
2359
|
],
|
|
2055
|
-
"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."
|
|
2056
2361
|
},
|
|
2057
2362
|
{
|
|
2058
|
-
"slug": "
|
|
2059
|
-
"title": "
|
|
2060
|
-
"category": "
|
|
2061
|
-
"kind": "
|
|
2062
|
-
"version": "0.
|
|
2063
|
-
"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.",
|
|
2064
2369
|
"source": "rahmanef63/resource-site",
|
|
2065
|
-
"slicePath": "frontend/slices/
|
|
2066
|
-
"convexPaths": [
|
|
2370
|
+
"slicePath": "frontend/slices/ai-first-app",
|
|
2371
|
+
"convexPaths": [
|
|
2372
|
+
"convex/features/ai-first-app"
|
|
2373
|
+
],
|
|
2067
2374
|
"npm": [
|
|
2068
|
-
"
|
|
2069
|
-
"gray-matter@^4.0.3",
|
|
2070
|
-
"rehype-pretty-code@^0.14.0"
|
|
2375
|
+
"ai@^4.0.0"
|
|
2071
2376
|
],
|
|
2072
2377
|
"shadcn": [
|
|
2073
|
-
"
|
|
2378
|
+
"button",
|
|
2379
|
+
"card",
|
|
2380
|
+
"badge",
|
|
2381
|
+
"textarea",
|
|
2382
|
+
"tabs",
|
|
2383
|
+
"tooltip",
|
|
2384
|
+
"scroll-area",
|
|
2385
|
+
"select"
|
|
2074
2386
|
],
|
|
2075
2387
|
"env": [],
|
|
2076
|
-
"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
|
+
],
|
|
2077
2405
|
"providers": [],
|
|
2078
2406
|
"tags": [
|
|
2079
|
-
"
|
|
2080
|
-
"
|
|
2081
|
-
"
|
|
2082
|
-
"
|
|
2407
|
+
"ai",
|
|
2408
|
+
"ai:first-app",
|
|
2409
|
+
"generation",
|
|
2410
|
+
"streaming",
|
|
2411
|
+
"history",
|
|
2412
|
+
"branching",
|
|
2413
|
+
"image-gen"
|
|
2083
2414
|
],
|
|
2084
|
-
"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."
|
|
2085
2416
|
},
|
|
2086
2417
|
{
|
|
2087
|
-
"slug": "
|
|
2088
|
-
"title": "
|
|
2089
|
-
"category": "
|
|
2418
|
+
"slug": "ai-copilot",
|
|
2419
|
+
"title": "AI Copilot — Sidebar Companion",
|
|
2420
|
+
"category": "ai",
|
|
2090
2421
|
"kind": "full",
|
|
2091
2422
|
"version": "0.1.0",
|
|
2092
|
-
"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.",
|
|
2093
2424
|
"source": "rahmanef63/resource-site",
|
|
2094
|
-
"slicePath": "frontend/slices/
|
|
2425
|
+
"slicePath": "frontend/slices/ai-copilot",
|
|
2095
2426
|
"convexPaths": [
|
|
2096
|
-
"convex/features/
|
|
2427
|
+
"convex/features/ai-copilot"
|
|
2097
2428
|
],
|
|
2098
2429
|
"npm": [
|
|
2099
|
-
"
|
|
2430
|
+
"ai@^4.0.0"
|
|
2100
2431
|
],
|
|
2101
2432
|
"shadcn": [
|
|
2102
|
-
"
|
|
2433
|
+
"button",
|
|
2434
|
+
"card",
|
|
2435
|
+
"badge",
|
|
2436
|
+
"command",
|
|
2437
|
+
"scroll-area",
|
|
2438
|
+
"sheet",
|
|
2439
|
+
"separator",
|
|
2440
|
+
"tooltip"
|
|
2103
2441
|
],
|
|
2104
|
-
"env": [
|
|
2442
|
+
"env": [],
|
|
2443
|
+
"peers": [
|
|
2105
2444
|
{
|
|
2106
|
-
"
|
|
2107
|
-
"
|
|
2108
|
-
"
|
|
2445
|
+
"slug": "convex-auth",
|
|
2446
|
+
"range": "^0.1",
|
|
2447
|
+
"reason": "Suggestions scoped to authed user."
|
|
2109
2448
|
},
|
|
2110
2449
|
{
|
|
2111
|
-
"
|
|
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."
|
|
2458
|
+
}
|
|
2459
|
+
],
|
|
2460
|
+
"providers": [],
|
|
2461
|
+
"tags": [
|
|
2462
|
+
"ai",
|
|
2463
|
+
"ai:copilot",
|
|
2464
|
+
"streaming",
|
|
2465
|
+
"tool-calls",
|
|
2466
|
+
"suggestions",
|
|
2467
|
+
"context-aware"
|
|
2468
|
+
],
|
|
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."
|
|
2470
|
+
},
|
|
2471
|
+
{
|
|
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",
|
|
2112
2750
|
"scope": "convex",
|
|
2113
2751
|
"required": true
|
|
2114
2752
|
}
|
|
@@ -2426,19 +3064,21 @@
|
|
|
2426
3064
|
},
|
|
2427
3065
|
{
|
|
2428
3066
|
"slug": "icon-picker",
|
|
2429
|
-
"title": "
|
|
3067
|
+
"title": "Icon Picker",
|
|
2430
3068
|
"category": "ui",
|
|
2431
3069
|
"kind": "ui",
|
|
2432
|
-
"version": "0.
|
|
2433
|
-
"description": "Emoji + lucide icon picker with search, 10-color
|
|
3070
|
+
"version": "0.2.0",
|
|
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.",
|
|
2434
3072
|
"source": "notion-page-clone",
|
|
2435
|
-
"slicePath": "
|
|
3073
|
+
"slicePath": "frontend/slices/icon-picker",
|
|
2436
3074
|
"convexPaths": [],
|
|
2437
3075
|
"npm": [],
|
|
2438
3076
|
"shadcn": [
|
|
2439
3077
|
"popover",
|
|
2440
3078
|
"button",
|
|
2441
|
-
"input"
|
|
3079
|
+
"input",
|
|
3080
|
+
"scroll-area",
|
|
3081
|
+
"tabs"
|
|
2442
3082
|
],
|
|
2443
3083
|
"env": [],
|
|
2444
3084
|
"peers": [],
|
|
@@ -2451,7 +3091,242 @@
|
|
|
2451
3091
|
"twemoji",
|
|
2452
3092
|
"notion"
|
|
2453
3093
|
],
|
|
2454
|
-
"agentRecipe": "parseIconValue() decodes; lucideValue()/withColor() build. Add 'icon: v.string()' to Convex table — no migration needed for existing emoji fields.
|
|
3094
|
+
"agentRecipe": "Run `npx rr add icon-picker`. parseIconValue() decodes; lucideValue()/withColor() build. Add 'icon: v.string()' to Convex table — no migration needed for existing emoji fields. <IconPicker> wraps any trigger (Popover); <IconPickerInline> for sheets/dialogs. <DynamicIcon> renders from parsed value."
|
|
3095
|
+
},
|
|
3096
|
+
{
|
|
3097
|
+
"slug": "cta",
|
|
3098
|
+
"title": "Call to Action",
|
|
3099
|
+
"category": "ui",
|
|
3100
|
+
"kind": "ui",
|
|
3101
|
+
"version": "0.1.0",
|
|
3102
|
+
"description": "Brutalist call-to-action section — eyebrow label, serif headline, body, arrow CTA. Pair with CtaButton standalone for inline placements. Lifted 2026-05-16 from rahmanef.com; assumes Tailwind tracking-brutal / tracking-brutal-sm utilities OR drop them for the default tracking scale.",
|
|
3103
|
+
"source": "rahmanef.com",
|
|
3104
|
+
"slicePath": "frontend/slices/cta",
|
|
3105
|
+
"convexPaths": [],
|
|
3106
|
+
"npm": [
|
|
3107
|
+
"lucide-react@^0.400.0"
|
|
3108
|
+
],
|
|
3109
|
+
"shadcn": [],
|
|
3110
|
+
"env": [],
|
|
3111
|
+
"peers": [],
|
|
3112
|
+
"providers": [],
|
|
3113
|
+
"tags": [
|
|
3114
|
+
"ui",
|
|
3115
|
+
"marketing",
|
|
3116
|
+
"cta",
|
|
3117
|
+
"section",
|
|
3118
|
+
"brutalist"
|
|
3119
|
+
],
|
|
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."
|
|
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
|
+
},
|
|
3150
|
+
{
|
|
3151
|
+
"slug": "rate-limit",
|
|
3152
|
+
"title": "Rate Limit",
|
|
3153
|
+
"category": "infra",
|
|
3154
|
+
"kind": "backend",
|
|
3155
|
+
"version": "0.1.0",
|
|
3156
|
+
"description": "Convex-backed per-key request counter. Atomic check-and-increment via `consume` mutation; expired rows pruned by `_pruneExpired` internalMutation wired to a 5-min cron. Replaces single-replica in-memory Map so multi-replica Next deployments share buckets. Caller chooses key namespace (csp:<ip>, mcp:<ip>, oauth_token:<ip>). Lifted 2026-05-16 from rahmanef.com.",
|
|
3157
|
+
"source": "rahmanef.com",
|
|
3158
|
+
"slicePath": "frontend/slices/rate-limit",
|
|
3159
|
+
"convexPaths": [
|
|
3160
|
+
"convex/features/rate-limit"
|
|
3161
|
+
],
|
|
3162
|
+
"npm": [],
|
|
3163
|
+
"shadcn": [],
|
|
3164
|
+
"env": [],
|
|
3165
|
+
"peers": [],
|
|
3166
|
+
"providers": [],
|
|
3167
|
+
"tags": [
|
|
3168
|
+
"infra",
|
|
3169
|
+
"rate-limit",
|
|
3170
|
+
"convex",
|
|
3171
|
+
"backend",
|
|
3172
|
+
"throttle"
|
|
3173
|
+
],
|
|
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."
|
|
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."
|
|
2455
3330
|
},
|
|
2456
3331
|
{
|
|
2457
3332
|
"slug": "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",
|