Overview
Openings.dev is a static Next.js application for discovering technology opportunities published in GitHub community repositories. It is the front-end for a global jobs index built from public GitHub issue data.
The app does not keep local job data, mocks, fixtures, or JSON snapshots. Opportunity, facet, repository, community, user, and job-detail data is loaded through remote raw URLs.
Architecture
The application is separated into route-level screens, shared UI, and remote data services.
app/
_components/ shared route-level components
_hooks/ route-level React hooks
community/ community directory and repository routes
docs/ rendered project documentation pages
jobs/ static job detail routes
opportunities/ opportunities screen and feature UI
users/ author directory and profile routes
components/
footer/ global footer components
header/ global header components
icons/ shared icon components
providers/ app providers
ui/ low-level UI primitives
lib/
constants/ locale constants
content/ markdown document loading
opportunities/ remote data services, routing helpers, and domain types
translations/ UI copy by locale
utils/ framework-agnostic utilities
docs/
localized markdown rendered by the app
Key Boundaries
app/**/page.tsxfiles define App Router routes and static params.app/opportunities/_components/**owns the opportunities feature UI and UI-only controller hooks.lib/opportunities/api.tsreads the remote static API files.lib/opportunities/snapshot.tsreads the remote segmented snapshot index for static community and user route generation.lib/opportunities/static-api.tscentralizes raw data base URLs.lib/opportunities/types.tsowns shared opportunity domain types.
Data Source
The default remote data endpoints are:
https://raw.githubusercontent.com/openings-dev/data/main/snapshots/opportunitieshttps://raw.githubusercontent.com/openings-dev/data/main
The app consumes manifest files, ordered opportunity IDs, paginated list data, job detail files, community shards, user static params, and repository metadata.
There is no local API route for opportunities and no local JSON import in the front-end.
