diff --git a/frontend_management/components/common/AppCard.vue b/frontend_management/components/common/AppCard.vue new file mode 100644 index 00000000..c93dc3e3 --- /dev/null +++ b/frontend_management/components/common/AppCard.vue @@ -0,0 +1,59 @@ + + + diff --git a/frontend_management/components/common/AppHeader.vue b/frontend_management/components/common/AppHeader.vue new file mode 100644 index 00000000..aeed7319 --- /dev/null +++ b/frontend_management/components/common/AppHeader.vue @@ -0,0 +1,53 @@ + + + diff --git a/frontend_management/components/common/AppModal.vue b/frontend_management/components/common/AppModal.vue new file mode 100644 index 00000000..59a4ffe8 --- /dev/null +++ b/frontend_management/components/common/AppModal.vue @@ -0,0 +1,101 @@ + + + diff --git a/frontend_management/components/common/AppTable.vue b/frontend_management/components/common/AppTable.vue new file mode 100644 index 00000000..e6d8c5d4 --- /dev/null +++ b/frontend_management/components/common/AppTable.vue @@ -0,0 +1,177 @@ + + + diff --git a/frontend_management/composables/useApi.ts b/frontend_management/composables/useApi.ts new file mode 100644 index 00000000..4712ed82 --- /dev/null +++ b/frontend_management/composables/useApi.ts @@ -0,0 +1,34 @@ +import type { UseFetchOptions } from 'nuxt/app'; + +export const useApi = () => { + const config = useRuntimeConfig(); + const baseURL = config.public.apiBaseUrl as string; + + const apiFetch = (url: string, options?: UseFetchOptions) => { + return $fetch(url, { + baseURL, + ...options, + headers: { + ...options?.headers, + }, + onRequest({ options }) { + // Add auth token if available + const token = localStorage.getItem('token'); + if (token) { + options.headers = { + ...options.headers, + Authorization: `Bearer ${token}` + }; + } + }, + onResponseError({ response }) { + // Handle errors globally + console.error('API Error:', response.status, response._data); + } + }); + }; + + return { + apiFetch + }; +}; diff --git a/frontend_management/layouts/admin.vue b/frontend_management/layouts/admin.vue new file mode 100644 index 00000000..956f75ca --- /dev/null +++ b/frontend_management/layouts/admin.vue @@ -0,0 +1,83 @@ + + + diff --git a/frontend_management/layouts/auth.vue b/frontend_management/layouts/auth.vue new file mode 100644 index 00000000..3b3fadd0 --- /dev/null +++ b/frontend_management/layouts/auth.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/frontend_management/layouts/instructor.vue b/frontend_management/layouts/instructor.vue index 6668be9b..d8320b6e 100644 --- a/frontend_management/layouts/instructor.vue +++ b/frontend_management/layouts/instructor.vue @@ -10,42 +10,24 @@ -
+ diff --git a/frontend_management/nuxt.config.ts b/frontend_management/nuxt.config.ts index 81f4bbb2..86c0ebaa 100644 --- a/frontend_management/nuxt.config.ts +++ b/frontend_management/nuxt.config.ts @@ -29,8 +29,8 @@ export default defineNuxtConfig({ ], runtimeConfig: { public: { - apiBase: process.env.API_BASE_URL || 'http://localhost:3001/api', - useMockData: process.env.USE_MOCK_DATA === 'true' + apiBaseUrl: process.env.NUXT_PUBLIC_API_BASE_URL, + useMockData: process.env.NUXT_PUBLIC_USE_MOCK_DATA === 'true' } }, devtools: { enabled: true }, diff --git a/frontend_management/pages/admin/index.vue b/frontend_management/pages/admin/index.vue index 4a79b105..4d53aac1 100644 --- a/frontend_management/pages/admin/index.vue +++ b/frontend_management/pages/admin/index.vue @@ -1,7 +1,59 @@ \ No newline at end of file diff --git a/frontend_management/pages/instructor/index.vue b/frontend_management/pages/instructor/index.vue index e323cdfd..d0db5e70 100644 --- a/frontend_management/pages/instructor/index.vue +++ b/frontend_management/pages/instructor/index.vue @@ -1,14 +1,55 @@ +