diff --git a/GithubManagement.ts b/GithubManagement.ts index 4da5fddd..0834a86e 100644 --- a/GithubManagement.ts +++ b/GithubManagement.ts @@ -1,4 +1,4 @@ -import { Octokit } from "@octokit/rest"; +//import { Octokit } from "@octokit/rest"; import * as dotenv from "dotenv"; import * as fs from "fs"; import * as readline from "readline"; diff --git a/assets/css/globals.css b/assets/css/globals.css index a98da566..99046d83 100644 --- a/assets/css/globals.css +++ b/assets/css/globals.css @@ -1,3 +1,4 @@ + @tailwind base; @tailwind components; @tailwind utilities; diff --git a/assets/css/oldIndex.css b/assets/css/oldIndex.css deleted file mode 100644 index 91636014..00000000 --- a/assets/css/oldIndex.css +++ /dev/null @@ -1,368 +0,0 @@ -/* -99% of this file is unused, so I'm copying the other 1% to -assets/css/globals.css and removing this from nuxt.config.ts for now. -*/ - -@import url('https: //fonts.googleapis.com/css2?family=Happy+Monkey&family=Jura:wght@300..700&family=Open+Sans&display=swap'); -@tailwind base; -@tailwind components; -@tailwind utilities; - -* { - font-family: 'Jura', Arial, sans-serif; -} - -:root { - --max-width: 1100px; - --border-radius: 12px; - --font-mono: ui-monospace, Menlo, Monaco, 'Cascadia Mono', 'Segoe UI Mono', 'Roboto Mono', 'Oxygen Mono', 'Ubuntu Monospace', 'Source Code Pro', 'Fira Mono', 'Droid Sans Mono', 'Courier New', monospace; - --foreground-rgb: 0, 0, 0; - --background-start-rgb: 250, 109, 34; - --background-end-rgb: 0, 128, 0; - --primary-glow: conic-gradient(from 180deg at 50% 50%, #16abff33 0deg, #0885ff33 55deg, #54d6ff33 120deg, #0071ff33 160deg, transparent 360deg); - --secondary-glow: radial-gradient(rgba(255, 255, 255, 1), rgba(255, 255, 255, 0)); - --tile-start-rgb: 239, 245, 249; - --tile-end-rgb: 228, 232, 233; - --tile-border: conic-gradient(#00000080, #00000040, #00000030, #00000020, #00000010, #00000010, #00000080); - --callout-rgb: 238, 240, 241; - --callout-border-rgb: 172, 175, 176; - --card-rgb: 180, 185, 188; - --card-border-rgb: 131, 134, 135; -} - -@media (prefers-color-scheme: dark) { - :root { - --foreground-rgb: 255, 255, 255; - --background-start-rgb: 0, 0, 0; - --background-end-rgb: 0, 0, 0; - --primary-glow: radial-gradient(rgba(1, 65, 255, 0.4), rgba(1, 65, 255, 0)); - --secondary-glow: linear-gradient(to bottom right, rgba(1, 65, 255, 0), rgba(1, 65, 255, 0), rgba(1, 65, 255, 0.3)); - --tile-start-rgb: 2, 13, 46; - --tile-end-rgb: 2, 5, 19; - --tile-border: conic-gradient(#ffffff80, #ffffff40, #ffffff30, #ffffff20, #ffffff10, #ffffff10, #ffffff80); - --callout-rgb: 20, 20, 20; - --callout-border-rgb: 108, 108, 108; - --card-rgb: 100, 100, 100; - --card-border-rgb: 200, 200, 200; - } - - .logo { - filter: invert(1) drop-shadow(0 0 0.3rem #ffffff70); - } -} - -* { - box-sizing: border-box; - padding: 0; - margin: 0; -} - -html, -body { - max-width: 100vw; - height: 100vh; - overflow-x: hidden; -} - -body { - color: rgb(var(--foreground-rgb)); - background: linear-gradient(to bottom, rgba(94, 250, 91, 0.758), #A0DAE7); - height: 100vh; -} - -.greyTransparentBackground { - background-color: rgba(90, 91, 88, 0.5); -} - -a { - color: inherit; - text-decoration: none; -} - -.main { - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: center; - padding: 6rem; - min-height: 100vh; -} - -.description { - display: inherit; - justify-content: inherit; - align-items: inherit; - font-size: 0.85rem; - max-width: var(--max-width); - width: 100%; - z-index: 2; - font-family: var(--font-mono); -} - -.description a { - display: flex; - justify-content: center; - align-items: center; - gap: 0.5rem; -} - -.description p { - position: relative; - margin: 0; - padding: 1rem; - background-color: rgba(var(--callout-rgb), 0.5); - border: 1px solid rgba(var(--callout-border-rgb), 0.3); - border-radius: var(--border-radius); -} - -.code { - font-weight: 700; - font-family: var(--font-mono); -} - -.grid { - display: grid; - grid-template-columns: repeat(4, minmax(25%, auto)); - max-width: 100%; - width: var(--max-width); -} - -.card { - padding: 1rem 1.2rem; - border-radius: var(--border-radius); - background: rgba(var(--card-rgb), 0); - border: 1px solid rgba(var(--card-border-rgb), 0); - transition: background 200ms, border 200ms; -} - -.card span { - display: inline-block; - transition: transform 200ms; -} - -.card h2 { - font-weight: 600; - margin-bottom: 0.7rem; -} - -.card p { - margin: 0; - opacity: 0.6; - font-size: 0.9rem; - line-height: 1.5; - max-width: 30ch; -} - -.center { - display: flex; - justify-content: center; - align-items: center; - position: relative; - padding: 4rem 0; -} - -.center::before { - background: var(--secondary-glow); - border-radius: 50%; - width: 480px; - height: 360px; - margin-left: -400px; -} - -.center::after { - background: var(--primary-glow); - width: 240px; - height: 180px; - z-index: -1; -} - -.center::before, -.center::after { - content: ''; - left: 50%; - position: absolute; - filter: blur(45px); - transform: translateZ(0); -} - -.logo { - position: relative; -} - -@media (hover: hover) and (pointer: fine) { - .card:hover { - background: rgba(var(--card-rgb), 0.1); - border: 1px solid rgba(var(--card-border-rgb), 0.15); - } - - .card:hover span { - transform: translateX(4px); - } -} - -@media (prefers-reduced-motion) { - .card:hover span { - transform: none; - } -} - -@media (min-width: 701px) and (max-width: 1120px) { - .grid { - grid-template-columns: repeat(2, 50%); - } -} - -.container { - max-width: 360px; - margin: 200px auto 0 auto; - padding: 2rem; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); - border-radius: 8px; - background-color: rgba(131, 131, 131, 0.49); - font-family: 'Jura', Arial, sans-serif; -} - -.form { - display: flex; - flex-direction: column; -} - -.heading { - text-align: center; -} - -.inputGroup { - margin-bottom: 1rem; -} - -.inputGroup label { - display: block; - margin-bottom: 5px; -} - -.inputGroup input { - width: 100%; - padding: 8px; - border: 1px solid #1a0404; - border-radius: 4px; -} - -.button { - background-color: #7feec7; - color: rgb(255, 255, 255); - border: none; - padding: 10px; - border-radius: 4px; - cursor: pointer; - font-size: 1rem; -} - -.button:hover { - background-color: rgba(48, 100, 162, 0.29); -} - -.text { - text-align: center; - margin-top: 1rem; -} - -.link { - color: #087bfd; - text-decoration: none; -} - -.link:hover { - text-decoration: underline; -} - - -.backgroundFont { - font-family: 'Jura', Arial, sans-serif; -} - - - - -@media (max-width: 700px) { - .content { - padding: 4rem; - } - - .grid { - grid-template-columns: 1fr; - margin-bottom: 120px; - max-width: 320px; - text-align: center; - } - - .card { - padding: 1rem 2.5rem; - } - - .card h2 { - margin-bottom: 0.5rem; - } - - .center { - padding: 8rem 0 6rem; - } - - .center::before { - transform: none; - height: 300px; - } - - .description { - font-size: 0.8rem; - } - - .description a { - padding: 1rem; - } - - .description p, - .description div { - display: flex; - justify-content: center; - position: fixed; - width: 100%; - } - - .description p { - align-items: center; - inset: 0 0 auto; - padding: 2rem 1rem 1.4rem; - border-radius: 0; - border: none; - border-bottom: 1px solid rgba(var(--callout-border-rgb), 0.25); - background: linear-gradient(to bottom, rgba(var(--background-start-rgb), 1), rgba(var(--callout-rgb), 0.5)); - background-clip: padding-box; - backdrop-filter: blur(24px); - } - - .description div { - align-items: flex-end; - pointer-events: none; - inset: auto 0 0; - padding: 2rem; - height: 200px; - background: linear-gradient(to bottom, transparent 0%, rgb(var(--background-end-rgb)) 40%); - z-index: 1; - } -} - -.backgroundFont, -::placeholder { - font-family: 'Jura', Arial, sans-serif; -} - - -@keyframes rotate { - from { - transform: rotate(360deg); - } - - to { - transform: rotate(0deg); - } -} \ No newline at end of file diff --git a/components/Navbar.vue b/components/Navbar.vue index 7ed225b7..b692276c 100644 --- a/components/Navbar.vue +++ b/components/Navbar.vue @@ -8,6 +8,7 @@ NuxtLink(to="/students") Students NuxtLink(to="/generate-teams") Generate Teams NuxtLink(to="/demographics") Demographics + NuxtLink(to="/login") Login .mt-auto.flex.flex-col.gap-y-4 NuxtLink(to="https://discord.gg/UyPg3ykKq3") img.size-8(alt="Discord Logo" src="/discord.svg") diff --git a/pages/Demographics.vue b/pages/Demographics.vue index dc98069f..b0d05fe5 100644 --- a/pages/Demographics.vue +++ b/pages/Demographics.vue @@ -1,1276 +1,272 @@ - - + + \ No newline at end of file + \ No newline at end of file diff --git a/pages/generate-teams.vue b/pages/generate-teams.vue index 259a11ac..0759dd7f 100644 --- a/pages/generate-teams.vue +++ b/pages/generate-teams.vue @@ -12,13 +12,14 @@ import type { Semester } from '@prisma/client'; import type { ProjectWithSemesters } from '~/server/api/projects/index.get'; import type { StudentWithChoices } from '~/server/api/students/index.get'; +import { onMounted } from 'vue'; useHead({ title: 'Generate Teams' }); const semesters = ref([]); const projects = ref([]); const students = ref([]); - +//keep onMounted(async () => { fetchSemesters(); fetchProjects(); diff --git a/pages/index.vue b/pages/index.vue index b9608409..0e8be917 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -5,7 +5,7 @@ import { useRouter } from 'vue-router' const router = useRouter(); -router.push('/projects'); +router.push('/login'); + + +
+
+ + +
+ + +
+ + +
+ +

{{ error }}

+ + +
+ + + + + + diff --git a/pages/partners.vue b/pages/partners.vue index 91cf285f..457dbb9b 100644 --- a/pages/partners.vue +++ b/pages/partners.vue @@ -41,50 +41,53 @@ - + + + const helpInfo = `Upload partner contact and organization information here.`; + + - \ No newline at end of file + diff --git a/pages/projects.vue b/pages/projects.vue index 09bc805d..13230d62 100644 --- a/pages/projects.vue +++ b/pages/projects.vue @@ -88,24 +88,22 @@ + + diff --git a/prisma/dev.db b/prisma/dev.db index eb19f7b5..2d3a3fe9 100644 Binary files a/prisma/dev.db and b/prisma/dev.db differ diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 9cf6bb37..7987082a 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -31,6 +31,15 @@ model Partner { @@map("partners") } +model Login +{ + id String @id @default(uuid()) + name String + password String + @@map("logins") + +} + model Project { id String @id @default(uuid()) name String diff --git a/server/api/login/auth.login.ts b/server/api/login/auth.login.ts new file mode 100644 index 00000000..e69de29b diff --git a/server/api/login/auth.logout.ts b/server/api/login/auth.logout.ts new file mode 100644 index 00000000..e69de29b diff --git a/server/api/projects/[id].ts b/server/api/projects/[id].ts index cca7901a..73dc6902 100644 --- a/server/api/projects/[id].ts +++ b/server/api/projects/[id].ts @@ -28,4 +28,4 @@ export default defineEventHandler(async (event) => { case 'DELETE': return project.delete({ where: { id } }); } -}); +}); \ No newline at end of file diff --git a/stores/projectStore.ts b/stores/projectStore.ts index 821b3b97..4b161484 100644 --- a/stores/projectStore.ts +++ b/stores/projectStore.ts @@ -1,3 +1,4 @@ +/* import { defineStore } from 'pinia' import { Project } from '../types' import { createRandomProjects } from '../server/factories/project' @@ -49,3 +50,4 @@ export const useProjectStore = defineStore('projectStore', { }, } }) +*/ \ No newline at end of file diff --git a/stores/studentStore.ts b/stores/studentStore.ts index 85f036e8..05ce8750 100644 --- a/stores/studentStore.ts +++ b/stores/studentStore.ts @@ -1,4 +1,4 @@ -import { defineStore } from 'pinia' +/*import { defineStore } from 'pinia' import { createRandomStudents } from '../server/factories/student' import type { Student } from '@prisma/client';