Introduction
Developer and user documentation for FirstDevJob, a job board for people looking for their first role in tech
FirstDevJob is a job board for internships, graduate roles and other early-career developer jobs. Anyone can browse the listings; signing in adds bookmarking, an application tracker and optional email alerts when a matching job is approved. Submitted jobs are reviewed by a moderator before they appear. These docs cover both sides of that: how to use the site, and how it is built.
The app is a Next.js 16 frontend on Vercel talking directly to a Convex backend, with Clerk for authentication and Resend for email. Every page in the technical sections is written against the code in this repository — if a page disagrees with the source, the source is right and the page is a bug.
Start here
Getting Started
Create an account and find your first listing.
Architecture Overview
How the frontend, Convex, Clerk and Resend fit together.
Project Structure
Where each piece of code lives in the repo.
Contributing
Set up the repo locally and open a pull request.
All sections
User Guide
- Getting Started — accounts and first steps
- Browsing Jobs — search, role level and location filters
- Tracking Applications — bookmarks, statuses and notes
- Email Notifications — opting in, role filters, unsubscribing
- Posting Jobs — submitting a role for review
Architecture
- Overview — the system diagram and what runs where
- Tech Stack — every dependency and service, with versions
- Data Flow — subscriptions, mutations and the job lifecycle
- Authentication — Clerk to Convex, roles and authorization
Technical
- Project Structure — directory layout
- Database Schema — Convex tables and indexes
- Deployment — CI, environment variables, Convex and Vercel
- Contributing — local setup and the PR checklist
API Reference
- Jobs — listing, filtering, submitting, cleanup
- Bookmarks — tracked applications
- Profiles — profile reads, updates and account deletion
- Email Subscriptions — opt-in and unsubscribe functions
- Admin — moderation functions
Tech stack
| Technology | Purpose |
|---|---|
| Next.js 16 (App Router) | Frontend, routing, server rendering, the docs site |
| React 19 | UI runtime |
| Convex | Database, backend functions, real-time subscriptions, crons |
| Clerk | Authentication, sessions, OAuth, JWTs verified by Convex |
| Resend | Transactional email, sent from Convex via @convex-dev/resend |
| Tailwind CSS 4 | Styling and design tokens |
| Fumadocs | These docs: MDX content, layout and search |
| Bun | Package manager and script runner, pinned to 1.4.2 |
| TypeScript | Types across frontend and backend, including generated Convex types |
Exact versions live in Tech Stack and in package.json.
Keyboard shortcuts
These work anywhere in the documentation site.
| Shortcut | Action |
|---|---|
Cmd + K / Ctrl + K | Open search |
Cmd + B / Ctrl + B | Toggle the sidebar |
On screens 768px and wider, Cmd/Ctrl + B collapses and expands the sidebar column; below that it opens and closes the sidebar drawer. Both shortcuts are ignored while you are typing in a text field, so they never swallow a keystroke mid-search.
Search indexes page titles and headings across every page in this site, so searching for a function name such as listApprovedJobs or a table name such as trackedApplications is usually faster than navigating the sidebar.