Technical
Database Schema
Convex database tables and relationships
Database Schema
FirstDevJob uses Convex as its database. The schema is defined in TypeScript.
Tables
jobs
Stores all job listings.
| Field | Type | Description |
|---|---|---|
title | string | Job title |
company | string | Company name |
location | string | Job location |
url | string | Application link |
roleLevel | string? | intern, graduate, earlyCareer |
tags | string[] | Technology tags |
status | string | pending, approved, rejected, outdated |
trackedApplications
Application tracking data.
| Field | Type | Description |
|---|---|---|
userId | string | User ID |
jobId | Id<"jobs"> | Reference to job |
jobSnapshot | object? | Cached job data used when source job is removed |
status | string | saved, applied, interviewing, offer, rejected, accepted |
notes | string? | User notes |
_creationTime | number | Created timestamp (Convex-managed) |
profiles
User profile information.
| Field | Type | Description |
|---|---|---|
userId | string | Clerk user ID |
displayName | string? | Display name |
bio | string? | User bio |
links | object? | Social links |
Indexes
Key indexes for query performance:
jobs.by_status- Filter jobs by approval statustrackedApplications.by_userId- Get user's tracked applicationstrackedApplications.by_userId_jobId- Unique tracking per user/job