An AI-powered job application platform that streamlines the job search process with automated CV parsing, application generation, and interview preparation.
Applera is a full-stack TypeScript application designed to help job seekers manage applications efficiently. The platform leverages AI (Groq) to parse CVs, generate tailored applications, and provide interview prep guidance.
The project is organized as a monorepo with two main components:
client/ — Frontend
A modern React 19 + TypeScript single-page application built with:
- Vite for fast development and optimized builds
- TanStack Router for file-based routing
- TanStack Query for server state management
- Clerk for authentication
- Tailwind CSS v4 + shadcn/ui for styling and components
- Deployed on Vercel
server/ — Backend
A Node.js + Express REST API built with:
- Express 5 for HTTP handling
- MongoDB + Mongoose for data persistence
- Clerk for authentication (JWT verification)
- Groq API (llama-3.3-70b-versatile) for AI-powered features
- Cloudinary for PDF file storage
- Upstash Redis for rate limiting
- Deployed on Render
- Node.js 18+
- pnpm (or npm/yarn)
# Install dependencies for both client and server
pnpm install --recursive
# Or install individually
cd client && pnpm install
cd server && pnpm installEach subdirectory requires a .env file. See the respective READMEs for details:
- Client:
client/README.md - Server:
server/README.md
In one terminal, start the backend:
cd server
pnpm devIn another terminal, start the frontend:
cd client
pnpm dev- Frontend: http://localhost:5173
- Backend: http://localhost:5005
- Upload and parse resumes via AI
- Extract structured data (skills, experience, education)
- Store PDFs securely on Cloudinary
- Auto-generate tailored cover letters and applications
- Track application status across multiple job boards
- AI-powered content generation via Groq
- Generate personalized interview prep guides
- Question generation based on CV and job description
- Mock interview resources
- Monitor application status
- Dashboard insights and analytics
- Visualize job search progress
- Helmet for HTTP security headers
- CORS restricted to frontend domain
- CSRF protection via double-submit cookie pattern
- Input validation and sanitization
- Clerk JWT verification on protected routes
- Rate limiting via Upstash Redis
.
├── apps/
│ ├── client/ # React frontend (Vite + TanStack Router)
│ │ ├── src/
│ │ │ ├── api/ # Axios client and API functions
│ │ │ ├── components/ # UI components
│ │ │ ├── pages/ # Page components
│ │ │ ├── routes/ # File-based routes
│ │ │ └── hooks/ # Custom React hooks
│ │ └── package.json
│ │
│ ├── server/ # Express backend (REST API)
│ │ ├── src/
│ │ │ ├── routes/ # API route handlers
│ │ │ ├── models/ # Mongoose schemas
│ │ │ ├── middleware/ # Express middleware
│ │ │ ├── services/ # Business logic
│ │ │ └── server.ts # App entry point
│ │ └── package.json
│
├── packages/ # (optional but recommended)
│ └── shared/ # shared types/utils between client & server
│ ├── src/
│ └── package.json
│
├── pnpm-workspace.yaml # workspace config
├── package.json # root workspace config
├── tsconfig.json # root TS config
├── .gitignore
└── README.md
- Frontend: See
client/README.mdfor React setup, routing, and deployment details - Backend: See
server/README.mdfor API routes, database setup, and deployment details
- Build command:
vite build - Output directory:
dist - Root directory:
client
- Build command:
pnpm install && pnpm run build - Start command:
pnpm start - Environment variables: Set in Render dashboard
| Category | Technology |
|---|---|
| Frontend | React 19, TypeScript, Vite, TanStack Router/Query |
| Backend | Node.js, Express 5, TypeScript |
| Database | MongoDB (Atlas) |
| Auth | Clerk (JWT-based) |
| AI/ML | Groq (llama-3.3-70b-versatile) |
| File Storage | Cloudinary |
| Caching/Rate Limit | Upstash Redis |
| Styling | Tailwind CSS v4, shadcn/ui |
| Validation | Zod |
Questions? See the individual README files for each component:
Copyright (c) 2026 Applera. All rights reserved.