-
Notifications
You must be signed in to change notification settings - Fork 1
feat: Web Dashboard Shell (Next.js 16, Tailwind v4, Discord OAuth2) #60
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
83 commits
Select commit
Hold shift + click to select a range
275f2c0
feat: add web dashboard shell with Next.js 16, Tailwind v4, Discord O…
BillChirico 94a7642
fix: add Discord token refresh logic in JWT callback
BillChirico f778664
fix: add rate limiting, bot API auth, and BOT_API_URL handling
BillChirico 7ad5a2a
fix: log errors and persist selected guild in server-selector
BillChirico 16cda88
fix: update Dockerfile for monorepo layout with proper lockfile handling
BillChirico 6671671
fix: use default export in proxy.ts for Next.js 16 detection
BillChirico ff66bab
docs: add BOT_API_SECRET to .env.example
BillChirico c2bfb38
test: update getMutualGuilds test for new unfiltered fallback behavior
BillChirico ab55240
fix(web): replace console.warn/error with logger utility
BillChirico 53ceb00
fix(web): fix Dockerfile paths for monorepo standalone output
BillChirico 15765c2
fix(web): graceful degradation when bot API is unreachable
BillChirico 8f45c86
docs: add JSDoc noting getUserAvatarUrl as public utility for future …
BillChirico e36c483
fix: use named proxy export for Next.js 16 convention
BillChirico 9f7ff8a
chore: update dependencies and package manager versions
BillChirico cca8abc
fix: security hardening — remove client token, validate secrets, add …
BillChirico a021b5e
fix: guild pagination, token refresh handling, health check, invite g…
BillChirico 3508d85
refactor: error boundaries, server component DashboardShell, empty state
BillChirico d24e2f4
test: comprehensive tests for refresh tokens, rate limits, proxy, mocks
BillChirico f0aacd6
refactor: extract getBotInviteUrl into shared utility with minimal pe…
BillChirico 56618d7
fix: read callbackUrl from searchParams in login page
BillChirico 3685bed
refactor: split discord.ts into server-only and client-safe modules
BillChirico 808d980
fix: add missing await to response.json() in fetchBotGuilds
BillChirico c30be52
fix: validate callbackUrl to prevent open redirect in login page
BillChirico b2a8cd8
fix: harden env file defaults — empty NEXTAUTH_SECRET, add BOT_API_SE…
BillChirico 73131ff
fix: improve Dockerfile — consolidate RUN, add --chown on public, add…
BillChirico fde9e9f
fix: proxy callbackUrl uses pathname, auth validates Discord creds, c…
BillChirico e43faeb
fix: component improvements — ErrorCard, global-error, login flash, l…
BillChirico a5ee59e
fix: BigInt try-catch in getUserAvatarUrl, add signal to getMutualGuilds
BillChirico 545784e
fix: improve test quality — vi.spyOn, env cleanup, fake timers, userE…
BillChirico 89f2498
fix: use asChild prop to avoid invalid button-inside-anchor HTML
BillChirico dc64788
fix: use structured logger instead of console.error in global-error
BillChirico 39e7832
fix: add defensive catch to fetchBotGuilds in Promise.all for gracefu…
BillChirico 3dcd6cd
fix: add build-time verification for standalone server.js path in Doc…
BillChirico 357ba27
fix: replace console.error with logger in error boundaries
BillChirico d5f23e6
fix: include root package.json in Dockerfile deps stage for pnpm lock…
BillChirico 70bd187
fix(web): remove unused Button import and rename error boundary
BillChirico cb8dc68
fix(web): harden auth — catch network errors, handle token refresh fa…
BillChirico 2aaee64
fix(web): simplify AbortController in server-selector
BillChirico 85ad19d
fix(web): improve discord.server.ts — caching, validation, discrimina…
BillChirico 4b236a2
fix(web): improve test assertions and mocking patterns
BillChirico cafaaea
test(web): update dashboard layout test for server-side auth check
BillChirico bd43742
fix: resolve RefreshTokenError race condition — single handler in Header
BillChirico cdf1161
fix: remove misplaced web/.dockerignore — root .dockerignore is used …
BillChirico 629800a
fix: force dynamic rendering for guilds API route — no user-scoped ca…
BillChirico 3f7052a
fix: guard against malformed retry-after header, remove unnecessary S…
BillChirico c90da47
fix: add explicit string cast for accessToken in guilds route
BillChirico fabf4a7
docs: add intentional console usage comment to web logger
BillChirico c033e53
fix: prevent error message leak in guilds API route
BillChirico 694f6c3
fix: add signingOut guard to prevent duplicate sign-outs
BillChirico 7e31e00
fix: add suppressHydrationWarning to global error boundary html tag
BillChirico abf5650
fix: remove unnecessary email scope from Discord OAuth
BillChirico 50bf40e
fix: use pattern matching for secret placeholder validation
BillChirico 71ec8c1
docs: add web dashboard section to README
BillChirico 548b11f
fix: add RefreshTokenError guard and AbortSignal to guilds route
BillChirico 566d50e
fix: harden dockerignore, JSON parsing, and remove unnecessary use cl…
BillChirico 578fb32
fix: improve server-selector empty state UX with invite CTA
BillChirico 2e927f4
test: improve header and auth test coverage
BillChirico 87af30f
test: add RefreshTokenError redirect test to proxy middleware
BillChirico d8e8509
refactor: remove unused getUserAvatarUrl (YAGNI)
BillChirico 059ce7c
fix: remove unnecessary suppressHydrationWarning from global-error
BillChirico 4633616
fix: add AbortSignal support to fetchBotGuilds and signal-aware rate …
BillChirico d08fd3d
fix: prevent aborted request from resetting loading state in server-s…
BillChirico d85a30d
fix: clean up abort listener on normal sleep resolve in fetchWithRate…
BillChirico 1288d98
fix: prevent infinite redirect loop on RefreshTokenError in login page
BillChirico 6bb1fde
feat: add /api/health endpoint for container health checks
BillChirico c2a1439
fix: document access token exclusion and verify BOT_PERMISSIONS value
BillChirico 0ec9d89
fix: add response validation, lang attr, and guild icon fallback
BillChirico bb4425a
fix: preserve query string in proxy redirect and validate refresh tok…
BillChirico 38c51ee
fix: handle 401 in server-selector and add unauthenticated header state
BillChirico a2bdaab
feat: add Content-Security-Policy header and fix global-error dark mode
BillChirico 7273ebc
refactor: clean up types, assertions, and fallbacks
BillChirico f06acfe
fix: update README scripts table — replace nonexistent pnpm lint with…
BillChirico c752959
test: simplify test imports and fix descriptions
BillChirico 09234c4
fix: remove CSP header to prevent Next.js hydration breakage
BillChirico d575442
fix: add Array.isArray guard to fetchUserGuilds and defensive expires…
BillChirico 0fe85b0
test: fix env pollution, add unauthenticated and skeleton assertions
BillChirico cdff4ec
fix: secure JWT accessToken handling and add refresh token guards
BillChirico d302bbb
fix: centralize RefreshTokenError handling in login page
BillChirico 61beeb6
fix: scope Discord CDN paths and add Dockerfile build context comment
BillChirico 50d1aa0
docs: document proxy.ts NextAuth v4 compat and verify health endpoint
BillChirico f572b00
test: add data-testid to header skeleton
BillChirico d9489c1
test: update login test for centralized RefreshTokenError handling
BillChirico 326e610
fix: correct guild default icon path and rename shadowed variable
BillChirico File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.