diff --git a/frontend/src/App.vue b/frontend/src/App.vue index e1c5388d..7db110de 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -1,91 +1,10 @@ diff --git a/frontend/src/components/BrowseThemes.vue b/frontend/src/components/BrowseThemes.vue new file mode 100644 index 00000000..5191a920 --- /dev/null +++ b/frontend/src/components/BrowseThemes.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/components/LearningPath.vue b/frontend/src/components/LearningPath.vue new file mode 100644 index 00000000..4aaf6ef8 --- /dev/null +++ b/frontend/src/components/LearningPath.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/components/MenuBar.vue b/frontend/src/components/MenuBar.vue new file mode 100644 index 00000000..73336fa3 --- /dev/null +++ b/frontend/src/components/MenuBar.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/components/TheWelcome.vue b/frontend/src/components/TheWelcome.vue deleted file mode 100644 index fc109ae4..00000000 --- a/frontend/src/components/TheWelcome.vue +++ /dev/null @@ -1,178 +0,0 @@ - - - diff --git a/frontend/src/components/WelcomeItem.vue b/frontend/src/components/WelcomeItem.vue deleted file mode 100644 index 5d1b8a63..00000000 --- a/frontend/src/components/WelcomeItem.vue +++ /dev/null @@ -1,87 +0,0 @@ - - - diff --git a/frontend/src/components/__tests__/HelloWorld.spec.ts b/frontend/src/components/__tests__/HelloWorld.spec.ts index 79c1e3ae..ff48c1de 100644 --- a/frontend/src/components/__tests__/HelloWorld.spec.ts +++ b/frontend/src/components/__tests__/HelloWorld.spec.ts @@ -1,7 +1,7 @@ import { describe, it, expect } from "vitest"; import { mount } from "@vue/test-utils"; -import HelloWorld from "../HelloWorld.vue"; +import HelloWorld from "./HelloWorld.vue"; describe("HelloWorld", () => { it("renders properly", () => { diff --git a/frontend/src/components/HelloWorld.vue b/frontend/src/components/__tests__/HelloWorld.vue similarity index 100% rename from frontend/src/components/HelloWorld.vue rename to frontend/src/components/__tests__/HelloWorld.vue diff --git a/frontend/src/components/errors/NotFound.vue b/frontend/src/components/errors/NotFound.vue new file mode 100644 index 00000000..7a45fea2 --- /dev/null +++ b/frontend/src/components/errors/NotFound.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/components/icons/IconCommunity.vue b/frontend/src/components/icons/IconCommunity.vue deleted file mode 100644 index 708fa1b6..00000000 --- a/frontend/src/components/icons/IconCommunity.vue +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/frontend/src/components/icons/IconDocumentation.vue b/frontend/src/components/icons/IconDocumentation.vue deleted file mode 100644 index cd61e991..00000000 --- a/frontend/src/components/icons/IconDocumentation.vue +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/frontend/src/components/icons/IconEcosystem.vue b/frontend/src/components/icons/IconEcosystem.vue deleted file mode 100644 index 0e72c40f..00000000 --- a/frontend/src/components/icons/IconEcosystem.vue +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/frontend/src/components/icons/IconSupport.vue b/frontend/src/components/icons/IconSupport.vue deleted file mode 100644 index cc131b12..00000000 --- a/frontend/src/components/icons/IconSupport.vue +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/frontend/src/components/icons/IconTooling.vue b/frontend/src/components/icons/IconTooling.vue deleted file mode 100644 index 9e820684..00000000 --- a/frontend/src/components/icons/IconTooling.vue +++ /dev/null @@ -1,19 +0,0 @@ - - diff --git a/frontend/src/main.ts b/frontend/src/main.ts index 5701eca8..bc0c3d42 100644 --- a/frontend/src/main.ts +++ b/frontend/src/main.ts @@ -1,4 +1,3 @@ -import "./assets/main.css"; import { createApp } from "vue"; // Vuetify diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts index 55ba8fb7..8ce0fe3f 100644 --- a/frontend/src/router/index.ts +++ b/frontend/src/router/index.ts @@ -1,5 +1,20 @@ -import { createRouter, createWebHistory } from "vue-router"; -import HomeView from "../views/HomeView.vue"; +import {createRouter, createWebHistory} from "vue-router"; +import MenuBar from "@/components/MenuBar.vue"; +import StudentHomepage from "@/views/StudentHomepage.vue"; +import StudentAssignments from "@/views/assignments/StudentAssignments.vue"; +import StudentClasses from "@/views/classes/StudentClasses.vue"; +import StudentDiscussions from "@/views/discussions/StudentDiscussions.vue"; +import TeacherHomepage from "@/views/TeacherHomepage.vue"; +import TeacherAssignments from "@/views/assignments/TeacherAssignments.vue"; +import TeacherClasses from "@/views/classes/TeacherClasses.vue"; +import TeacherDiscussions from "@/views/discussions/TeacherDiscussions.vue"; +import SingleAssignment from "@/views/assignments/SingleAssignment.vue"; +import SingleClass from "@/views/classes/SingleClass.vue"; +import SingleDiscussion from "@/views/discussions/SingleDiscussion.vue"; +import NotFound from "@/components/errors/NotFound.vue"; +import CreateClass from "@/views/classes/CreateClass.vue"; +import CreateAssignment from "@/views/assignments/CreateAssignment.vue"; +import CreateDiscussion from "@/views/discussions/CreateDiscussion.vue"; const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), @@ -7,17 +22,102 @@ const router = createRouter({ { path: "/", name: "home", - component: HomeView, + component: () => {return import("../views/HomePage.vue")}, }, { - path: "/about", - name: "about", - // Route level code-splitting - // This generates a separate chunk (About.[hash].js) for this route - // Which is lazy-loaded when the route is visited. - component: () => { - return import("../views/AboutView.vue"); - }, + path: "/login", + name: "LoginPage", + component: () => {return import("../views/LoginPage.vue")} + }, + { + path: "/student/:id", + component: MenuBar, + children: [ + { + path: "home", + name: "StudentHomePage", + component: StudentHomepage + }, + { + path: "assignment", + name: "StudentAssignments", + component: StudentAssignments + }, + { + path: "class", + name: "StudentClasses", + component: StudentClasses + }, + { + path: "discussion", + name: "StudentDiscussions", + component: StudentDiscussions + }, + ] + }, + + { + path: "/teacher/:id", + component: MenuBar, + children: [ + { + path: "home", + name: "TeacherHomepage", + component: TeacherHomepage + }, + { + path: "assignment", + name: "TeacherAssignments", + component: TeacherAssignments + }, + { + path: "class", + name: "TeacherClasses", + component: TeacherClasses + }, + { + path: "discussion", + name: "TeacherDiscussions", + component: TeacherDiscussions + }, + ] + }, + { + path: "/assignment/create", + name: "CreateAssigment", + component: CreateAssignment + + }, + { + path: "/assignment/:id", + name: "SingleAssigment", + component: SingleAssignment + + }, + { + path: "/class/create", + name: "CreateClass", + component: CreateClass + }, + { + path: "/class/:id", + name: "SingleClass", + component: SingleClass + }, + { + path: "/discussion/create", + name: "CreateDiscussion", + component: CreateDiscussion + }, + { + path: "/discussion/:id", + name: "SingleDiscussion", + component: SingleDiscussion + }, + { + path: "/:catchAll(.*)", + name: "NotFound", + component: NotFound, }, ], }); diff --git a/frontend/src/views/AboutView.vue b/frontend/src/views/AboutView.vue deleted file mode 100644 index 1c17d1c9..00000000 --- a/frontend/src/views/AboutView.vue +++ /dev/null @@ -1,16 +0,0 @@ - - - diff --git a/frontend/src/views/HomeView.vue b/frontend/src/views/HomePage.vue similarity index 50% rename from frontend/src/views/HomeView.vue rename to frontend/src/views/HomePage.vue index 56ceba6d..677f16f0 100644 --- a/frontend/src/views/HomeView.vue +++ b/frontend/src/views/HomePage.vue @@ -1,9 +1,12 @@ + diff --git a/frontend/src/views/LoginPage.vue b/frontend/src/views/LoginPage.vue new file mode 100644 index 00000000..85a69bfd --- /dev/null +++ b/frontend/src/views/LoginPage.vue @@ -0,0 +1,10 @@ + + + + + diff --git a/frontend/src/views/StudentHomepage.vue b/frontend/src/views/StudentHomepage.vue new file mode 100644 index 00000000..4aaf6ef8 --- /dev/null +++ b/frontend/src/views/StudentHomepage.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/views/TeacherHomepage.vue b/frontend/src/views/TeacherHomepage.vue new file mode 100644 index 00000000..4aaf6ef8 --- /dev/null +++ b/frontend/src/views/TeacherHomepage.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/views/assignments/CreateAssignment.vue b/frontend/src/views/assignments/CreateAssignment.vue new file mode 100644 index 00000000..4aaf6ef8 --- /dev/null +++ b/frontend/src/views/assignments/CreateAssignment.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/views/assignments/SingleAssignment.vue b/frontend/src/views/assignments/SingleAssignment.vue new file mode 100644 index 00000000..4aaf6ef8 --- /dev/null +++ b/frontend/src/views/assignments/SingleAssignment.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/views/assignments/StudentAssignments.vue b/frontend/src/views/assignments/StudentAssignments.vue new file mode 100644 index 00000000..4aaf6ef8 --- /dev/null +++ b/frontend/src/views/assignments/StudentAssignments.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/views/assignments/TeacherAssignments.vue b/frontend/src/views/assignments/TeacherAssignments.vue new file mode 100644 index 00000000..4aaf6ef8 --- /dev/null +++ b/frontend/src/views/assignments/TeacherAssignments.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/views/classes/CreateClass.vue b/frontend/src/views/classes/CreateClass.vue new file mode 100644 index 00000000..4aaf6ef8 --- /dev/null +++ b/frontend/src/views/classes/CreateClass.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/views/classes/SingleClass.vue b/frontend/src/views/classes/SingleClass.vue new file mode 100644 index 00000000..4aaf6ef8 --- /dev/null +++ b/frontend/src/views/classes/SingleClass.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/views/classes/StudentClasses.vue b/frontend/src/views/classes/StudentClasses.vue new file mode 100644 index 00000000..4aaf6ef8 --- /dev/null +++ b/frontend/src/views/classes/StudentClasses.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/views/classes/TeacherClasses.vue b/frontend/src/views/classes/TeacherClasses.vue new file mode 100644 index 00000000..4aaf6ef8 --- /dev/null +++ b/frontend/src/views/classes/TeacherClasses.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/views/discussions/CreateDiscussion.vue b/frontend/src/views/discussions/CreateDiscussion.vue new file mode 100644 index 00000000..4aaf6ef8 --- /dev/null +++ b/frontend/src/views/discussions/CreateDiscussion.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/views/discussions/SingleDiscussion.vue b/frontend/src/views/discussions/SingleDiscussion.vue new file mode 100644 index 00000000..4aaf6ef8 --- /dev/null +++ b/frontend/src/views/discussions/SingleDiscussion.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/views/discussions/StudentDiscussions.vue b/frontend/src/views/discussions/StudentDiscussions.vue new file mode 100644 index 00000000..4aaf6ef8 --- /dev/null +++ b/frontend/src/views/discussions/StudentDiscussions.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/views/discussions/TeacherDiscussions.vue b/frontend/src/views/discussions/TeacherDiscussions.vue new file mode 100644 index 00000000..4aaf6ef8 --- /dev/null +++ b/frontend/src/views/discussions/TeacherDiscussions.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index fb7fbd25..e0d34b13 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -10,5 +10,8 @@ { "path": "./tsconfig.vitest.json" } - ] + ], + "compilerOptions": { + "resolveJsonModule": true + } } diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index a558039c..71efbde6 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -2,11 +2,10 @@ import { fileURLToPath, URL } from 'node:url'; import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; -import vueDevTools from 'vite-plugin-vue-devtools'; // https://vite.dev/config/ export default defineConfig({ - plugins: [vue(), vueDevTools()], + plugins: [vue()], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), diff --git a/package-lock.json b/package-lock.json index 55c5eb00..ddab635d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,9 @@ "backend", "frontend" ], + "dependencies": { + "vue-i18n": "^10.0.5" + }, "devDependencies": { "@eslint/compat": "^1.2.6", "@eslint/js": "^9.20.0", @@ -1469,6 +1472,50 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@intlify/core-base": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-10.0.5.tgz", + "integrity": "sha512-F3snDTQs0MdvnnyzTDTVkOYVAZOE/MHwRvF7mn7Jw1yuih4NrFYLNYIymGlLmq4HU2iIdzYsZ7f47bOcwY73XQ==", + "license": "MIT", + "dependencies": { + "@intlify/message-compiler": "10.0.5", + "@intlify/shared": "10.0.5" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/message-compiler": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-10.0.5.tgz", + "integrity": "sha512-6GT1BJ852gZ0gItNZN2krX5QAmea+cmdjMvsWohArAZ3GmHdnNANEcF9JjPXAMRtQ6Ux5E269ymamg/+WU6tQA==", + "license": "MIT", + "dependencies": { + "@intlify/shared": "10.0.5", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/shared": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-10.0.5.tgz", + "integrity": "sha512-bmsP4L2HqBF6i6uaMqJMcFBONVjKt+siGluRq4Ca4C0q7W2eMaVZr8iCgF9dKbcVXutftkC7D6z2SaSMmLiDyA==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -8836,6 +8883,26 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/vue-i18n": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-10.0.5.tgz", + "integrity": "sha512-9/gmDlCblz3i8ypu/afiIc/SUIfTTE1mr0mZhb9pk70xo2csHAM9mp2gdQ3KD2O0AM3Hz/5ypb+FycTj/lHlPQ==", + "license": "MIT", + "dependencies": { + "@intlify/core-base": "10.0.5", + "@intlify/shared": "10.0.5", + "@vue/devtools-api": "^6.5.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, "node_modules/vue-router": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz", diff --git a/package.json b/package.json index db7f5ba3..59b4cfe4 100644 --- a/package.json +++ b/package.json @@ -35,5 +35,8 @@ "eslint-config-prettier": "^10.0.1", "jiti": "^2.4.2", "typescript-eslint": "^8.24.1" + }, + "dependencies": { + "vue-i18n": "^10.0.5" } }