From be8f62375cb7a5798f9133dcf454eea7f835617b Mon Sep 17 00:00:00 2001 From: Joachim Date: Tue, 10 Mar 2026 15:37:50 +0100 Subject: [PATCH 01/36] feat: add interview validation schemas for creation, updating, and querying --- app/components/AppSidebar.vue | 244 -- app/components/AppTopBar.vue | 3 +- app/components/InterviewScheduleSidebar.vue | 543 ++++ app/composables/useInterviews.ts | 160 +- app/pages/dashboard/interviews.vue | 802 ++++++ app/pages/dashboard/jobs/[id]/index.vue | 41 +- server/api/interviews/[id]/index.delete.ts | 34 + server/api/interviews/[id]/index.get.ts | 44 + server/api/interviews/[id]/index.patch.ts | 63 + server/api/interviews/index.get.ts | 64 + server/api/interviews/index.post.ts | 57 + .../0010_glamorous_mattie_franklin.sql | 27 + .../migrations/meta/0010_snapshot.json | 2500 +++++++++++++++++ server/database/migrations/meta/_journal.json | 7 + server/database/schema/app.ts | 47 + server/utils/schemas/interview.ts | 56 + shared/permissions.ts | 10 +- 17 files changed, 4445 insertions(+), 257 deletions(-) delete mode 100644 app/components/AppSidebar.vue create mode 100644 app/components/InterviewScheduleSidebar.vue create mode 100644 app/pages/dashboard/interviews.vue create mode 100644 server/api/interviews/[id]/index.delete.ts create mode 100644 server/api/interviews/[id]/index.get.ts create mode 100644 server/api/interviews/[id]/index.patch.ts create mode 100644 server/api/interviews/index.get.ts create mode 100644 server/api/interviews/index.post.ts create mode 100644 server/database/migrations/0010_glamorous_mattie_franklin.sql create mode 100644 server/database/migrations/meta/0010_snapshot.json create mode 100644 server/utils/schemas/interview.ts diff --git a/app/components/AppSidebar.vue b/app/components/AppSidebar.vue deleted file mode 100644 index 47aa9d66..00000000 --- a/app/components/AppSidebar.vue +++ /dev/null @@ -1,244 +0,0 @@ - - - diff --git a/app/components/AppTopBar.vue b/app/components/AppTopBar.vue index abbb545a..5989f253 100644 --- a/app/components/AppTopBar.vue +++ b/app/components/AppTopBar.vue @@ -4,7 +4,7 @@ import { Kanban, FileText, LogOut, Table2, Sun, Moon, MessageSquarePlus, Settings, ChevronDown, Menu, X, Users, ChevronLeft, - LayoutDashboard, + LayoutDashboard, Calendar, } from 'lucide-vue-next' const route = useRoute() @@ -104,6 +104,7 @@ const mainNav = [ { label: 'Jobs', to: '/dashboard', icon: Briefcase, exact: true }, { label: 'Candidates', to: '/dashboard/candidates', icon: Users, exact: false }, { label: 'Applications', to: '/dashboard/applications', icon: FileText, exact: false }, + { label: 'Interviews', to: '/dashboard/interviews', icon: Calendar, exact: false }, { label: 'Settings', to: '/dashboard/settings', icon: Settings, exact: false }, ] diff --git a/app/components/InterviewScheduleSidebar.vue b/app/components/InterviewScheduleSidebar.vue new file mode 100644 index 00000000..ea55337e --- /dev/null +++ b/app/components/InterviewScheduleSidebar.vue @@ -0,0 +1,543 @@ + + +