rahman-resources 1.9.0 → 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/lib/manifest.json +66 -4
  2. package/package.json +1 -1
package/lib/manifest.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 2,
3
- "generatedAt": "2026-05-28T06:14:32.508Z",
3
+ "generatedAt": "2026-05-30T14:50:08.155Z",
4
4
  "repo": "rahmanef63/resource-site",
5
5
  "branch": "main",
6
6
  "layouts": [
@@ -2579,6 +2579,28 @@
2579
2579
  "convex",
2580
2580
  "rbac"
2581
2581
  ]
2582
+ },
2583
+ {
2584
+ "slug": "library",
2585
+ "title": "Library — resource hub (prompts · visuals · snippets · links)",
2586
+ "category": "data",
2587
+ "description": "Grab-bag resource hub. One polymorphic `libraryItems` table holds six kinds — prompt, image, video, link, download, snippet — with per-kind payload fields switched on `kind` (no joins). Attribution-first: every item carries optional source/license/tools so re-shares stay correct. Collections group items. Convex-backed (schema + queries + unauthenticated mutations); SEO override fields reused from the `seo` peer slice so the surface matches blog/projects rows. Public view = filterable card grid + per-item detail with copy-to-clipboard for prompts/snippets and an opt-in upvote control. Lifted 2026-05-28 from rahmanef.com; 432-LOC mutations + 330-LOC detail split for the 200-LOC cap; Indonesian copy + custom primitives stripped (prop-driven English defaults); cross-slice auth + comments-votes coupling dropped (consumer wraps mutations + supplies the upvote handler).",
2588
+ "source": "rahmanef.com",
2589
+ "install": "npx rahman-resources add library",
2590
+ "npmPackages": [],
2591
+ "exampleCode": "",
2592
+ "agentRecipe": "Run `npx rr add seo` (peer) then `npx rr add library`. Spread `seoTables` + `libraryTables` into your root Convex schema. Wrap the unauthenticated CRUD `internalMutation`s with your auth model (see README Install). Render `<LibraryIndex items={await fetchQuery(api.library.listPublic)} />` and `<LibraryDetail item={await fetchQuery(api.library.getBySlug, { slug })} />`. Pass `onUpvote` to enable voting (consumer-owned backend); override `copy` + `kindLabels` per consumer.",
2593
+ "tags": [
2594
+ "library",
2595
+ "resources",
2596
+ "prompts",
2597
+ "snippets",
2598
+ "moodboard",
2599
+ "downloads",
2600
+ "attribution",
2601
+ "seo",
2602
+ "personal-brand"
2603
+ ]
2582
2604
  }
2583
2605
  ],
2584
2606
  "slices": [
@@ -2587,7 +2609,7 @@
2587
2609
  "title": "Convex Auth — Multi-Provider Sign-in",
2588
2610
  "category": "auth",
2589
2611
  "kind": "backend",
2590
- "version": "0.2.0",
2612
+ "version": "0.2.1",
2591
2613
  "description": "@convex-dev/auth with Password (PBKDF2-SHA256 100k, self-hosted-friendly), Anonymous (guest), Google OAuth, and Resend magic-link. Ships a production SignInPage with i18n, prop-driven provider list, and split Login/Register tabs. No Clerk.",
2592
2614
  "source": "rahmanef63/resource-site",
2593
2615
  "slicePath": "frontend/slices/convex-auth",
@@ -2773,7 +2795,7 @@
2773
2795
  "title": "Resend — Transactional & Newsletter",
2774
2796
  "category": "email",
2775
2797
  "kind": "backend",
2776
- "version": "0.1.1",
2798
+ "version": "0.1.2",
2777
2799
  "description": "Transactional email + newsletter blast via Resend. Double opt-in flow + audience segmentation. Magic-link delivery for Convex Auth.",
2778
2800
  "source": "rahmanef63/resource-site",
2779
2801
  "slicePath": "frontend/slices/resend-newsletter",
@@ -3982,7 +4004,7 @@
3982
4004
  "title": "Admin — Generic Shell",
3983
4005
  "category": "infra",
3984
4006
  "kind": "full",
3985
- "version": "0.2.0",
4007
+ "version": "0.2.1",
3986
4008
  "description": "Per-instance admin landing scaffold + portable nav-from-registry factory. Consumer supplies a SliceRegistryAdapter (each slice declares its own admin.activity[]) + queryTable reader; the slice's buildAdminStats(opts) emits the { counts, unreadMessages, activity } shape Convex's admin.stats query returns. Pulled UP from rahmanef.com (Wave N+3.1, commit b542389) — domain literals dropped at the kitab boundary. Gated by requireAdmin on Convex side; superadmin email gate via SUPER_ADMIN_EMAIL env.",
3987
4009
  "source": "rahmanef63/resource-site",
3988
4010
  "slicePath": "frontend/slices/admin",
@@ -4877,6 +4899,46 @@
4877
4899
  "rbac"
4878
4900
  ],
4879
4901
  "agentRecipe": "Run `npx rr add workspace-shell`. Tables prefixed `workspaceShell_*` (menuSets, menuItems, itemComponents, wsAssignments, userAssignments, rolePerms, navContext). Mount `<NavContextProvider workspaceId={wsId}>` inside your auth provider; use `useNavContext(wsId)` to read `{workspace, menuSet, source, effectiveMenuItems, setMenuSet, forkMenuSet}`. Drop-in `<WorkspaceSwitcher canFork />` in sidebar header. Tiered RBAC: `menus.manage` for workspace-default editing, `menus.fork` for user-personal copy. Resolver chain: user cache → user assignment → workspace default → none. Pair with audit-log slice for context-switch / fork events (graceful try/catch if absent). Effective items query applies role filter via workspaceShell_rolePerms (no rolePerms → show all, pre-RBAC compat)."
4902
+ },
4903
+ {
4904
+ "slug": "library",
4905
+ "title": "Library — resource hub (prompts · visuals · snippets · links)",
4906
+ "category": "data",
4907
+ "kind": "full",
4908
+ "version": "0.1.0",
4909
+ "description": "Grab-bag resource hub. One polymorphic `libraryItems` table holds six kinds — prompt, image, video, link, download, snippet — with per-kind payload fields switched on `kind` (no joins). Attribution-first: every item carries optional source/license/tools so re-shares stay correct. Collections group items. Convex-backed (schema + queries + unauthenticated mutations); SEO override fields reused from the `seo` peer slice so the surface matches blog/projects rows. Public view = filterable card grid + per-item detail with copy-to-clipboard for prompts/snippets and an opt-in upvote control. Lifted 2026-05-28 from rahmanef.com; 432-LOC mutations + 330-LOC detail split for the 200-LOC cap; Indonesian copy + custom primitives stripped (prop-driven English defaults); cross-slice auth + comments-votes coupling dropped (consumer wraps mutations + supplies the upvote handler).",
4910
+ "source": "rahmanef.com",
4911
+ "slicePath": "frontend/slices/library",
4912
+ "convexPaths": [
4913
+ "convex/features/library"
4914
+ ],
4915
+ "npm": [
4916
+ "convex@^1.17",
4917
+ "next@^15",
4918
+ "react@^18"
4919
+ ],
4920
+ "shadcn": [],
4921
+ "env": [],
4922
+ "peers": [
4923
+ {
4924
+ "slug": "seo",
4925
+ "range": "^0.2",
4926
+ "reason": "Library item SEO override fields reuse the seo slice's metadata shape so the surface matches blog/projects rows."
4927
+ }
4928
+ ],
4929
+ "providers": [],
4930
+ "tags": [
4931
+ "library",
4932
+ "resources",
4933
+ "prompts",
4934
+ "snippets",
4935
+ "moodboard",
4936
+ "downloads",
4937
+ "attribution",
4938
+ "seo",
4939
+ "personal-brand"
4940
+ ],
4941
+ "agentRecipe": "Run `npx rr add seo` (peer) then `npx rr add library`. Spread `seoTables` + `libraryTables` into your root Convex schema. Wrap the unauthenticated CRUD `internalMutation`s with your auth model (see README Install). Render `<LibraryIndex items={await fetchQuery(api.library.listPublic)} />` and `<LibraryDetail item={await fetchQuery(api.library.getBySlug, { slug })} />`. Pass `onUpvote` to enable voting (consumer-owned backend); override `copy` + `kindLabels` per consumer."
4880
4942
  }
4881
4943
  ]
4882
4944
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rahman-resources",
3
- "version": "1.9.0",
3
+ "version": "1.9.1",
4
4
  "description": "Rahman Resources (rr) — shadcn-style installer for vertical slices. `npx resources add <slug>` copies slice into your project's `slices/<slug>/`. You own the files.",
5
5
  "type": "module",
6
6
  "license": "MIT",