Skip to content

Dev/UI nextjs#84

Merged
wiseflat merged 5 commits intomainfrom
dev/ui-nextjs
Apr 1, 2026
Merged

Dev/UI nextjs#84
wiseflat merged 5 commits intomainfrom
dev/ui-nextjs

Conversation

@wiseflat
Copy link
Copy Markdown
Owner

@wiseflat wiseflat commented Apr 1, 2026

No description provided.

@wiseflat wiseflat requested a review from Copilot April 1, 2026 05:37
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a new Next.js-based UI (ui-next) with authentication, documentation pages, a SQLite/Drizzle-backed API surface, and updates the Ansible integration to talk to the new endpoints (Basic auth, updated payload shapes). It also relaxes a couple of validation regexes used by the legacy UI.

Changes:

  • Added ui-next Next.js application scaffold (Tailwind, NextAuth, i18n, docs via MDX/Fumadocs, SQLite via Drizzle).
  • Implemented new API routes for core resources (users, infrastructures, catalogs, softwares, variables, events, inventory, settings import/export) and runner integration.
  • Updated Ansible rulebook/plugins/roles to use the new API endpoints and switch image/version references from softwares.* to catalogs.*.

Reviewed changes

Copilot reviewed 224 out of 332 changed files in this pull request and generated 13 comments.

Show a summary per file
File Description
ui/definitions/regex.js Loosens catalog name/version regex patterns for legacy UI validation.
ui-next/tsconfig.json Adds TypeScript configuration for the new Next.js app.
ui-next/scripts/extract-roles-variables.js Generates public JSON docs data from Ansible role defaults.
ui-next/public/roles-variables-saas.json Adds generated SaaS role variables JSON for docs.
ui-next/proxy.ts Adds NextAuth route protection matcher export (intended middleware).
ui-next/postcss.config.mjs Adds PostCSS config for Tailwind.
ui-next/package.json Defines dependencies/scripts for the new UI.
ui-next/next.config.ts Configures MDX + next-intl + dev origins.
ui-next/messages/sk.json Adds Slovak UI translations.
ui-next/messages/fr.json Adds French UI translations.
ui-next/messages/es.json Adds Spanish UI translations.
ui-next/messages/en.json Adds English UI translations.
ui-next/mdx-components.tsx Custom MDX components mapping (copyable code blocks).
ui-next/lib/validations/variable.ts Zod schemas for variable endpoints.
ui-next/lib/validations/user.ts Zod schemas for user/auth endpoints.
ui-next/lib/validations/software.ts Zod schemas for software endpoints.
ui-next/lib/validations/infrastructure.ts Zod schemas for infrastructure endpoints and action enums.
ui-next/lib/validations/common.ts Shared param validation schemas.
ui-next/lib/validations/catalog.ts Zod schemas for catalogs/forks and version pattern.
ui-next/lib/site-settings.ts Adds persistent site settings storage and API support.
ui-next/lib/runner.ts Adds runner settings loading + payload POST helper.
ui-next/lib/inventory.ts Builds an Ansible inventory JSON from tfstate + variables + catalogs.
ui-next/lib/infrastructure-icons.ts Adds icon key set + labels + normalization utilities.
ui-next/lib/docs/source.ts Defines docs entries and Fumadocs page tree + loader.
ui-next/lib/db/schema.ts Defines SQLite tables via Drizzle schema.
ui-next/lib/db/client.ts Sets up better-sqlite3 + Drizzle client and ensures DB dir exists.
ui-next/lib/crypto.ts Adds AES-256-GCM encryption/decryption + secret hashing helpers.
ui-next/lib/auth.ts Implements NextAuth credentials provider backed by SQLite users table.
ui-next/lib/api-utils.ts Adds auth helpers, Basic auth support for API, and JSON utilities.
ui-next/i18n/request.ts Configures locale resolution and message loading (next-intl).
ui-next/eslint.config.mjs Adds ESLint flat config using Next presets.
ui-next/drizzle/meta/_journal.json Adds Drizzle migration metadata journal.
ui-next/drizzle/0000_curious_hulk.sql Adds initial SQLite migration for all tables.
ui-next/drizzle.config.ts Adds drizzle-kit configuration for migration generation.
ui-next/content/docs/users.mdx Adds docs content for Users domain.
ui-next/content/docs/softwares.mdx Adds docs content for Softwares domain + roles variables inclusion.
ui-next/content/docs/settings.mdx Adds docs content for Settings features.
ui-next/content/docs/profile.mdx Adds docs content for Profile page.
ui-next/content/docs/intro.mdx Adds docs landing/intro content.
ui-next/content/docs/infrastructures.mdx Adds docs content for Infrastructures domain + roles variables inclusion.
ui-next/content/docs/events.mdx Adds docs content for Events.
ui-next/content/docs/catalogs.mdx Adds docs content for Catalogs domain.
ui-next/content/docs/api-interne.mdx Adds placeholder internal API docs content.
ui-next/components/ui/resource-shell.tsx Adds shared page shell with loading/error/sticky header states.
ui-next/components/providers.tsx Adds combined providers (next-intl + fumadocs UI theme provider).
ui-next/components/marketing/public-theme-picker.tsx Adds theme picker for public/docs pages.
ui-next/components/marketing/public-sidebar.tsx Adds collapsible docs/public sidebar navigation.
ui-next/components/marketing/public-shell.tsx Adds public shell that enforces site settings gating rules.
ui-next/components/marketing/public-collapsible-layout.tsx Adds collapsible layout wrapper for public/docs pages.
ui-next/components/marketing/docs-toc-nav.tsx Adds in-page ToC generation from headings.
ui-next/components/marketing/docs-roles-variables.tsx Renders fetched roles variables data in docs.
ui-next/components/marketing/docs-copyable-code-block.tsx Adds copy-to-clipboard wrapper for MDX pre blocks.
ui-next/components/marketing/docs-article.tsx Adds docs article layout with ToC.
ui-next/components/layout/theme-toggle.tsx Adds authenticated app theme toggle with translations.
ui-next/components/layout/collapsible-layout.tsx Adds app layout framing and side menu collapsing behavior.
ui-next/auth.config.ts Adds Edge-compatible NextAuth config with route protection callback.
ui-next/app/layout.tsx Adds root layout (fonts, providers, metadata).
ui-next/app/globals.css Adds Tailwind v4 + theme CSS variables.
ui-next/app/docs/page.tsx Adds docs index page rendering via docs loader.
ui-next/app/docs/layout.tsx Adds docs layout wrapper using PublicShell.
ui-next/app/docs/[...slug]/page.tsx Adds docs dynamic page rendering + metadata generation.
ui-next/app/api/variables/secret/route.ts Adds secret variable generation/read/update/delete endpoint.
ui-next/app/api/variables/route.ts Adds variables list/create endpoint with key/key2 filtering.
ui-next/app/api/users/route.ts Adds admin-only users list/create endpoints.
ui-next/app/api/users/profile/route.ts Adds current user profile read/update endpoint.
ui-next/app/api/users/password/route.ts Adds current user password update endpoint.
ui-next/app/api/users/[id]/route.ts Adds admin user read/update/delete endpoints.
ui-next/app/api/softwares/route.ts Adds softwares list/create endpoint with enrichment and filtering.
ui-next/app/api/settings/import/route.ts Adds settings import endpoint for infrastructures/softwares/variables.
ui-next/app/api/settings/general/route.ts Adds admin-only site settings read/patch endpoint.
ui-next/app/api/settings/export/route.ts Adds settings export endpoint (infra + related softwares/variables).
ui-next/app/api/ping/route.ts Adds ping endpoint for health checks.
ui-next/app/api/inventory/route.ts Adds inventory generation endpoint based on stored tfstate.
ui-next/app/api/infrastructures/route.ts Adds infrastructures list/create endpoints.
ui-next/app/api/infrastructures/[id]/tfstates/route.ts Adds tfstate read/write endpoints per infrastructure.
ui-next/app/api/infrastructures/[id]/route.ts Adds infrastructure read/update/delete endpoints.
ui-next/app/api/infrastructures/[id]/remove/route.ts Adds dedicated remove endpoint to delete infra + associated variables.
ui-next/app/api/infrastructures/[id]/execute/route.ts Adds infrastructure runner execution endpoint.
ui-next/app/api/events/route.ts Adds events ingestion + listing + clear endpoints.
ui-next/app/api/docs/roles-variables/route.ts Serves pre-generated roles variables JSON to the docs UI.
ui-next/app/api/catalogs/route.ts Adds catalogs list/create(update) endpoint.
ui-next/app/api/catalogs/[id]/route.ts Adds catalog read/update/delete endpoint.
ui-next/app/api/catalogs/[id]/fork/route.ts Adds catalog fork create/update endpoint.
ui-next/app/api/catalogs/[id]/execute/route.ts Adds catalog execute(build) endpoint via runner.
ui-next/app/api/auth/[...nextauth]/route.ts Wires NextAuth route handlers.
ui-next/app/api/account/route.ts Adds “first account” bootstrap registration endpoint.
ui-next/app/api-interne/reference/route.ts Adds internal API reference route protected by admin.
ui-next/app/(auth)/login/page.tsx Adds credentials login page.
ui-next/app/(auth)/layout.tsx Adds auth layout wrapper.
ui-next/app/(app)/variables/[id]/page.tsx Adds placeholder variable detail page.
ui-next/app/(app)/users/[id]/page.tsx Adds placeholder user detail page.
ui-next/app/(app)/softwares/[id]/page.tsx Adds placeholder software detail page.
ui-next/app/(app)/password/page.tsx Redirects legacy password route to profile.
ui-next/app/(app)/layout.tsx Adds authenticated app layout wrapper.
ui-next/app/(app)/infrastructures/[id]/page.tsx Adds placeholder infrastructure detail page.
ui-next/app/(app)/events/page.tsx Adds events UI page with polling + clear action.
ui-next/app/(app)/dashboard/page.tsx Adds dashboard page mounting the 3D graph component.
ui-next/app/(app)/catalogs/[id]/page.tsx Adds placeholder catalog detail page.
ui-next/app/(app)/api-interne/page.tsx Adds internal API tester page gated by admin.
ui-next/README.md Adds default Next.js README.
ui-next/Dockerfile Adds multi-stage Docker build for ui-next.
ui-next/.gitignore Adds ui-next ignore rules.
ui-next/.dockerignore Adds ui-next Docker ignore rules.
docker-compose.yml Adds local compose services for ui-next + ansible runner.
ansible/rulebook.yml Adds new PaaS event routings for runner actions.
ansible/plugins/lookup/simple-stack-ui.py Updates lookup to use Basic auth + JSON + new secret endpoint path.
ansible/plugins/callback/webhook_notifier.py Updates webhook payload + endpoint path + Basic auth header.
ansible/playbooks/saas/setup-buildx.yml Removes trailing whitespace.
ansible/playbooks/saas/roles/zigbee2mqtt/templates/nomad.hcl Switches versions to catalogs.* and updates indent filter usage.
ansible/playbooks/saas/roles/zigbee2mqtt/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/wordpress/vars/actions.yml Switches versions to catalogs.*.
ansible/playbooks/saas/roles/wordpress/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/wordpress/tasks/install.yml Switches versions to catalogs.*.
ansible/playbooks/saas/roles/wordpress/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/vllm/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/vllm/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/vector/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/vector/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/valkey/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/valkey/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/traefik/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/traefik/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/simplestack_ui/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/simplestack_ui/tasks/main.yml Removes trailing whitespace.
ansible/playbooks/saas/roles/simplestack_ui/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/simplestack_ansible/templates/nomad.hcl Switches version references to catalogs.*.
ansible/playbooks/saas/roles/simplestack_ansible/tasks/main.yml Removes trailing whitespace.
ansible/playbooks/saas/roles/simplestack_ansible/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/rocketchat/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/rocketchat/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/registry/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/registry/tasks/main.yml Updates commented debug references to catalogs.*.
ansible/playbooks/saas/roles/registry/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/postgresql/vars/actions.yml Switches versions to catalogs.*.
ansible/playbooks/saas/roles/postgresql/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/postgresql/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/postgresql/README.md Removes trailing whitespace.
ansible/playbooks/saas/roles/phpfpm/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/open-webui/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/open-webui/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/nodejs/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/nginx/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/nginx/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/nextcloud/vars/actions.yml Switches versions to catalogs.*.
ansible/playbooks/saas/roles/nextcloud/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/nextcloud/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/mosquitto/templates/nomad.hcl Adjusts Traefik tag include and switches versions to catalogs.*.
ansible/playbooks/saas/roles/mosquitto/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/minio/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/minio/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/mimir/templates/user.alertmanager.yml.j2 Removes trailing whitespace.
ansible/playbooks/saas/roles/mimir/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/mimir/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/milvus/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/milvus/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/mariadb/vars/actions.yml Switches versions to catalogs.*.
ansible/playbooks/saas/roles/mariadb/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/mariadb/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/loki/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/loki/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/litellm/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/litellm/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/kresus/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/kresus/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/homeassistant/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/homeassistant/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/grafana/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/grafana/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/grafana/files/dashboards/vllm/vllm.json Normalizes numeric scientific notation formatting.
ansible/playbooks/saas/roles/grafana/files/dashboards/nvidia/nvidia.json Reorders dashboard JSON fields (formatting/normalization).
ansible/playbooks/saas/roles/freshrss/vars/upstream.yml Removes trailing whitespace.
ansible/playbooks/saas/roles/freshrss/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/freshrss/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/freqtrade/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/freqtrade/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/forgejo/vars/actions.yml Switches versions to catalogs.*.
ansible/playbooks/saas/roles/forgejo/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/forgejo/tasks/first-user.yml Switches versions to catalogs.*.
ansible/playbooks/saas/roles/forgejo/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/dolibarr/vars/actions.yml Switches versions to catalogs.*.
ansible/playbooks/saas/roles/dolibarr/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/dolibarr/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/code_server/templates/nomad.hcl Switches versions to catalogs.* and adjusts Traefik tag template includes.
ansible/playbooks/saas/roles/code_server/tasks/main.yml Removes trailing whitespace.
ansible/playbooks/saas/roles/code_server/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/caddy/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/caddy/templates/Dockerfile.j2 Updates dockerfile var names (camelCase) for UI-driven build.
ansible/playbooks/saas/roles/caddy/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/arangodb/vars/actions.yml Switches versions to catalogs.*.
ansible/playbooks/saas/roles/arangodb/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/arangodb/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/roles/adguard/templates/nomad.hcl Switches versions to catalogs.*.
ansible/playbooks/saas/roles/adguard/tasks/build.yml Switches build guard from softwares.* to catalogs.*.
ansible/playbooks/saas/operate.yml Updates UI API calls to new softwares update endpoint and payload shape.
ansible/playbooks/saas/main.yml Updates UI API calls to new softwares update endpoint and payload shape.
ansible/playbooks/saas/image.yml Renames dockerfile vars to camelCase for UI-driven build.
ansible/playbooks/saas/image-forkable.yml Updates catalog fetching/updating endpoints + dockerfile field names.
ansible/playbooks/paas/roles/nomad/tasks/07_autoeligibility.yml Removes trailing whitespace.
ansible/playbooks/paas/roles/certificate/tasks/ca.yml Removes trailing whitespace.
ansible/ansible.cfg Adjusts ssh_args to use user home ssh config path.
ansible/.dockerignore Adds Ansible Docker ignore rules.
.github/workflows/docker-build.yml Adds reusable Docker build/push/sign workflow.
.env.example Adds example env vars for local compose + Ansible integration.
Files not reviewed (1)
  • ui/package-lock.json: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@wiseflat wiseflat force-pushed the dev/ui-nextjs branch 4 times, most recently from 1788cd3 to 36c1aa2 Compare April 1, 2026 19:45
@wiseflat wiseflat merged commit f6321db into main Apr 1, 2026
6 checks passed
@wiseflat wiseflat deleted the dev/ui-nextjs branch April 1, 2026 20:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants