Files
Job-Info-Prod/CHANGELOG_SESSION.md
T
2026-01-01 16:46:29 +00:00

2.4 KiB

Session Changelog - January 1, 2026

Production Setup Session

What Was Done

  1. Backend Setup

    • Copied working server.ts from Job-Info-Test
    • Added redis-cache.ts for Valkey/Redis caching
    • Fixed static file path to serve from frontend/public
    • Fast job loading: returns first 40 jobs instantly, then full list on poll
  2. Frontend Setup

    • Copied working frontend from Job-Info-Test to frontend/public/
    • Simplified token validation at startup:
      • Check PocketBase session valid
      • Check Graph token in localStorage
      • If either missing → redirect to signin
    • Removed redundant token refresh loops
    • Added localStorage storage for Graph token in signin.html
  3. Authentication Flow

    • PocketBase OAuth with Microsoft provider
    • Graph token stored in localStorage after signin
    • Both tokens checked once at page load
    • No repeated token validation during app usage
  4. Systemd Service

    • Created /etc/systemd/system/job-info-prod.service
    • Runs on port 3005
    • Auto-restarts on failure
  5. Git Repository

Key Files

File Purpose
backend/src/index.ts Main Hono server with all endpoints
backend/src/redis-cache.ts Redis/Valkey cache helpers
frontend/public/index.html Main app UI
frontend/public/signin.html OAuth signin page (purple styling)
frontend/public/auth.js PocketBase auth bootstrap

Endpoints

  • GET / - Serve frontend
  • GET /version - App version
  • GET /api/health - Health check
  • GET /api/jobs-all - All jobs (first 40 fast, then full)
  • GET /api/jobs - Paginated jobs
  • GET /api/job-files - SharePoint files via Graph API
  • GET /api/job-file-content - File content/download
  • GET /api/job-file-pdf - PDF proxy
  • POST /log-change - Log changes

Configuration

Known Limitations

  • Graph tokens expire after ~60 minutes (Microsoft limitation)
  • No automatic Graph token refresh (would require direct OAuth flow)
  • User must re-signin when Graph token expires

Next Steps

  • Consider implementing direct Microsoft OAuth for refresh token support
  • Add error boundaries for better UX on token expiry
  • Performance monitoring