@nextsparkjs/ai-workflow 0.1.0-beta.100
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/LICENSE +21 -0
- package/README.md +115 -0
- package/claude/_docs/workflows-optimizations.md +359 -0
- package/claude/agents/api-tester.md +634 -0
- package/claude/agents/architecture-supervisor.md +1351 -0
- package/claude/agents/backend-developer.md +997 -0
- package/claude/agents/backend-validator.md +417 -0
- package/claude/agents/bdd-docs-writer.md +737 -0
- package/claude/agents/block-developer.md +677 -0
- package/claude/agents/code-reviewer.md +1432 -0
- package/claude/agents/db-developer.md +721 -0
- package/claude/agents/db-validator.md +407 -0
- package/claude/agents/demo-video-generator.md +493 -0
- package/claude/agents/documentation-writer.md +1268 -0
- package/claude/agents/frontend-developer.md +1234 -0
- package/claude/agents/frontend-validator.md +777 -0
- package/claude/agents/functional-validator.md +630 -0
- package/claude/agents/mock-analyst.md +387 -0
- package/claude/agents/product-manager.md +963 -0
- package/claude/agents/qa-automation.md +1762 -0
- package/claude/agents/release-manager.md +634 -0
- package/claude/agents/selectors-translator.md +262 -0
- package/claude/agents/unit-test-writer.md +785 -0
- package/claude/agents/visual-comparator.md +329 -0
- package/claude/agents/workflow-maintainer.md +352 -0
- package/claude/commands/do/README.md +88 -0
- package/claude/commands/do/create-api.md +64 -0
- package/claude/commands/do/create-entity.md +66 -0
- package/claude/commands/do/create-migration.md +64 -0
- package/claude/commands/do/create-plugin.md +56 -0
- package/claude/commands/do/create-theme.md +70 -0
- package/claude/commands/do/mock-data.md +67 -0
- package/claude/commands/do/reset-db.md +71 -0
- package/claude/commands/do/setup-scheduled-action.md +75 -0
- package/claude/commands/do/sync-code-review.md +117 -0
- package/claude/commands/do/update-selectors.md +112 -0
- package/claude/commands/do/use-skills.md +90 -0
- package/claude/commands/do/validate-blocks.md +69 -0
- package/claude/commands/how-to/README.md +261 -0
- package/claude/commands/how-to/add-metadata.md +692 -0
- package/claude/commands/how-to/add-taxonomies.md +806 -0
- package/claude/commands/how-to/add-translations.md +571 -0
- package/claude/commands/how-to/create-api.md +577 -0
- package/claude/commands/how-to/create-block.md +575 -0
- package/claude/commands/how-to/create-child-entities.md +771 -0
- package/claude/commands/how-to/create-entity.md +597 -0
- package/claude/commands/how-to/create-migrations.md +605 -0
- package/claude/commands/how-to/create-plugin.md +654 -0
- package/claude/commands/how-to/customize-app.md +481 -0
- package/claude/commands/how-to/customize-dashboard.md +553 -0
- package/claude/commands/how-to/customize-theme.md +438 -0
- package/claude/commands/how-to/define-features-flows.md +632 -0
- package/claude/commands/how-to/deploy.md +507 -0
- package/claude/commands/how-to/handle-file-uploads.md +746 -0
- package/claude/commands/how-to/implement-search.md +1001 -0
- package/claude/commands/how-to/install-plugins.md +352 -0
- package/claude/commands/how-to/manage-test-coverage.md +984 -0
- package/claude/commands/how-to/run-tests.md +400 -0
- package/claude/commands/how-to/set-app-languages.md +601 -0
- package/claude/commands/how-to/set-plans-and-permissions.md +575 -0
- package/claude/commands/how-to/set-scheduled-actions.md +527 -0
- package/claude/commands/how-to/set-user-roles-and-permissions.md +550 -0
- package/claude/commands/how-to/setup-authentication.md +388 -0
- package/claude/commands/how-to/setup-claude-code.md +440 -0
- package/claude/commands/how-to/setup-database.md +274 -0
- package/claude/commands/how-to/setup-email-providers.md +598 -0
- package/claude/commands/how-to/setup-mobile-dev.md +627 -0
- package/claude/commands/how-to/start.md +500 -0
- package/claude/commands/how-to/use-devtools.md +639 -0
- package/claude/commands/how-to/use-superadmin.md +622 -0
- package/claude/commands/session/README.md +193 -0
- package/claude/commands/session/block-create.md +190 -0
- package/claude/commands/session/block-list.md +203 -0
- package/claude/commands/session/block-update.md +192 -0
- package/claude/commands/session/block-validate.md +218 -0
- package/claude/commands/session/changelog.md +115 -0
- package/claude/commands/session/close.md +225 -0
- package/claude/commands/session/commit.md +174 -0
- package/claude/commands/session/db-entity.md +206 -0
- package/claude/commands/session/db-fix.md +212 -0
- package/claude/commands/session/db-sample.md +206 -0
- package/claude/commands/session/demo.md +178 -0
- package/claude/commands/session/doc-bdd.md +207 -0
- package/claude/commands/session/doc-feature.md +218 -0
- package/claude/commands/session/doc-read.md +225 -0
- package/claude/commands/session/execute.md +204 -0
- package/claude/commands/session/explain.md +202 -0
- package/claude/commands/session/fix-bug.md +210 -0
- package/claude/commands/session/fix-build.md +182 -0
- package/claude/commands/session/fix-test.md +189 -0
- package/claude/commands/session/pending.md +232 -0
- package/claude/commands/session/refine.md +188 -0
- package/claude/commands/session/resume.md +192 -0
- package/claude/commands/session/review.md +192 -0
- package/claude/commands/session/scope-change.md +181 -0
- package/claude/commands/session/start-blocks.md +347 -0
- package/claude/commands/session/start.md +604 -0
- package/claude/commands/session/status.md +169 -0
- package/claude/commands/session/test-fix.md +221 -0
- package/claude/commands/session/test-run.md +203 -0
- package/claude/commands/session/test-write.md +242 -0
- package/claude/commands/session/validate.md +162 -0
- package/claude/config/context.json +40 -0
- package/claude/config/github.json +69 -0
- package/claude/config/github.schema.json +106 -0
- package/claude/config/team.json +46 -0
- package/claude/config/team.schema.json +106 -0
- package/claude/config/workspace.json +43 -0
- package/claude/config/workspace.schema.json +75 -0
- package/claude/skills/README.md +228 -0
- package/claude/skills/accessibility/SKILL.md +573 -0
- package/claude/skills/api-bypass-layers/SKILL.md +550 -0
- package/claude/skills/asana-integration/SKILL.md +499 -0
- package/claude/skills/better-auth/SKILL.md +666 -0
- package/claude/skills/billing-subscriptions/SKILL.md +660 -0
- package/claude/skills/block-decision-matrix/SKILL.md +359 -0
- package/claude/skills/clickup-integration/SKILL.md +434 -0
- package/claude/skills/core-theme-responsibilities/SKILL.md +485 -0
- package/claude/skills/create-plugin/SKILL.md +425 -0
- package/claude/skills/create-theme/SKILL.md +331 -0
- package/claude/skills/cypress-api/SKILL.md +511 -0
- package/claude/skills/cypress-api/scripts/generate-api-controller.py +329 -0
- package/claude/skills/cypress-api/scripts/generate-api-test.py +930 -0
- package/claude/skills/cypress-e2e/SKILL.md +526 -0
- package/claude/skills/cypress-e2e/scripts/extract-selectors.py +383 -0
- package/claude/skills/cypress-e2e/scripts/generate-uat-test.py +788 -0
- package/claude/skills/cypress-selectors/SKILL.md +309 -0
- package/claude/skills/cypress-selectors/scripts/extract-missing.py +243 -0
- package/claude/skills/cypress-selectors/scripts/generate-block-selectors.py +283 -0
- package/claude/skills/cypress-selectors/scripts/validate-selectors.py +145 -0
- package/claude/skills/database-migrations/SKILL.md +335 -0
- package/claude/skills/database-migrations/scripts/generate-sample-data.py +284 -0
- package/claude/skills/database-migrations/scripts/validate-migration.py +323 -0
- package/claude/skills/design-system/SKILL.md +682 -0
- package/claude/skills/documentation/SKILL.md +540 -0
- package/claude/skills/entity-api/SKILL.md +482 -0
- package/claude/skills/entity-system/SKILL.md +635 -0
- package/claude/skills/entity-system/scripts/generate-child-migration.py +298 -0
- package/claude/skills/entity-system/scripts/generate-metas-migration.py +233 -0
- package/claude/skills/entity-system/scripts/generate-migration.py +382 -0
- package/claude/skills/entity-system/scripts/generate-sample-data.py +418 -0
- package/claude/skills/entity-system/scripts/scaffold-entity.py +661 -0
- package/claude/skills/github/SKILL.md +467 -0
- package/claude/skills/i18n-nextintl/SKILL.md +302 -0
- package/claude/skills/i18n-nextintl/scripts/add-translation.py +243 -0
- package/claude/skills/i18n-nextintl/scripts/extract-hardcoded.py +246 -0
- package/claude/skills/i18n-nextintl/scripts/validate-translations.py +260 -0
- package/claude/skills/impact-analysis/SKILL.md +203 -0
- package/claude/skills/jest-unit/SKILL.md +306 -0
- package/claude/skills/jest-unit/references/component-testing.md +371 -0
- package/claude/skills/jest-unit/references/mocking-patterns.md +380 -0
- package/claude/skills/jest-unit/references/service-hook-testing.md +454 -0
- package/claude/skills/jira-integration/SKILL.md +539 -0
- package/claude/skills/media-library/SKILL.md +743 -0
- package/claude/skills/mock-analysis/SKILL.md +276 -0
- package/claude/skills/monorepo-architecture/SKILL.md +162 -0
- package/claude/skills/nextjs-api-development/SKILL.md +364 -0
- package/claude/skills/nextjs-api-development/scripts/generate-crud-tests.py +456 -0
- package/claude/skills/nextjs-api-development/scripts/scaffold-endpoint.py +481 -0
- package/claude/skills/nextjs-api-development/scripts/validate-api.py +283 -0
- package/claude/skills/notion-integration/SKILL.md +641 -0
- package/claude/skills/npm-development-workflow/SKILL.md +480 -0
- package/claude/skills/page-builder-blocks/SKILL.md +530 -0
- package/claude/skills/page-builder-blocks/scripts/scaffold-block.py +444 -0
- package/claude/skills/permissions-system/SKILL.md +619 -0
- package/claude/skills/plugins/SKILL.md +340 -0
- package/claude/skills/plugins/references/plugin-templates.md +414 -0
- package/claude/skills/plugins/references/plugin-testing.md +353 -0
- package/claude/skills/plugins/references/plugin-types.md +198 -0
- package/claude/skills/plugins/scripts/scaffold-plugin.py +443 -0
- package/claude/skills/pom-patterns/SKILL.md +452 -0
- package/claude/skills/pom-patterns/scripts/generate-pom.py +392 -0
- package/claude/skills/rate-limiting/SKILL.md +342 -0
- package/claude/skills/react-best-practices/AGENTS.md +2410 -0
- package/claude/skills/react-best-practices/README.md +123 -0
- package/claude/skills/react-best-practices/SKILL.md +125 -0
- package/claude/skills/react-best-practices/metadata.json +15 -0
- package/claude/skills/react-best-practices/rules/_sections.md +46 -0
- package/claude/skills/react-best-practices/rules/_template.md +28 -0
- package/claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/claude/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/claude/skills/react-best-practices/rules/async-api-routes.md +38 -0
- package/claude/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/claude/skills/react-best-practices/rules/async-dependencies.md +36 -0
- package/claude/skills/react-best-practices/rules/async-parallel.md +28 -0
- package/claude/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/claude/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/claude/skills/react-best-practices/rules/bundle-conditional.md +31 -0
- package/claude/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/claude/skills/react-best-practices/rules/bundle-preload.md +50 -0
- package/claude/skills/react-best-practices/rules/client-event-listeners.md +74 -0
- package/claude/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/claude/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/claude/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/claude/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/claude/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/claude/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/claude/skills/react-best-practices/rules/js-cache-storage.md +70 -0
- package/claude/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/claude/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/claude/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/claude/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/claude/skills/react-best-practices/rules/js-length-check-first.md +49 -0
- package/claude/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/claude/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/claude/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/claude/skills/react-best-practices/rules/rendering-activity.md +26 -0
- package/claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/claude/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/claude/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/claude/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/claude/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/claude/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/claude/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/claude/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/claude/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/claude/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/claude/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/claude/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/claude/skills/react-best-practices/rules/server-cache-react.md +76 -0
- package/claude/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/claude/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/claude/skills/react-patterns/SKILL.md +688 -0
- package/claude/skills/registry-system/SKILL.md +331 -0
- package/claude/skills/scheduled-actions/SKILL.md +671 -0
- package/claude/skills/scope-enforcement/SKILL.md +542 -0
- package/claude/skills/scope-enforcement/scripts/validate-scope.py +357 -0
- package/claude/skills/server-actions/SKILL.md +493 -0
- package/claude/skills/service-layer/SKILL.md +587 -0
- package/claude/skills/session-management/SKILL.md +266 -0
- package/claude/skills/session-management/scripts/create-session.py +166 -0
- package/claude/skills/session-management/scripts/iteration-close.sh +105 -0
- package/claude/skills/session-management/scripts/iteration-init.sh +180 -0
- package/claude/skills/session-management/scripts/session-archive.sh +87 -0
- package/claude/skills/session-management/scripts/session-close.sh +133 -0
- package/claude/skills/session-management/scripts/session-init.sh +225 -0
- package/claude/skills/session-management/scripts/session-list.sh +163 -0
- package/claude/skills/session-management/scripts/split-plan.sh +116 -0
- package/claude/skills/shadcn-components/SKILL.md +586 -0
- package/claude/skills/shadcn-theming/SKILL.md +446 -0
- package/claude/skills/suspense-loading/SKILL.md +280 -0
- package/claude/skills/tailwind-theming/SKILL.md +507 -0
- package/claude/skills/tanstack-query/SKILL.md +608 -0
- package/claude/skills/test-coverage/SKILL.md +239 -0
- package/claude/skills/web-design-guidelines/SKILL.md +39 -0
- package/claude/skills/zod-validation/SKILL.md +537 -0
- package/claude/templates/blocks/progress.md +86 -0
- package/claude/templates/iteration/changes.md +61 -0
- package/claude/templates/iteration/progress.md +55 -0
- package/claude/templates/log.md +31 -0
- package/claude/templates/story/context.md +77 -0
- package/claude/templates/story/pendings.md +37 -0
- package/claude/templates/story/plan.md +299 -0
- package/claude/templates/story/requirements.md +109 -0
- package/claude/templates/story/scope.json +10 -0
- package/claude/templates/story/tests.md +91 -0
- package/claude/templates/task/progress.md +58 -0
- package/claude/templates/task/requirements.md +54 -0
- package/claude/workflows/README.md +154 -0
- package/claude/workflows/blocks.md +614 -0
- package/claude/workflows/story.md +1207 -0
- package/claude/workflows/task.md +927 -0
- package/claude/workflows/tweak.md +527 -0
- package/cursor/.gitkeep +0 -0
- package/package.json +35 -0
- package/scripts/postinstall.mjs +198 -0
- package/scripts/setup.mjs +282 -0
- package/scripts/sync.mjs +209 -0
|
@@ -0,0 +1,622 @@
|
|
|
1
|
+
# /how-to:use-superadmin
|
|
2
|
+
|
|
3
|
+
Interactive guide to using the Superadmin Panel for system administration in NextSpark.
|
|
4
|
+
|
|
5
|
+
**Aliases:** `/how-to:superadmin`, `/how-to:admin-panel`
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Required Skills
|
|
10
|
+
|
|
11
|
+
Before executing, these skills provide deeper context:
|
|
12
|
+
- `.claude/skills/permissions-system/SKILL.md` - Role-based access control
|
|
13
|
+
- `.claude/skills/service-layer/SKILL.md` - Data access patterns
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Syntax
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
/how-to:use-superadmin
|
|
21
|
+
/how-to:use-superadmin --section users
|
|
22
|
+
/how-to:use-superadmin --permissions
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Behavior
|
|
28
|
+
|
|
29
|
+
Guides the user through the Superadmin Panel capabilities: user management, team management, subscriptions, and role configuration.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Tutorial Structure
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
STEPS OVERVIEW (5 steps)
|
|
37
|
+
|
|
38
|
+
Step 1: Accessing the Superadmin Panel
|
|
39
|
+
└── Requirements and permissions
|
|
40
|
+
|
|
41
|
+
Step 2: User Management
|
|
42
|
+
└── View, filter, and manage users
|
|
43
|
+
|
|
44
|
+
Step 3: Team Management
|
|
45
|
+
└── View and manage teams
|
|
46
|
+
|
|
47
|
+
Step 4: Subscription Management
|
|
48
|
+
└── Handle team subscriptions
|
|
49
|
+
|
|
50
|
+
Step 5: Role Configuration
|
|
51
|
+
└── Team roles and permissions matrix
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Step 1: Accessing the Superadmin Panel
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
60
|
+
📚 HOW TO: USE SUPERADMIN PANEL
|
|
61
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
62
|
+
|
|
63
|
+
STEP 1 OF 5: Accessing the Superadmin Panel
|
|
64
|
+
|
|
65
|
+
The Superadmin Panel provides system-wide
|
|
66
|
+
administration capabilities.
|
|
67
|
+
|
|
68
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**📋 Access Requirements:**
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
┌─────────────────────────────────────────────┐
|
|
75
|
+
│ REQUIRED: superadmin role │
|
|
76
|
+
│ ───────────────────────────────────────── │
|
|
77
|
+
│ Only users with the global 'superadmin' │
|
|
78
|
+
│ role can access the Superadmin Panel. │
|
|
79
|
+
│ │
|
|
80
|
+
│ This is a USER role, not a team role. │
|
|
81
|
+
└─────────────────────────────────────────────┘
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**📋 How to Access:**
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
URL: /superadmin
|
|
88
|
+
|
|
89
|
+
Navigation:
|
|
90
|
+
1. Log in as a superadmin user
|
|
91
|
+
2. Click the admin icon in the sidebar
|
|
92
|
+
or navigate directly to /superadmin
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**📋 Making a User Superadmin:**
|
|
96
|
+
|
|
97
|
+
```sql
|
|
98
|
+
-- In the database
|
|
99
|
+
UPDATE users SET role = 'superadmin' WHERE email = 'admin@example.com';
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Or use the devKeyring in `app.config.ts`:
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
// app.config.ts
|
|
106
|
+
devKeyring: {
|
|
107
|
+
'admin@example.com': {
|
|
108
|
+
password: 'Test1234',
|
|
109
|
+
role: 'superadmin',
|
|
110
|
+
// ...
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**📋 Panel Structure:**
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
/superadmin/
|
|
119
|
+
├── page.tsx # Dashboard overview
|
|
120
|
+
├── users/
|
|
121
|
+
│ └── page.tsx # User management
|
|
122
|
+
├── teams/
|
|
123
|
+
│ └── page.tsx # Team management
|
|
124
|
+
├── subscriptions/
|
|
125
|
+
│ └── page.tsx # Subscription management
|
|
126
|
+
└── team-roles/
|
|
127
|
+
└── page.tsx # Role configuration
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**📋 Available Components:**
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
packages/core/src/components/superadmin/
|
|
134
|
+
├── SuperadminSidebar.tsx # Navigation sidebar
|
|
135
|
+
├── TeamsTable.tsx # Teams data table
|
|
136
|
+
├── PlanFeaturesMatrix.tsx # Plan features overview
|
|
137
|
+
├── RolesPermissionsMatrix.tsx # Role permissions
|
|
138
|
+
└── filters/
|
|
139
|
+
├── SearchInput.tsx # Search component
|
|
140
|
+
├── FilterDropdown.tsx # Filter dropdowns
|
|
141
|
+
└── PaginationControls.tsx # Pagination
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
146
|
+
|
|
147
|
+
What would you like to do?
|
|
148
|
+
|
|
149
|
+
[1] Continue to Step 2 (User Management)
|
|
150
|
+
[2] I can't access the panel, help!
|
|
151
|
+
[3] What's the difference between superadmin and team admin?
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Step 2: User Management
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
160
|
+
STEP 2 OF 5: User Management
|
|
161
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
162
|
+
|
|
163
|
+
Manage all users in your application from
|
|
164
|
+
a single dashboard.
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**📋 User Management Features:**
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
┌─────────────────────────────────────────────┐
|
|
171
|
+
│ /superadmin/users │
|
|
172
|
+
│ ───────────────────────────────────────── │
|
|
173
|
+
│ │
|
|
174
|
+
│ TABS: │
|
|
175
|
+
│ • Regular Users - All non-admin users │
|
|
176
|
+
│ • Superadmins - System administrators │
|
|
177
|
+
│ │
|
|
178
|
+
│ FILTERS: │
|
|
179
|
+
│ • Search by name/email │
|
|
180
|
+
│ • Filter by role │
|
|
181
|
+
│ • Filter by status │
|
|
182
|
+
│ │
|
|
183
|
+
│ STATS: │
|
|
184
|
+
│ • Total users │
|
|
185
|
+
│ • Total work teams │
|
|
186
|
+
│ • Total superadmins │
|
|
187
|
+
│ • Role distribution │
|
|
188
|
+
└─────────────────────────────────────────────┘
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**📋 User Table Columns:**
|
|
192
|
+
|
|
193
|
+
| Column | Description |
|
|
194
|
+
|--------|-------------|
|
|
195
|
+
| Name | User's full name |
|
|
196
|
+
| Email | Email address |
|
|
197
|
+
| Role | User role (member, superadmin) |
|
|
198
|
+
| Status | Active, pending, suspended |
|
|
199
|
+
| Teams | Number of teams |
|
|
200
|
+
| Created | Registration date |
|
|
201
|
+
| Actions | View, edit, suspend |
|
|
202
|
+
|
|
203
|
+
**📋 Available Actions:**
|
|
204
|
+
|
|
205
|
+
```typescript
|
|
206
|
+
// View user details
|
|
207
|
+
onClick={() => router.push(`/superadmin/users/${userId}`)}
|
|
208
|
+
|
|
209
|
+
// Edit user
|
|
210
|
+
onClick={() => openEditModal(user)}
|
|
211
|
+
|
|
212
|
+
// Suspend user
|
|
213
|
+
onClick={() => suspendUser(userId)}
|
|
214
|
+
|
|
215
|
+
// Make superadmin
|
|
216
|
+
onClick={() => updateUserRole(userId, 'superadmin')}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
**📋 API Endpoints:**
|
|
220
|
+
|
|
221
|
+
```
|
|
222
|
+
GET /api/superadmin/users # List users
|
|
223
|
+
GET /api/superadmin/users/:id # Get user details
|
|
224
|
+
PATCH /api/superadmin/users/:id # Update user
|
|
225
|
+
DELETE /api/superadmin/users/:id # Delete user (soft)
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
```
|
|
229
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
230
|
+
|
|
231
|
+
What would you like to do?
|
|
232
|
+
|
|
233
|
+
[1] Continue to Step 3 (Team Management)
|
|
234
|
+
[2] How do I bulk import users?
|
|
235
|
+
[3] Can I export user data?
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Step 3: Team Management
|
|
241
|
+
|
|
242
|
+
```
|
|
243
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
244
|
+
STEP 3 OF 5: Team Management
|
|
245
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
246
|
+
|
|
247
|
+
View and manage all teams (organizations)
|
|
248
|
+
in your application.
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**📋 Team Management Features:**
|
|
252
|
+
|
|
253
|
+
```
|
|
254
|
+
┌─────────────────────────────────────────────┐
|
|
255
|
+
│ /superadmin/teams │
|
|
256
|
+
│ ───────────────────────────────────────── │
|
|
257
|
+
│ │
|
|
258
|
+
│ VIEW: │
|
|
259
|
+
│ • All teams with member counts │
|
|
260
|
+
│ • Team owners and plans │
|
|
261
|
+
│ • Creation dates and activity │
|
|
262
|
+
│ │
|
|
263
|
+
│ FILTERS: │
|
|
264
|
+
│ • Search by team name │
|
|
265
|
+
│ • Filter by plan │
|
|
266
|
+
│ • Filter by status │
|
|
267
|
+
│ │
|
|
268
|
+
│ ACTIONS: │
|
|
269
|
+
│ • View team details │
|
|
270
|
+
│ • Change team plan │
|
|
271
|
+
│ • Suspend/reactivate team │
|
|
272
|
+
└─────────────────────────────────────────────┘
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
**📋 TeamsTable Component:**
|
|
276
|
+
|
|
277
|
+
```typescript
|
|
278
|
+
// Usage in page
|
|
279
|
+
import { TeamsTable } from '@/core/components/superadmin'
|
|
280
|
+
|
|
281
|
+
<TeamsTable
|
|
282
|
+
teams={teams}
|
|
283
|
+
onViewTeam={(id) => router.push(`/superadmin/teams/${id}`)}
|
|
284
|
+
onEditTeam={(team) => openEditModal(team)}
|
|
285
|
+
onSuspendTeam={(id) => suspendTeam(id)}
|
|
286
|
+
/>
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
**📋 Team Table Columns:**
|
|
290
|
+
|
|
291
|
+
| Column | Description |
|
|
292
|
+
|--------|-------------|
|
|
293
|
+
| Name | Team name |
|
|
294
|
+
| Slug | URL identifier |
|
|
295
|
+
| Owner | Team owner email |
|
|
296
|
+
| Members | Member count |
|
|
297
|
+
| Plan | Current subscription plan |
|
|
298
|
+
| Status | Active, suspended, trial |
|
|
299
|
+
| Created | Creation date |
|
|
300
|
+
| Actions | View, edit, suspend |
|
|
301
|
+
|
|
302
|
+
**📋 Team Details View:**
|
|
303
|
+
|
|
304
|
+
```
|
|
305
|
+
/superadmin/teams/:teamId
|
|
306
|
+
|
|
307
|
+
Shows:
|
|
308
|
+
• Team information
|
|
309
|
+
• Member list with roles
|
|
310
|
+
• Subscription details
|
|
311
|
+
• Activity log
|
|
312
|
+
• Usage statistics
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
```
|
|
316
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
317
|
+
|
|
318
|
+
What would you like to do?
|
|
319
|
+
|
|
320
|
+
[1] Continue to Step 4 (Subscriptions)
|
|
321
|
+
[2] How do I merge teams?
|
|
322
|
+
[3] Can I impersonate a team?
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## Step 4: Subscription Management
|
|
328
|
+
|
|
329
|
+
```
|
|
330
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
331
|
+
STEP 4 OF 5: Subscription Management
|
|
332
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
333
|
+
|
|
334
|
+
Manage team subscriptions and billing
|
|
335
|
+
information.
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
**📋 Subscription Features:**
|
|
339
|
+
|
|
340
|
+
```
|
|
341
|
+
┌─────────────────────────────────────────────┐
|
|
342
|
+
│ /superadmin/subscriptions │
|
|
343
|
+
│ ───────────────────────────────────────── │
|
|
344
|
+
│ │
|
|
345
|
+
│ VIEW: │
|
|
346
|
+
│ • All active subscriptions │
|
|
347
|
+
│ • Plan distribution │
|
|
348
|
+
│ • Revenue metrics │
|
|
349
|
+
│ │
|
|
350
|
+
│ FILTERS: │
|
|
351
|
+
│ • Filter by plan │
|
|
352
|
+
│ • Filter by status │
|
|
353
|
+
│ • Filter by billing cycle │
|
|
354
|
+
│ │
|
|
355
|
+
│ ACTIONS: │
|
|
356
|
+
│ • Change plan manually │
|
|
357
|
+
│ • Extend trial │
|
|
358
|
+
│ • Cancel subscription │
|
|
359
|
+
│ • Apply credits │
|
|
360
|
+
└─────────────────────────────────────────────┘
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
**📋 Subscription Table:**
|
|
364
|
+
|
|
365
|
+
| Column | Description |
|
|
366
|
+
|--------|-------------|
|
|
367
|
+
| Team | Team name |
|
|
368
|
+
| Plan | Current plan (Free, Pro, Enterprise) |
|
|
369
|
+
| Status | Active, trialing, canceled, past_due |
|
|
370
|
+
| Billing | Monthly, yearly |
|
|
371
|
+
| Amount | Subscription amount |
|
|
372
|
+
| Next billing | Next charge date |
|
|
373
|
+
| Actions | Manage, cancel, upgrade |
|
|
374
|
+
|
|
375
|
+
**📋 Plan Features Matrix:**
|
|
376
|
+
|
|
377
|
+
```typescript
|
|
378
|
+
import { PlanFeaturesMatrix } from '@/core/components/superadmin'
|
|
379
|
+
|
|
380
|
+
// Shows all plans and their features
|
|
381
|
+
<PlanFeaturesMatrix />
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
```
|
|
385
|
+
┌─────────────────────────────────────────────┐
|
|
386
|
+
│ PLAN FEATURES MATRIX │
|
|
387
|
+
│ ───────────────────────────────────────── │
|
|
388
|
+
│ │
|
|
389
|
+
│ Feature Free Pro Enterprise │
|
|
390
|
+
│ ───────────── ──── ──── ────────── │
|
|
391
|
+
│ Team members 3 10 Unlimited │
|
|
392
|
+
│ Storage 1GB 10GB 100GB │
|
|
393
|
+
│ API calls 1K 10K Unlimited │
|
|
394
|
+
│ Support Email Chat Dedicated │
|
|
395
|
+
└─────────────────────────────────────────────┘
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
**📋 Manual Plan Changes:**
|
|
399
|
+
|
|
400
|
+
```typescript
|
|
401
|
+
// Change a team's plan (bypasses Stripe)
|
|
402
|
+
await updateTeamSubscription(teamId, {
|
|
403
|
+
planId: 'pro',
|
|
404
|
+
reason: 'Customer support request',
|
|
405
|
+
expiresAt: null // or specific date
|
|
406
|
+
})
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
```
|
|
410
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
411
|
+
|
|
412
|
+
What would you like to do?
|
|
413
|
+
|
|
414
|
+
[1] Continue to Step 5 (Role Configuration)
|
|
415
|
+
[2] How do I give a team free access?
|
|
416
|
+
[3] Where do I configure plans?
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
---
|
|
420
|
+
|
|
421
|
+
## Step 5: Role Configuration
|
|
422
|
+
|
|
423
|
+
```
|
|
424
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
425
|
+
STEP 5 OF 5: Role Configuration
|
|
426
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
427
|
+
|
|
428
|
+
Configure team roles and their permissions.
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
**📋 Role System Overview:**
|
|
432
|
+
|
|
433
|
+
```
|
|
434
|
+
┌─────────────────────────────────────────────┐
|
|
435
|
+
│ TWO TYPES OF ROLES │
|
|
436
|
+
│ ───────────────────────────────────────── │
|
|
437
|
+
│ │
|
|
438
|
+
│ USER ROLES (Global): │
|
|
439
|
+
│ • member - Regular user │
|
|
440
|
+
│ • superadmin - System administrator │
|
|
441
|
+
│ │
|
|
442
|
+
│ TEAM ROLES (Per team): │
|
|
443
|
+
│ • owner - Full control │
|
|
444
|
+
│ • admin - Most permissions │
|
|
445
|
+
│ • member - Limited permissions │
|
|
446
|
+
│ • viewer - Read-only access │
|
|
447
|
+
└─────────────────────────────────────────────┘
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
**📋 Roles Permissions Matrix:**
|
|
451
|
+
|
|
452
|
+
```typescript
|
|
453
|
+
import { RolesPermissionsMatrix } from '@/core/components/superadmin'
|
|
454
|
+
|
|
455
|
+
// View all roles and their permissions
|
|
456
|
+
<RolesPermissionsMatrix />
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
```
|
|
460
|
+
┌──────────────────────────────────────────────────────────┐
|
|
461
|
+
│ TEAM PERMISSIONS BY ROLE │
|
|
462
|
+
│ ──────────────────────────────────────────────────── │
|
|
463
|
+
│ │
|
|
464
|
+
│ Permission Owner Admin Member Viewer │
|
|
465
|
+
│ ────────────────────── ──── ──── ────── ────── │
|
|
466
|
+
│ team.view ✓ ✓ ✓ ✓ │
|
|
467
|
+
│ team.edit ✓ ✓ ✗ ✗ │
|
|
468
|
+
│ team.delete ✓ ✗ ✗ ✗ │
|
|
469
|
+
│ team.members.view ✓ ✓ ✓ ✓ │
|
|
470
|
+
│ team.members.invite ✓ ✓ ✗ ✗ │
|
|
471
|
+
│ team.members.remove ✓ ✓ ✗ ✗ │
|
|
472
|
+
│ team.settings.view ✓ ✓ ✓ ✗ │
|
|
473
|
+
│ team.settings.edit ✓ ✓ ✗ ✗ │
|
|
474
|
+
│ team.billing.view ✓ ✓ ✗ ✗ │
|
|
475
|
+
│ team.billing.manage ✓ ✗ ✗ ✗ │
|
|
476
|
+
└──────────────────────────────────────────────────────────┘
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
**📋 Role Hierarchy:**
|
|
480
|
+
|
|
481
|
+
```
|
|
482
|
+
superadmin (bypasses all team permissions)
|
|
483
|
+
│
|
|
484
|
+
▼
|
|
485
|
+
owner (full team control)
|
|
486
|
+
│
|
|
487
|
+
▼
|
|
488
|
+
admin (most permissions)
|
|
489
|
+
│
|
|
490
|
+
▼
|
|
491
|
+
member (limited permissions)
|
|
492
|
+
│
|
|
493
|
+
▼
|
|
494
|
+
viewer (read-only)
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
**📋 Custom Roles:**
|
|
498
|
+
|
|
499
|
+
Themes can define custom roles in `app.config.ts`:
|
|
500
|
+
|
|
501
|
+
```typescript
|
|
502
|
+
// app.config.ts
|
|
503
|
+
teamRoles: {
|
|
504
|
+
custom: [
|
|
505
|
+
{
|
|
506
|
+
name: 'editor',
|
|
507
|
+
displayName: 'Editor',
|
|
508
|
+
description: 'Can edit content but not settings',
|
|
509
|
+
permissions: [
|
|
510
|
+
'team.view',
|
|
511
|
+
'entities.read',
|
|
512
|
+
'entities.write',
|
|
513
|
+
]
|
|
514
|
+
}
|
|
515
|
+
]
|
|
516
|
+
}
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
**📋 Permission Registry:**
|
|
520
|
+
|
|
521
|
+
```typescript
|
|
522
|
+
// Import from registry
|
|
523
|
+
import {
|
|
524
|
+
TEAM_PERMISSIONS_BY_ROLE,
|
|
525
|
+
AVAILABLE_ROLES,
|
|
526
|
+
ROLE_HIERARCHY,
|
|
527
|
+
} from '@nextsparkjs/registries/permissions-registry'
|
|
528
|
+
|
|
529
|
+
// Check permission
|
|
530
|
+
const hasPermission = TEAM_PERMISSIONS_BY_ROLE[role].includes(permission)
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
```
|
|
534
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
535
|
+
|
|
536
|
+
✅ TUTORIAL STORY!
|
|
537
|
+
|
|
538
|
+
You've learned:
|
|
539
|
+
• Accessing the Superadmin Panel
|
|
540
|
+
• User management and filtering
|
|
541
|
+
• Team management capabilities
|
|
542
|
+
• Subscription handling
|
|
543
|
+
• Role and permission configuration
|
|
544
|
+
|
|
545
|
+
📚 Related tutorials:
|
|
546
|
+
• /how-to:set-user-roles-and-permissions - Configure RBAC
|
|
547
|
+
• /how-to:set-plans-and-permissions - Configure billing plans
|
|
548
|
+
|
|
549
|
+
🔙 Back to menu: /how-to:start
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
---
|
|
553
|
+
|
|
554
|
+
## Interactive Options
|
|
555
|
+
|
|
556
|
+
### "What's the difference between superadmin and team admin?"
|
|
557
|
+
|
|
558
|
+
```
|
|
559
|
+
📋 Superadmin vs Team Admin:
|
|
560
|
+
|
|
561
|
+
SUPERADMIN (User Role):
|
|
562
|
+
• Global system administrator
|
|
563
|
+
• Access to /superadmin panel
|
|
564
|
+
• Can manage ALL users and teams
|
|
565
|
+
• Can change any user's role
|
|
566
|
+
• Can modify subscriptions
|
|
567
|
+
• NOT tied to any specific team
|
|
568
|
+
|
|
569
|
+
TEAM ADMIN (Team Role):
|
|
570
|
+
• Administrator of a specific team
|
|
571
|
+
• Access to team settings
|
|
572
|
+
• Can invite/remove team members
|
|
573
|
+
• Can change member roles (except owner)
|
|
574
|
+
• CANNOT access other teams
|
|
575
|
+
• CANNOT access superadmin panel
|
|
576
|
+
|
|
577
|
+
In short:
|
|
578
|
+
• Superadmin = System-wide power
|
|
579
|
+
• Team Admin = Team-specific power
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
### "How do I give a team free access?"
|
|
583
|
+
|
|
584
|
+
```
|
|
585
|
+
📋 Granting Free Access:
|
|
586
|
+
|
|
587
|
+
Option 1: Manual plan override
|
|
588
|
+
1. Go to /superadmin/subscriptions
|
|
589
|
+
2. Find the team
|
|
590
|
+
3. Click "Change Plan"
|
|
591
|
+
4. Select plan and check "Free override"
|
|
592
|
+
5. Set expiration (or never)
|
|
593
|
+
|
|
594
|
+
Option 2: Via database
|
|
595
|
+
|
|
596
|
+
UPDATE team_subscriptions
|
|
597
|
+
SET plan_id = 'enterprise',
|
|
598
|
+
stripe_subscription_id = NULL,
|
|
599
|
+
status = 'active',
|
|
600
|
+
free_override = true,
|
|
601
|
+
free_override_reason = 'Partner program'
|
|
602
|
+
WHERE team_id = 'team-id';
|
|
603
|
+
|
|
604
|
+
Option 3: Via API
|
|
605
|
+
|
|
606
|
+
await updateTeamSubscription(teamId, {
|
|
607
|
+
planId: 'pro',
|
|
608
|
+
freeOverride: true,
|
|
609
|
+
reason: 'Beta tester reward',
|
|
610
|
+
expiresAt: '2025-12-31'
|
|
611
|
+
})
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
---
|
|
615
|
+
|
|
616
|
+
## Related Commands
|
|
617
|
+
|
|
618
|
+
| Command | Description |
|
|
619
|
+
|---------|-------------|
|
|
620
|
+
| `/how-to:set-user-roles-and-permissions` | Configure RBAC system |
|
|
621
|
+
| `/how-to:set-plans-and-permissions` | Configure billing plans |
|
|
622
|
+
| `/how-to:use-devtools` | Developer tools panel |
|