From 989c84755dc17f99c44d15e5ce0cf079cd4298a5 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 18 Mar 2026 11:46:56 +0000 Subject: [PATCH] feat: add dashboards --- .gitignore | 2 + README.md | 2 +- packages/web/.env.example | 7 + packages/web/app/app.vue | 38 +- .../web/app/pages/dashboards/[id]/edit.vue | 199 +++++++ .../web/app/pages/dashboards/[id]/index.vue | 259 +++++++++ packages/web/app/pages/dashboards/index.vue | 178 +++++++ packages/web/modules/local.ts | 2 +- .../runtime/server/plugins/preset-repo.ts | 6 +- packages/web/nuxt.config.ts | 16 +- packages/web/package.json | 5 +- .../server/api/clusters/dashboard/[id].get.ts | 76 +++ packages/web/server/api/dashboards.get.ts | 15 + packages/web/server/api/dashboards.post.ts | 61 +++ .../web/server/api/dashboards/[id].delete.ts | 25 + .../web/server/api/dashboards/[id].get.ts | 13 + .../web/server/api/dashboards/[id].put.ts | 75 +++ .../api/duplicates/dashboard/[id].get.ts | 50 ++ packages/web/server/api/repos.get.ts | 5 +- .../server/db/migrations/0000_clean_hulk.sql | 20 - .../db/migrations/0001_nosy_barracuda.sql | 3 - .../db/migrations/meta/0000_snapshot.json | 151 ------ .../sqlite/0000_minor_roxanne_simpson.sql | 44 ++ .../migrations/sqlite/0001_add_dashboards.sql | 20 + .../meta/0000_snapshot.json} | 141 ++++- .../{ => sqlite}/meta/_journal.json | 10 +- packages/web/server/db/schema.ts | 22 +- packages/web/server/routes/auth/github.get.ts | 17 + packages/web/server/utils/ai.ts | 31 ++ packages/web/server/utils/cluster.ts | 30 +- packages/web/server/utils/dashboards.ts | 78 +++ packages/web/server/utils/drizzle.ts | 2 +- packages/web/server/utils/embeddings.ts | 28 +- packages/web/shared/types/auth.d.ts | 13 + pnpm-lock.yaml | 491 ++++++++++++++---- 35 files changed, 1829 insertions(+), 306 deletions(-) create mode 100644 packages/web/app/pages/dashboards/[id]/edit.vue create mode 100644 packages/web/app/pages/dashboards/[id]/index.vue create mode 100644 packages/web/app/pages/dashboards/index.vue create mode 100644 packages/web/server/api/clusters/dashboard/[id].get.ts create mode 100644 packages/web/server/api/dashboards.get.ts create mode 100644 packages/web/server/api/dashboards.post.ts create mode 100644 packages/web/server/api/dashboards/[id].delete.ts create mode 100644 packages/web/server/api/dashboards/[id].get.ts create mode 100644 packages/web/server/api/dashboards/[id].put.ts create mode 100644 packages/web/server/api/duplicates/dashboard/[id].get.ts delete mode 100644 packages/web/server/db/migrations/0000_clean_hulk.sql delete mode 100644 packages/web/server/db/migrations/0001_nosy_barracuda.sql delete mode 100644 packages/web/server/db/migrations/meta/0000_snapshot.json create mode 100644 packages/web/server/db/migrations/sqlite/0000_minor_roxanne_simpson.sql create mode 100644 packages/web/server/db/migrations/sqlite/0001_add_dashboards.sql rename packages/web/server/db/migrations/{meta/0001_snapshot.json => sqlite/meta/0000_snapshot.json} (52%) rename packages/web/server/db/migrations/{ => sqlite}/meta/_journal.json (60%) create mode 100644 packages/web/server/routes/auth/github.get.ts create mode 100644 packages/web/server/utils/ai.ts create mode 100644 packages/web/server/utils/dashboards.ts create mode 100644 packages/web/shared/types/auth.d.ts diff --git a/.gitignore b/.gitignore index 5f649c1..8780e2b 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,5 @@ test-results # vite-plus .vite-hooks + +packages/web/.data \ No newline at end of file diff --git a/README.md b/README.md index b352ea2..69fa359 100644 --- a/README.md +++ b/README.md @@ -126,7 +126,7 @@ You can now directly visit `http://localhost:3000//` ### Preset repo -By default, in local development, we'll also index `nuxt/nuxt` and `nitrojs/nitro` so you don't have to register the GitHub app on any repository in order to see and play around with the cluster algorithm. +By default, in local development, we'll also index `nuxt/module-builder` and `nuxt/cli` so you don't have to register the GitHub app on any repository in order to see and play around with the cluster algorithm. If you want to customise this, you can configure the `DEV_REPOS_TO_INDEX` environment variable. diff --git a/packages/web/.env.example b/packages/web/.env.example index dfd9d70..5656caa 100644 --- a/packages/web/.env.example +++ b/packages/web/.env.example @@ -1,4 +1,11 @@ NUXT_WEBHOOK_GITHUB_SECRET_KEY= NUXT_GITHUB_APP_ID= NUXT_GITHUB_PRIVATE_KEY= +NUXT_OAUTH_GITHUB_CLIENT_ID= +NUXT_OAUTH_GITHUB_CLIENT_SECRET= +NUXT_SESSION_PASSWORD= DEV_REPOS_TO_INDEX= + +# Cloudflare AI REST API (for local dev without Workers bindings) +NUXT_CLOUDFLARE_ACCOUNT_ID= +NUXT_CLOUDFLARE_API_TOKEN= diff --git a/packages/web/app/app.vue b/packages/web/app/app.vue index 5ea5113..22759f2 100644 --- a/packages/web/app/app.vue +++ b/packages/web/app/app.vue @@ -18,13 +18,14 @@ if (import.meta.server) { } const { data: repos } = useRepos() +const { user, clear } = useUserSession()