Skip to content

feat: Replace Keka embed with native API-driven job listings#81

Open
vibemarketerpromax wants to merge 3 commits intomainfrom
feature/keka-api-careers
Open

feat: Replace Keka embed with native API-driven job listings#81
vibemarketerpromax wants to merge 3 commits intomainfrom
feature/keka-api-careers

Conversation

@vibemarketerpromax
Copy link
Collaborator

Summary

  • Replaces the Keka iframe embed (which forced a light theme, breaking our dark aesthetic) with native components that fetch jobs via Keka's REST API at build time
  • Adds OAuth2 API client with token caching, paginated job fetching, and HTML sanitization of job descriptions
  • Implements expandable job cards with department filter pills, inline accordion expand/collapse, and "Apply Now" CTAs linking to Keka portal
  • Splits careers page into server component (data fetching) + client component (UI), following the same pattern as /work
  • Adds scheduled GitHub Action (twice daily) to trigger rebuilds so job listings stay current without webhooks

New Files

File Purpose
lib/keka.ts OAuth2 API client with token caching and pagination
lib/keka-jobs.ts Transform layer with HTML sanitization and React cache
components/careers/JobCard.tsx Expandable job card with accordion animation
components/careers/JobFilters.tsx Department filter pills with counts
components/careers/JobListings.tsx Client container managing filters and expand state
app/careers/CareersClient.tsx All careers page UI (extracted from page.tsx)
.github/workflows/rebuild-jobs.yml Scheduled rebuild for job freshness

Modified Files

File Change
app/careers/page.tsx Converted to server component (fetches jobs at build time)
app/globals.css Added .prose-job-description styles, removed #khembedjobs embed CSS
.github/workflows/ci.yml Added KEKA_* env vars to build step
.github/workflows/nextjs.yml Added KEKA_* env vars to build step
.env.example Added KEKA_* variable documentation

Deleted Files

File Reason
components/KekaJobsEmbed.tsx Replaced by native API components

Setup Required

Add these secrets to GitHub repo settings (Settings > Secrets and variables > Actions):

  • KEKA_CLIENT_ID
  • KEKA_CLIENT_SECRET
  • KEKA_API_KEY
  • KEKA_COMPANY

Test plan

  • Add Keka credentials to .env.local and run npm run dev - verify jobs load on /careers
  • Test department filter pills select/deselect correctly
  • Test expand/collapse accordion animation on job cards
  • Test "Apply Now" links open Keka portal in new tab
  • Test with credentials removed - verify graceful fallback (empty state with portal link)
  • Verify npm run lint passes (0 errors)
  • Verify npm run build compiles successfully
  • Add KEKA_* secrets to GitHub and verify CI build passes

Replace the Keka iframe embed (which forced a light theme) with native
components that fetch jobs via Keka's API at build time and render with
the site's dark theme.

- Add OAuth2 API client (lib/keka.ts) with token caching and pagination
- Add transform layer (lib/keka-jobs.ts) with HTML sanitization
- Add expandable JobCard, department filters, and JobListings components
- Split careers page into server component + CareersClient
- Add scheduled rebuild workflow (twice daily) to keep listings current
- Add KEKA_* env vars to CI workflows
- Remove KekaJobsEmbed component and its CSS overrides
@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Feb 12, 2026

Deploying website with  Cloudflare Pages  Cloudflare Pages

Latest commit: d9929a0
Status: ✅  Deploy successful!
Preview URL: https://b20a74d6.website-yiq.pages.dev
Branch Preview URL: https://feature-keka-api-careers.website-yiq.pages.dev

View logs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant