An open API service indexing awesome lists of open source software.

https://github.com/devaneyj3/job_search_tracker

Next.js 16, React 19, Prisma + PostgreSQL, NextAuth, Tailwind CSS, Radix UI, React Hook Form + Zod, Motion animations, email & calendar automation, and PDF generation
https://github.com/devaneyj3/job_search_tracker

axios lucide-react moment-js next-auth nextjs nodemailer prisma react react-pdf-renderer scss shadcn-ui supabase tailwindcss vitest

Last synced: about 2 months ago
JSON representation

Next.js 16, React 19, Prisma + PostgreSQL, NextAuth, Tailwind CSS, Radix UI, React Hook Form + Zod, Motion animations, email & calendar automation, and PDF generation

Awesome Lists containing this project

README

          

# Job Tracker

Track target companies, submitted applications, and professional connections during a job search.
The app provides dashboards for company pipeline management, application tracking, and outreach tracking.

## Technologies Used

- Framework: `Next.js 16` (App Router) + `React 19`
- Authentication: `next-auth` with Google OAuth
- Database/ORM: `PostgreSQL` + `Prisma 7` (`@prisma/adapter-pg`)
- Styling/UI: `SCSS modules`, `Tailwind CSS v4`, Radix/shadcn-style UI components
- Forms/Validation: `react-hook-form` + `zod`
- Notifications: `sonner`
- Email/Docs tooling: `nodemailer`, `@react-pdf/renderer`, `ical-generator`
- Testing: `Vitest` + Testing Library
- Linting: `ESLint` + `eslint-config-next`

## File Structure

```text
job-tracker/
app/
(dashboard)/
dashboard/page.jsx
companies/page.jsx
applications/page.jsx
connections/page.jsx
layout.jsx
api/
auth/[...nextauth]/route.js
company/route.jsx
application/route.jsx
connection/route.jsx
layout.jsx
page.jsx
features/
companies/
components/
context/companyContext.jsx
lib/
applications/
components/
context/applicationContext.jsx
lib/
connections/
components/
context/connectionContext.jsx
lib/
shared/
components/
context/
lib/
ui/
email/
templates/
lib/
prisma/
schema.prisma
migrations/
generated/prisma/
styles/
auth.js
Constants.js
package.json
```

## User Flow

1. User lands on `/` and sees the welcome/sign-in screen.
2. User signs in with Google (`next-auth`).
3. Providers initialize app state (`SessionProvider`, auth, company, application, and connection contexts).
4. User enters dashboard pages:
- `/dashboard` and `/companies` render the companies dashboard.
- `/applications` renders the applications dashboard.
- `/connections` renders the connections dashboard.
5. User can create, edit, filter, update status, and delete:
- Companies (company pipeline)
- Applications (application pipeline)
- Connections (outreach pipeline)
6. UI actions call API routes (`/api/company`, `/api/application`, `/api/connection`), which persist changes to PostgreSQL through Prisma.
7. Changes are reflected in context state and rendered in list/detail components.

## Local Setup

### 1) Install dependencies

```bash
npm install
```

### 2) Configure environment variables

Create a `.env` file with at least:

```env
DATABASE_URL=postgresql://...
GOOGLE_CLIENT_ID=...
GOOGLE_CLIENT_SECRET=...
```

### 3) Generate Prisma client and run schema/migrations

```bash
npx prisma generate
npx prisma migrate deploy
```

If you are iterating locally and want to push schema changes quickly:

```bash
npx prisma db push
```

### 4) Start development server

```bash
npm run dev
```

Open `http://localhost:3000`.

## Scripts

- `npm run dev` - start local dev server
- `npm run build` - generate Prisma client and build Next app
- `npm run start` - run production build
- `npm run lint` - run ESLint
- `npm run test` - run Vitest
- `npm run test:ui` - run Vitest UI

## Notes

- Prisma client is generated into `generated/prisma`.
- API handlers for auth, companies, applications, and connections live under `app/api`.
- Feature logic is grouped by domain under `features/` to keep concerns localized.