First 2 Apply
First 2 Apply (https://first2apply.com/) is an open-source job board aggregator that centralizes listings from platforms like LinkedIn, Indeed, Dice, and more, helping job seekers find opportunities faster. Watch demo video.
Prerequisites
- Node.js (v20+ recommended)
- pnpm (v10+ recommended)
- Supabase CLI
- Docker (required for local Supabase)
Project Structure
This project is organized as a monorepo using Nx.
- apps/
backend: Supabase configuration, migrations, and edge functions.desktopProbe: The Electron desktop application.webapp: The main web application (Next.js).landingPage: Marketing landing page.blog: Project blog.invoiceDownloader: Utility for downloading invoices.nodeBackend: Additional Node.js backend services.
- libraries/: Shared code and utilities.
Getting Started
1. Install Dependencies
2. Start Docker Services (Optional)
If you want to run the apps in Docker:
This will start all services defined in docker-compose.yml in detached mode.
3. Environment Setup
Create .env files in the application directories by copying the examples:
- Backend:
apps/backend/.env(copy from.env.exampleif available, or set up Supabase env vars) - Desktop Probe:
apps/desktopProbe/.env(copy fromapps/desktopProbe/.env.example)
4. Supabase Setup
Navigate to the backend app directory:
Initialize and start Supabase locally (only needs to be run once):
You should now be able to visit the Supabase dashboard at http://localhost:54323/.
Import Data:
Import the sites_rows.csv file into the sites table in the Supabase dashboard.
Run Edge Functions:
pnpm supabase functions serve
5. Run Applications
You can use nx to run applications from the root directory.
Run All Apps (Dev Mode):
Note:
pnpm devruns thedevscript for all apps. For the desktop app, use the specific command below.
Desktop Probe:
pnpm nx start first2apply-desktop
Development
This project uses Nx for task management.
- Run Dev Server:
pnpm nx dev <project-name>orpnpm nx start <project-name> - Build:
pnpm nx build <project-name> - Test:
pnpm nx test <project-name> - Lint:
pnpm nx lint <project-name>
To run tasks for all projects:
pnpm nx run-many -t build
Release
Desktop Probe
Update the version in apps/desktopProbe/package.json and the .appx manifest.
MacOS: Run the package command:
pnpm nx run first2apply-desktop:package # or from the folder cd apps/desktopProbe && npm run package
Windows: Build the AppX bundle:
pnpm nx run first2apply-desktop:make # or from the folder cd apps/desktopProbe && npm run make
Publishing:
The root package.json includes a publish script that runs across projects:
Linux
Manual upload of .deb file to S3 and update of RELEASES.json is required.