refactor: remove module system integration from admin and CLI

Removes all module-related logic from the admin dashboard, CLI database
initialization, and AdminPages component:

- Drop `initModules` call from `db init` CLI command and simplify the
  completion message to only reflect core feature tables
- Remove `getModuleDashboardStats` and module page routing from admin
  stats actions and update usage documentation accordingly
- Simplify `AdminPagesClient` to remove module page loading, lazy
  components, and module-specific props (`moduleStats`, `modulePageInfo`,
  `routeInfo`, `enabledModules`)
This commit is contained in:
2026-04-14 19:26:48 -04:00
parent 242ea69664
commit 3131df2b71
9 changed files with 415 additions and 239 deletions
-37
View File
@@ -12,41 +12,6 @@ import { getDashboardStats } from '@zen/core/admin/actions';
import { logoutAction } from '@zen/core/auth/actions';
import { getAppName } from '@zen/core';
function parseAdminRoute(params) {
const parts = params?.admin || [];
if (parts.length === 0) {
return { path: '/admin/dashboard', action: null, id: null };
}
const corePages = ['dashboard', 'users', 'profile'];
if (corePages.includes(parts[0])) {
if (parts[0] === 'users' && parts[1] === 'edit' && parts[2]) {
return { path: '/admin/users', action: 'edit', id: parts[2] };
}
return { path: `/admin/${parts[0]}`, action: null, id: null };
}
let pathParts = [];
let action = null;
let id = null;
const actionKeywords = ['new', 'create', 'edit'];
for (let i = 0; i < parts.length; i++) {
const part = parts[i];
if (actionKeywords.includes(part)) {
action = part === 'create' ? 'new' : part;
if (action === 'edit' && i + 1 < parts.length) {
id = parts[i + 1];
}
break;
}
pathParts.push(part);
}
return { path: '/admin/' + pathParts.join('/') + (action ? '/' + action : ''), action, id };
}
export default async function AdminPage({ params }) {
const resolvedParams = await params;
const session = await protectAdmin();
@@ -56,7 +21,6 @@ export default async function AdminPage({ params }) {
const dashboardStats = statsResult.success ? statsResult.stats : null;
const navigationSections = buildNavigationSections('/');
const { path, action, id } = parseAdminRoute(resolvedParams);
return (
<AdminPagesLayout
@@ -69,7 +33,6 @@ export default async function AdminPage({ params }) {
params={resolvedParams}
user={session.user}
dashboardStats={dashboardStats}
routeInfo={{ path, action, id }}
/>
</AdminPagesLayout>
);