From a7735a7efd9968aae0390964dbc393256e4ec196 Mon Sep 17 00:00:00 2001 From: RushyBikki Date: Mon, 13 Oct 2025 19:05:03 -0500 Subject: [PATCH 01/11] detetes --- GithubManagement.ts | 2 +- assets/css/globals.css | 1 + assets/css/oldIndex.css | 368 -------- components/Navbar.vue | 1 + pages/Demographics.vue | 1466 +++++-------------------------- pages/login.vue | 46 + pages/projects.vue | 6 +- pages/students.vue | 2 +- pages/temp.vue | 38 + server/api/login/auth.login.ts | 0 server/api/login/auth.logout.ts | 0 stores/projectStore.ts | 2 + stores/studentStore.ts | 2 +- 13 files changed, 325 insertions(+), 1609 deletions(-) delete mode 100644 assets/css/oldIndex.css create mode 100644 pages/login.vue create mode 100644 pages/temp.vue create mode 100644 server/api/login/auth.login.ts create mode 100644 server/api/login/auth.logout.ts diff --git a/GithubManagement.ts b/GithubManagement.ts index 4da5fddd..805be594 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/login.vue b/pages/login.vue new file mode 100644 index 00000000..038878db --- /dev/null +++ b/pages/login.vue @@ -0,0 +1,46 @@ + + + + + + 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/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'; From fdb2bb4ad4b1d8eccceebbfed50abdad9a3be156 Mon Sep 17 00:00:00 2001 From: RushyBikki Date: Thu, 16 Oct 2025 15:30:55 -0500 Subject: [PATCH 02/11] login1 --- pages/index.vue | 2 +- pages/login.vue | 56 +++++++++++++++++++++++++++++++------------- prisma/schema.prisma | 9 +++++++ 3 files changed, 50 insertions(+), 17 deletions(-) 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 }}

+

{{ error }}

- - + 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 From d89dd126ee3cfd55f9bb4a7b093fd738adc14d6c Mon Sep 17 00:00:00 2001 From: RushyBikki Date: Thu, 16 Oct 2025 16:37:18 -0500 Subject: [PATCH 03/11] login2 --- pages/login.vue | 46 +++++++++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/pages/login.vue b/pages/login.vue index c70fbd35..7a1ac81e 100644 --- a/pages/login.vue +++ b/pages/login.vue @@ -1,11 +1,12 @@ @@ -53,18 +56,27 @@ useHead({ title: 'Login' }); const router = useRouter(); const form = reactive({ email: '', password: '' }); -//gpt const loading = ref(false); const error = ref(''); - - +const handleSubmit = async () => +{ + if (form.email === 'epics@utd.edu' && form.password === 'epicsrocks') + { + localStorage.setItem('isLoggedIn', 'true'); + router.push('/projects'); + } + else + { + // preserve the original behavior + alert('Invalid username or password'); + } +}; From 6550e0c85059dab03742a1111e2aa4a6fee46146 Mon Sep 17 00:00:00 2001 From: RushyBikki Date: Thu, 6 Nov 2025 15:42:27 -0600 Subject: [PATCH 04/11] api --- GithubManagement.ts | 2 +- pages/projects.vue | 3 --- prisma/dev.db | Bin 446464 -> 446464 bytes server/api/projects/[id].ts | 2 +- 4 files changed, 2 insertions(+), 5 deletions(-) diff --git a/GithubManagement.ts b/GithubManagement.ts index 805be594..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/pages/projects.vue b/pages/projects.vue index 05352dd4..41c170bd 100644 --- a/pages/projects.vue +++ b/pages/projects.vue @@ -91,13 +91,10 @@ import { onMounted, ref, computed } from 'vue'; import { FilterMatchMode } from '@primevue/core/api'; import type { ProjectType } from '@prisma/client'; -//import { XCircleIcon } from '@heroicons/vue/24/solid'; import { isEqual } from 'lodash'; import { capitalizeFirst } from '@/utils/index'; import type { ProjectWithSemestersAndPartner } from '~/server/api/projects/index.get'; import { stringifySemesters } from '~/server/services/semesterService'; -//import { faker } from '@faker-js/faker'; -//import {type ProjectStatus} from '@prisma/client'; useHead({ title: 'Projects' }); diff --git a/prisma/dev.db b/prisma/dev.db index eb19f7b5b309a055ca7130bb75c8586d65201511..2d3a3fe9c98b626b7bd75de800246a6dd4364b27 100644 GIT binary patch delta 623 zcma)&&1(};6vf}0-1)#v-jjkKX<9phB*dm8aq=~(qOmP#TPY$On4Q>Pl zd0??!bWsWAp$iSx=)#4K0cYE~5?2*myXfB_t^|Eeao@!~a2NO7bAGH9Vy)0-2roS! z7{^PU%G=k9O1BZ+?rNg=URO#nLu=xGCD>j@`bFDiEh}q zKyF-7m68;cW!rI_T0WIAtz6bN)74DY%vldS!>#4qE0mtGy|WkuYd zl4ZVMfQYxVh;QK&Dmg&(E`3H0JiUT{kmlcea{L(nYTQ@CJ)^bM3Kk=IsTJS%9h~5@ z0Z~bA^I-!lZ_$81z#k+a)?{15e0Kmx_?`t3T<6zfaGuW&i715_>;=#G89Ij;61@>& z1O-?C=}bq>{)UNJGi;2$X9e&BLWp^*)4)KY+Li)_fK%2IPwGmkRFY-ab(~Z(>zYo^ zUN+O#MMrSS2u!uKTT3R>R<*{%lS;IgLKk30PO3-xc>zGhX-}@eywCRr6?x||M7^iW zFoZ!K6#M$L2>Z>2QNJ&%mbu!1o4D*18=$D>A&+DHw(31_+JbQU@DS#;LH#y5t5p&G zL|uBCd?k;_NZ@B+GcczA(%*4|LBFI`MaQ`2RoCIS?-0NYzj|Ma@_mtKt-S$aWUsxU H+!_A|-NB=E delta 366 zcmYL_y-Pw-9EQ)i_jfEE__nB(ZiBbY9!SD_E7O6VXk2%t;Er z5xZd+f}(-{A}3=RY$NcojQCo^VJ2zdXAuoX1$f|F8hnFrfmv}#&`V}HTxy=_tUU)h zo@LVk2(d+Y;Y?9CWxd1l@;h~3~KLca~(jz<6KI?swlS5 z600A8pXYYKhf7yhh_})(;S|S}98yv@J@y|#m2aQImnbfP!KQYF0Ba{eKdI)yM&i}Hyb=EeWbkQY 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 From 7f70a4cb6a1ea0fbcbf0b330a9be09b4d8bc3b5e Mon Sep 17 00:00:00 2001 From: RushyBikki Date: Wed, 12 Nov 2025 20:08:15 -0600 Subject: [PATCH 05/11] c1 --- pages/login.vue | 4 ++-- pages/partners.vue | 18 +++++++----------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/pages/login.vue b/pages/login.vue index 7a1ac81e..003c14e7 100644 --- a/pages/login.vue +++ b/pages/login.vue @@ -5,7 +5,7 @@ - +
@@ -19,7 +19,7 @@ />
- +
- + + + 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 41c170bd..13230d62 100644 --- a/pages/projects.vue +++ b/pages/projects.vue @@ -88,7 +88,7 @@