+ Visit vuejs.org to read the + documentation +
+ + + diff --git a/GUI/src/__tests__/App.spec.ts b/GUI/src/__tests__/App.spec.ts new file mode 100644 index 0000000..5b17801 --- /dev/null +++ b/GUI/src/__tests__/App.spec.ts @@ -0,0 +1,11 @@ +import { describe, it, expect } from 'vitest' + +import { mount } from '@vue/test-utils' +import App from '../App.vue' + +describe('App', () => { + it('mounts renders properly', () => { + const wrapper = mount(App) + expect(wrapper.text()).toContain('You did it!') + }) +}) diff --git a/GUI/src/css/global.css b/GUI/src/css/global.css new file mode 100644 index 0000000..e69de29 diff --git a/GUI/src/main.ts b/GUI/src/main.ts new file mode 100644 index 0000000..c09854a --- /dev/null +++ b/GUI/src/main.ts @@ -0,0 +1,15 @@ +import { createApp } from 'vue' +import App from './App.vue' +import router from './router' +import vuetify from './plugins/vuetify' + +// Global CSS +import "./css/global.css" + +const app = createApp(App) + +app.use(router) + +app.use(vuetify); + +app.mount('#app') diff --git a/GUI/src/plugins/vuetify.ts b/GUI/src/plugins/vuetify.ts new file mode 100644 index 0000000..ee1dc4a --- /dev/null +++ b/GUI/src/plugins/vuetify.ts @@ -0,0 +1,27 @@ +import 'vuetify/styles' +import '@fontsource/roboto/100.css' +import '@fontsource/roboto/300.css' +import '@fontsource/roboto/400.css' +import '@fontsource/roboto/500.css' +import '@fontsource/roboto/700.css' +import '@fontsource/roboto/900.css' +import { createVuetify } from 'vuetify' +import * as components from 'vuetify/components' +import * as directives from 'vuetify/directives' +import '@mdi/font/css/materialdesignicons.css' +import { aliases, mdi } from 'vuetify/iconsets/mdi' + +export default createVuetify({ + components, + directives, + theme: { + defaultTheme: 'dark', + }, + icons: { + defaultSet: 'mdi', + aliases, + sets: { + mdi, + }, + }, +}) diff --git a/GUI/src/router/index.ts b/GUI/src/router/index.ts new file mode 100644 index 0000000..e1eab52 --- /dev/null +++ b/GUI/src/router/index.ts @@ -0,0 +1,8 @@ +import { createRouter, createWebHistory } from 'vue-router' + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: [], +}) + +export default router diff --git a/GUI/tsconfig.app.json b/GUI/tsconfig.app.json new file mode 100644 index 0000000..913b8f2 --- /dev/null +++ b/GUI/tsconfig.app.json @@ -0,0 +1,12 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], + "exclude": ["src/**/__tests__/*"], + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/GUI/tsconfig.json b/GUI/tsconfig.json new file mode 100644 index 0000000..100cf6a --- /dev/null +++ b/GUI/tsconfig.json @@ -0,0 +1,14 @@ +{ + "files": [], + "references": [ + { + "path": "./tsconfig.node.json" + }, + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.vitest.json" + } + ] +} diff --git a/GUI/tsconfig.node.json b/GUI/tsconfig.node.json new file mode 100644 index 0000000..a83dfc9 --- /dev/null +++ b/GUI/tsconfig.node.json @@ -0,0 +1,19 @@ +{ + "extends": "@tsconfig/node22/tsconfig.json", + "include": [ + "vite.config.*", + "vitest.config.*", + "cypress.config.*", + "nightwatch.conf.*", + "playwright.config.*", + "eslint.config.*" + ], + "compilerOptions": { + "noEmit": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + + "module": "ESNext", + "moduleResolution": "Bundler", + "types": ["node"] + } +} diff --git a/GUI/tsconfig.vitest.json b/GUI/tsconfig.vitest.json new file mode 100644 index 0000000..7d1d8ce --- /dev/null +++ b/GUI/tsconfig.vitest.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.app.json", + "include": ["src/**/__tests__/*", "env.d.ts"], + "exclude": [], + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.vitest.tsbuildinfo", + + "lib": [], + "types": ["node", "jsdom"] + } +} diff --git a/GUI/vite.config.ts b/GUI/vite.config.ts new file mode 100644 index 0000000..4217010 --- /dev/null +++ b/GUI/vite.config.ts @@ -0,0 +1,18 @@ +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(), + ], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + }, + }, +}) diff --git a/GUI/vitest.config.ts b/GUI/vitest.config.ts new file mode 100644 index 0000000..c328717 --- /dev/null +++ b/GUI/vitest.config.ts @@ -0,0 +1,14 @@ +import { fileURLToPath } from 'node:url' +import { mergeConfig, defineConfig, configDefaults } from 'vitest/config' +import viteConfig from './vite.config' + +export default mergeConfig( + viteConfig, + defineConfig({ + test: { + environment: 'jsdom', + exclude: [...configDefaults.exclude, 'e2e/**'], + root: fileURLToPath(new URL('./', import.meta.url)), + }, + }), +) diff --git a/JudoWeb.sln b/JudoWeb.sln new file mode 100644 index 0000000..0cbf2db --- /dev/null +++ b/JudoWeb.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36518.9 d17.14 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "API", "API\API.csproj", "{98166726-DC3A-4D5B-889A-8B4428E28656}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {98166726-DC3A-4D5B-889A-8B4428E28656}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {98166726-DC3A-4D5B-889A-8B4428E28656}.Debug|Any CPU.Build.0 = Debug|Any CPU + {98166726-DC3A-4D5B-889A-8B4428E28656}.Release|Any CPU.ActiveCfg = Release|Any CPU + {98166726-DC3A-4D5B-889A-8B4428E28656}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {935585D7-8CCC-4F2C-A3B3-1504EB88C0FE} + EndGlobalSection +EndGlobal