Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
737382a
page for verification, frontend see frontend/src/components/Login.vue…
Sep 4, 2025
d94b20a
fix:update with latest dev
A-lexisL Sep 5, 2025
5d797f8
fix: config files(webhook excluded)
A-lexisL Sep 6, 2025
3ecf93e
feat: oauth config and initiate
A-lexisL Sep 7, 2025
cc4f849
refactor: mv helpers to utils.py and improve return
A-lexisL Sep 12, 2025
9d642bf
refactor: mv config into development.yaml and fix some cq
A-lexisL Sep 12, 2025
b9830d9
refactor: apart signup and reset_password
A-lexisL Sep 17, 2025
64e50f4
feat: add frontend for authorization
4rthurCai Sep 17, 2025
9ded4cc
fix: rm reset action
A-lexisL Sep 17, 2025
7f91d50
fix: fix failure in auth and refactor code for better cq
4rthurCai Sep 18, 2025
2203835
fix: reset password failure
4rthurCai Sep 18, 2025
df8ba5a
fix: multiple login methods
4rthurCai Sep 18, 2025
4da2631
fix: fix redirect interval and turnstile
4rthurCai Sep 18, 2025
147ef80
fix: fix user icon after login
4rthurCai Sep 18, 2025
f5ec340
fix: delete debug logging
4rthurCai Sep 18, 2025
742e8bd
fix: add turnstile for password login
A-lexisL Sep 19, 2025
69e20fd
refactor: frontend
4rthurCai Sep 22, 2025
9e42aae
refactor: layout and view
4rthurCai Sep 22, 2025
47a30d6
fix: filter box placeholder position
4rthurCai Sep 22, 2025
e2c4b0f
chore(frontend): Setup prettier
PACHAKUTlQ Sep 23, 2025
774ca71
chore(frontend): Setup eslint
PACHAKUTlQ Sep 23, 2025
693e726
style(frontend): Format frontend using prettier
PACHAKUTlQ Sep 23, 2025
666450b
chore(frontend): Disable linting in TailwindPlus dir
PACHAKUTlQ Sep 23, 2025
92b9f68
chore(frontend): Update dependencies
PACHAKUTlQ Sep 23, 2025
7c6513f
fix: cq
4rthurCai Sep 23, 2025
9d56ed1
fix: fix error in comment without logging
4rthurCai Sep 23, 2025
7a71ce5
fix: frontend cq
4rthurCai Sep 23, 2025
d60cf07
refactor: reset password and signup
4rthurCai Sep 23, 2025
5820a7f
refactor: refactor frontend
4rthurCai Sep 25, 2025
5f6586c
fix: password strength, otp digit-only
A-lexisL Sep 26, 2025
e0b4455
Merge pull request #11 from Tech-JI/fix/auth
PACHAKUTlQ Sep 26, 2025
35b6db9
chore!: Update .gitignore
PACHAKUTlQ Sep 28, 2025
5459e05
Merge pull request #1 from Tech-JI/chore/git
PACHAKUTlQ Sep 28, 2025
02a77c2
docs: Add README.md to refer to main repo docs
PACHAKUTlQ Sep 28, 2025
4266d19
Merge branch 'dev' into auth
PACHAKUTlQ Sep 30, 2025
7c02ea9
chore: Add bun.lock
PACHAKUTlQ Sep 30, 2025
62a1009
chore: Update dependencies
PACHAKUTlQ Sep 30, 2025
120f68f
refactor(auth)!: Auth core logic
PACHAKUTlQ Oct 1, 2025
11db41b
refactor(auth)!: Turnstile widget
PACHAKUTlQ Oct 1, 2025
b00c5c1
refactor(auth)!: Auth initiate component
PACHAKUTlQ Oct 1, 2025
828b0d7
refactor(auth)!: Callback page component
PACHAKUTlQ Oct 1, 2025
967c460
refactor(auth)!: Set password component
PACHAKUTlQ Oct 1, 2025
5b0b2f6
refactor(auth)!: Signup page
PACHAKUTlQ Oct 1, 2025
81d6093
refactor(auth)!: Reset password page
PACHAKUTlQ Oct 1, 2025
463d265
refactor(auth)!: Login page
PACHAKUTlQ Oct 1, 2025
52ff870
feat(auth): Helper for dispatching auth state changes
PACHAKUTlQ Oct 1, 2025
d806f15
feat(auth): Support notifying auth state change
PACHAKUTlQ Oct 1, 2025
8e3f9e3
fix(auth)!: Remove unused AuthFlow.vue
PACHAKUTlQ Oct 1, 2025
0dfe0f1
feat: Change name to GC Atlas
PACHAKUTlQ Oct 14, 2025
28932c8
feat: Add logo and state coming soon
PACHAKUTlQ Oct 15, 2025
6c56abf
ci!: Migrate to oxlint and oxfmt
PACHAKUTlQ Oct 17, 2025
bf58256
ci!: Remove prettier and eslint config
PACHAKUTlQ Oct 17, 2025
5f5e33f
ci!: Add oxlint config
PACHAKUTlQ Oct 18, 2025
0e5b777
chore: Update packages
PACHAKUTlQ Oct 19, 2025
00b2b3a
chore: Update oxc in bun.lock
PACHAKUTlQ Oct 19, 2025
464bd99
Merge pull request #2 from Tech-JI/ci/oxc
PACHAKUTlQ Oct 30, 2025
b0538e2
fix(auth)!: Use `/api/auth/init` instead of `/api/auth/initiate` to m…
PACHAKUTlQ Dec 23, 2025
4362d97
refactor: add a new PasswordInput component and add display/hide button
A-lexisL Jan 17, 2026
d8e13c5
feat: solve some ux issues and rm old accounts/xxx url
A-lexisL Jan 17, 2026
7315af3
Merge remote-tracking branch 'origin/dev' into auth
A-lexisL Jan 17, 2026
ea1d14b
fix: rm redundant info
A-lexisL Jan 17, 2026
9007adf
fix: use env variables for time-out consts instead of hardcoded, add …
A-lexisL Jan 19, 2026
ac7572a
fix: add try-catch for json parsing, add accessible label for passwor…
A-lexisL Jan 19, 2026
8c9b0a9
fix: turnstile only loads script once
A-lexisL Jan 19, 2026
3cfa71a
fix: turnstile rm listener
A-lexisL Jan 19, 2026
c79a5e0
Merge pull request #4 from Tech-JI/auth
PACHAKUTlQ Jan 20, 2026
7d9dd08
format: add .exfmtrc.json
A-lexisL Jan 20, 2026
8794f9f
format: run oxfmt
A-lexisL Jan 20, 2026
8eecdd0
chore: add pre-commit config
A-lexisL Jan 20, 2026
c06da78
build: add prek dev-dep
A-lexisL Jan 20, 2026
5b3dff9
chore: rm yaml check
A-lexisL Jan 20, 2026
b7e9125
chore: use remote oxlint repo
A-lexisL Jan 20, 2026
853b69a
chore(env): update env example
4rthurCai Dec 8, 2025
dfd9a95
chore(package): update package json
4rthurCai Dec 8, 2025
f95b6da
fix: update vue scripts to adapt backend and fix requests
4rthurCai Dec 8, 2025
58f9f6b
fix: update jsons for api usage
4rthurCai Dec 8, 2025
c5715e2
fix: calculate course list total_pages, rename filter param num_revie…
A-lexisL Jan 20, 2026
b05eb18
fix: change fetch to apiFetch for auth apis
A-lexisL Jan 21, 2026
5b355d5
refactor: move auth api wrappers from utils/ to composables/useAuth.js
A-lexisL Jan 21, 2026
34bd1fb
chore: update deps to latest version
A-lexisL Jan 21, 2026
4f5081a
Merge pull request #8 from Tech-JI/chore/pre-commit-hook
A-lexisL Jan 21, 2026
5646dd6
refactor: mv api call of landing to src/composables/useLanding.js
A-lexisL Jan 21, 2026
3bddc17
refactor: mv api call of coursedetail to src/composables/useCourses.js
A-lexisL Jan 21, 2026
5e22464
refactor: mv api call of course review search to src/composables/useR…
A-lexisL Jan 21, 2026
774f01a
Merge remote-tracking branch 'origin/dev' into fix/fetch
A-lexisL Jan 21, 2026
9fea7c1
fix: correctly handles POST review response(temp solution)
A-lexisL Jan 21, 2026
4c5142d
chore: rm unused dev dep
A-lexisL Jan 21, 2026
86eb459
fix: make copilot happy
A-lexisL Jan 21, 2026
a493f33
fix: add consistent pl-3
A-lexisL Jan 21, 2026
a313364
fix: frontend handles CourseDetail updates instead of refetching backend
A-lexisL Jan 22, 2026
9b97ac5
fix: rm duplicate fetchReview on mount
A-lexisL Jan 22, 2026
50038f0
refactor: rm custom event, make isAuthenticated global status(rw in u…
A-lexisL Jan 22, 2026
b6739e3
chore: update prek to 0.3 and add language: bun
A-lexisL Jan 22, 2026
504d0aa
Merge pull request #10 from Tech-JI/chore/pre-commit-hook-0.3
A-lexisL Jan 22, 2026
74d8e0b
Merge branch 'dev' into fix/fetch
A-lexisL Jan 22, 2026
24c7199
fix(auth): Clear `localStorage` states when logged in
PACHAKUTlQ Jan 27, 2026
047c379
fix(review): Fix initial auth error at review fetch
PACHAKUTlQ Jan 27, 2026
0a331d1
Merge pull request #6 from Tech-JI/fix/fetch
A-lexisL May 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# the env variable used for vite-processed frontend should begin with `VITE_`
VITE_TURNSTILE_SITE_KEY=0x4AAAAAABz2ci0ZN9OaO-dg
VITE_AUTH_OTP_TIMEOUT=120
VITE_AUTH_TEMP_TOKEN_TIMEOUT=600
VITE_API_BASE_URL=
147 changes: 132 additions & 15 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,138 @@ logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# Snowpack dependency directory (https://snowpack.dev/)
web_modules/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional stylelint cache
.stylelintcache

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variable files
.env
.env.*
!.env.example

# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache

# Next.js build output
.next
out

# Nuxt.js build / generate output
.nuxt
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
.output

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# vuepress v2.x temp and cache directory
.temp
.cache

# Sveltekit cache directory
.svelte-kit/

# vitepress build output
**/.vitepress/dist

# vitepress cache directory
**/.vitepress/cache

# Docusaurus cache and generated files
.docusaurus

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# Firebase cache directory
.firebase/

# TernJS port file
.tern-port

# Stores VSCode versions used for testing VSCode extensions
.vscode-test

# yarn v3
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions

# Vite files
vite.config.js.timestamp-*
vite.config.ts.timestamp-*
.vite/
24 changes: 24 additions & 0 deletions .oxfmtrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"printWidth": 80,
"tabWidth": 2,
"useTabs": false,
"semi": true,
"singleQuote": false,
"quoteProps": "as-needed",
"jsxSingleQuote": false,
"trailingComma": "all",
"bracketSpacing": true,
"objectWrap": "preserve",
"bracketSameLine": false,
"arrowParens": "always",
"requirePragma": false,
"insertPragma": false,
"checkIgnorePragma": false,
"proseWrap": "preserve",
"htmlWhitespaceSensitivity": "css",
"vueIndentScriptAndStyle": false,
"endOfLine": "lf",
"embeddedLanguageFormatting": "auto",
"singleAttributePerLine": false,
"plugins": []
}
139 changes: 139 additions & 0 deletions .oxlintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"plugins": ["unicorn", "typescript", "oxc"],
"categories": {},
"rules": {
"for-direction": "warn",
"no-async-promise-executor": "warn",
"no-caller": "warn",
"no-class-assign": "warn",
"no-compare-neg-zero": "warn",
"no-cond-assign": "warn",
"no-const-assign": "warn",
"no-constant-binary-expression": "warn",
"no-constant-condition": "warn",
"no-control-regex": "warn",
"no-debugger": "warn",
"no-delete-var": "warn",
"no-dupe-class-members": "warn",
"no-dupe-else-if": "warn",
"no-dupe-keys": "warn",
"no-duplicate-case": "warn",
"no-empty-character-class": "warn",
"no-empty-pattern": "warn",
"no-empty-static-block": "warn",
"no-eval": "warn",
"no-ex-assign": "warn",
"no-extra-boolean-cast": "warn",
"no-func-assign": "warn",
"no-global-assign": "warn",
"no-import-assign": "warn",
"no-invalid-regexp": "warn",
"no-irregular-whitespace": "warn",
"no-loss-of-precision": "warn",
"no-new-native-nonconstructor": "warn",
"no-nonoctal-decimal-escape": "warn",
"no-obj-calls": "warn",
"no-self-assign": "warn",
"no-setter-return": "warn",
"no-shadow-restricted-names": "warn",
"no-sparse-arrays": "warn",
"no-this-before-super": "warn",
"no-unassigned-vars": "warn",
"no-unsafe-finally": "warn",
"no-unsafe-negation": "warn",
"no-unsafe-optional-chaining": "warn",
"no-unused-expressions": "warn",
"no-unused-labels": "warn",
"no-unused-private-class-members": "warn",
"no-unused-vars": "warn",
"no-useless-backreference": "warn",
"no-useless-catch": "warn",
"no-useless-escape": "warn",
"no-useless-rename": "warn",
"no-with": "warn",
"require-yield": "warn",
"use-isnan": "warn",
"valid-typeof": "warn",
"oxc/bad-array-method-on-arguments": "warn",
"oxc/bad-char-at-comparison": "warn",
"oxc/bad-comparison-sequence": "warn",
"oxc/bad-min-max-func": "warn",
"oxc/bad-object-literal-comparison": "warn",
"oxc/bad-replace-all-arg": "warn",
"oxc/const-comparisons": "warn",
"oxc/double-comparisons": "warn",
"oxc/erasing-op": "warn",
"oxc/missing-throw": "warn",
"oxc/number-arg-out-of-range": "warn",
"oxc/only-used-in-recursion": "warn",
"oxc/uninvoked-array-callback": "warn",
"typescript/await-thenable": "warn",
"typescript/no-array-delete": "warn",
"typescript/no-base-to-string": "warn",
"typescript/no-duplicate-enum-values": "warn",
"typescript/no-duplicate-type-constituents": "warn",
"typescript/no-extra-non-null-assertion": "warn",
"typescript/no-floating-promises": "warn",
"typescript/no-for-in-array": "warn",
"typescript/no-implied-eval": "warn",
"typescript/no-meaningless-void-operator": "warn",
"typescript/no-misused-new": "warn",
"typescript/no-misused-spread": "warn",
"typescript/no-non-null-asserted-optional-chain": "warn",
"typescript/no-redundant-type-constituents": "warn",
"typescript/no-this-alias": "warn",
"typescript/no-unnecessary-parameter-property-assignment": "warn",
"typescript/no-unsafe-declaration-merging": "warn",
"typescript/no-unsafe-unary-minus": "warn",
"typescript/no-useless-empty-export": "warn",
"typescript/no-wrapper-object-types": "warn",
"typescript/prefer-as-const": "warn",
"typescript/require-array-sort-compare": "warn",
"typescript/restrict-template-expressions": "warn",
"typescript/triple-slash-reference": "warn",
"typescript/unbound-method": "warn",
"unicorn/no-await-in-promise-methods": "warn",
"unicorn/no-empty-file": "warn",
"unicorn/no-invalid-fetch-options": "warn",
"unicorn/no-invalid-remove-event-listener": "warn",
"unicorn/no-new-array": "warn",
"unicorn/no-single-promise-in-promise-methods": "warn",
"unicorn/no-thenable": "warn",
"unicorn/no-unnecessary-await": "warn",
"unicorn/no-useless-fallback-in-spread": "warn",
"unicorn/no-useless-length-check": "warn",
"unicorn/no-useless-spread": "warn",
"unicorn/prefer-set-size": "warn",
"unicorn/prefer-string-starts-ends-with": "warn"
},
"settings": {
"jsx-a11y": {
"polymorphicPropName": null,
"components": {},
"attributes": {}
},
"next": {
"rootDir": []
},
"react": {
"formComponents": [],
"linkComponents": []
},
"jsdoc": {
"ignorePrivate": false,
"ignoreInternal": false,
"ignoreReplacesDocs": true,
"overrideReplacesDocs": true,
"augmentsExtendsReplacesDocs": false,
"implementsReplacesDocs": false,
"exemptDestructuredRootsFromChecks": false,
"tagNamePreference": {}
}
},
"env": {
"builtin": true
},
"globals": {},
"ignorePatterns": ["dist", "node_modules", "TailwindPlus"]
}
24 changes: 24 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-added-large-files

- repo: https://github.com/oxc-project/mirrors-oxlint
rev: v1.41.0
hooks:
- id: oxlint
name: oxlint
language: bun
verbose: true
types_or: [javascript, jsx, ts, tsx, vue]

- repo: local
hooks:
- id: oxfmt
name: oxfmt
entry: bun run format
language: system
types_or: [javascript, jsx, ts, tsx, vue]
12 changes: 12 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Build artifacts
dist
.turbo

# Dependencies
node_modules
TailwindPlus

# Environment files
.env
.env.*
!.env.example
Loading