Implementation notes for the navy-and-orange career atlas brief · 27 October 2026 · Next.js static export on GitHub Pages.
The product direction
Career Vettai prioritises Sri Lanka and Singapore, retains relevant international opportunities, and gives visitors clear tools to explore skills, read published salaries and manage their own shortlist. The replacement brand assets are used without altering their source files: the square compass is the favicon and the horizontal artwork is the wordmark.
Application links stay unlimited. After three recorded application-link opens in a local calendar day, completing an optional Arcade challenge reveals three extra preparation cards for that day. The browser records link opens, not completed applications. A share action is never presented as a verified referral.
Searchable catalogue across 13 skill categories; self-reported levels; market and experience preferences; 13 explainable role profiles; next skills, projects and vacancies; reset and profile export/import.
Five guides covering role paths, remote hiring locations, salary ranges, application preparation and project evidence.
Rules behind the tools
Explainable role suggestions
Core skills have weight 3 and supporting skills weight 1. Learning, project and professional evidence use factors 0.45, 0.75 and 1. Alternative languages, frameworks or providers count as one group. Overlap labels describe selected terms; market and experience preferences separately filter related vacancies. None of this certifies suitability.
Published salary facts
Ranges and known periods are retained. Annual figures divide by 12; hourly figures use paid weekly hours chosen by the visitor, multiplied by 52/12. Missing salaries are never estimated. The comparison excludes tax, benefits, purchasing power and living costs.
Reference currency observations
Frankfurter v2 provides the USD/SGD and USD/LKR reference observations. Both effective dates remain visible because pair dates can differ. Browser and build caches preserve actual dates if refresh fails.
A private manual workspace
Notes, stages, skill evidence and challenge results are browser records. Existing bookmark IDs are migrated. Imports validate known fields, skill levels, IDs and link protocols. Export/import moves files manually; there is no account or cross-device service.
Source expansion and review
The collector now supports selected Greenhouse (Temus), Lever (ShopBack) and Ashby (BJAK) employer boards in addition to the existing specialist and SmartRecruiters feeds. Collection happens in GitHub Actions, rather than making browser requests to employer APIs.
Jobicy retains attribution and its public listing URLs. Remotive keeps its listing URLs and its 24-hour public-feed delay; access to its listings is not gated. Arbeitnow’s general restrictions and specific API clause in section 11 were reviewed; its required platform link-back is retained. No paid API plan was purchased.
Source status distinguishes collected, empty, cached and unavailable responses. A successful empty feed does not reuse old roles. A failed feed can use a recent cache for up to 48 hours. Matching duplicates retain their available source links. Known expiry removes a listing; long-running roles still on an employer board keep their actual posted date and are identified as such.
Visual and accessibility decisions
Deep navy #071D33, primary navy #102A43, orange #F97316, dark orange #C4510B, soft orange #FFF0E5 and canvas #F7F9FC.
Orange primary actions use navy text for readable contrast. Text links use dark orange.
Bottom navigation on phones, a keyboard-friendly native filter dialog, visible focus and a skip link.
Reduced-motion preferences disable decorative animation and smooth scrolling.
Information-first job pages; the detailed atlas illustration stays on Home.
Search discovery and static hosting
All public routes have specific metadata and canonical URLs. The sitemap includes the new public pages and guides, while browser-specific saved jobs and search variants remain noindex. Guide articles include factual Article metadata. Job detail pages are generated only for the current build; expired or removed jobs are not left in the sitemap as open vacancies. JobPosting rich-result markup remains withheld when complete expiry and application-status accuracy cannot be established.
The six-hour workflow, static export, custom domain configuration and supporting HTML report export remain in place. Scheduled GitHub runs can be delayed. Accounts, verified applications, secure referral rewards, email alerts and cross-device sync are outside this static implementation.
Release verification
The release passed 22 automated tests, ESLint, TypeScript checks and a production static build. Browser checks covered the public page types at 320 px, 390 px and 1440 px, with no horizontal overflow or runtime errors.
Interactive checks confirmed legacy bookmark migration, notes and manual-stage persistence, profile and shortlist export/import, keyboard dismissal of mobile filters, shareable searches, annual and hourly salary-range calculations, dated rate fallback, all three games, local scores and the optional three-card unlock. Application links remained available after the unlock. One-sided published salary bounds remain visible without becoming definite offer amounts.
The generated export was checked for canonical/noindex rules, sitemap inclusion, guide Article data, source dates on all 389 current job-detail pages, custom-domain files and unresolved internal links. The HTML reports remain separate supporting documents.