strat-gameplay-webapp/frontend-sba/composables/useApiUrl.ts
Cal Corum e0c12467b0 CLAUDE: Improve UX with single-click OAuth, enhanced games list, and layout fix
Frontend UX improvements:
- Single-click Discord OAuth from home page (no intermediate /auth page)
- Auto-redirect authenticated users from home to /games
- Fixed Nuxt layout system - app.vue now wraps NuxtPage with NuxtLayout
- Games page now has proper card container with shadow/border styling
- Layout header includes working logout with API cookie clearing

Games list enhancements:
- Display team names (lname) instead of just team IDs
- Show current score for each team
- Show inning indicator (Top/Bot X) for active games
- Responsive header with wrapped buttons on mobile

Backend improvements:
- Added team caching to SbaApiClient (1-hour TTL)
- Enhanced GameListItem with team names, scores, inning data
- Games endpoint now enriches response with SBA API team data

Docker optimizations:
- Optimized Dockerfile using --chown flag on COPY (faster than chown -R)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 16:14:00 -06:00

17 lines
437 B
TypeScript

/**
* Returns the appropriate API URL based on context:
* - Server-side (SSR): Uses internal Docker network URL
* - Client-side: Uses public URL
*/
export function useApiUrl(): string {
const config = useRuntimeConfig()
if (import.meta.server) {
// Server-side: use internal URL for Docker networking
return config.apiUrlInternal as string
}
// Client-side: use public URL
return config.public.apiUrl as string
}