Merged
Conversation
There was a problem hiding this comment.
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-nextNext.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.*tocatalogs.*.
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.
1788cd3 to
36c1aa2
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.