Trajectory is a comprehensive, full-stack career management platform designed to centralize and automate the fragmented job search process. By moving beyond static spreadsheets, Trajectory integrates resume versioning, AI-powered data extraction, cold outreach tracking, placement sheets, and deep analytics into a single unified "Command Center" (Dashboard).
This project is structured as a decoupled full-stack application (React 19 Frontend hosted on Vercel + Java 21 / Spring Boot 3.3.1 Backend hosted on AWS EC2 via Docker Compose) backed by AWS RDS PostgreSQL 16, AWS S3, and automated via a GitHub Actions Self-Hosted Runner.
Trajectory is deployed in production and accessible at the following live endpoints:
| Component | Production URL | Description |
|---|---|---|
| Frontend Web Application | https://trajectory-mu-six.vercel.app | Production Single Page Application (SPA) hosted on Vercel's global Edge CDN. |
| Backend REST API Gateway | https://trajectory-api.duckdns.org | Secure HTTPS REST API hosted on AWS EC2 reverse-proxied by Nginx with Let's Encrypt SSL. |
| Interactive Swagger OpenAPI | https://trajectory-api.duckdns.org/swagger-ui/index.html | Live interactive Swagger UI for testing API endpoints directly in the browser. |
- Pipeline Metrics: High-level bird's-eye counters of
Total,Active,Rejected, andGhostedapplications. - Funnel Analytics: Numerical tracking of Online Assessments (OAs), Interviews, and Offers.
- Performance Conversion: Real-time metrics for Response Rate, Interview Conversion, and Offer Conversion.
- Temporal Logging: Rollup counts of applications submitted "This Week" (rolling 7 days) and "This Month".
- Analytics Visualizations: Interactive charts comparing response rates of different resume versions and distribution of applications by sources and career profiles.
- Daily Action Agenda: A "Today’s Agenda" widget compiling upcoming interviews, OAs, and networking follow-ups.
- Comprehensive Tracking: Tracks Company Name, Role, Location, Career Profile, Resume Version, Applied Date, Source, Salary Range, and Application Link.
- Chronological Timeline: A history log documenting the timeline and duration of each status transition (
Applied➔OA➔Interview➔Offer). - Smart Reminders: Automatically prompts for Meeting Links, dates, and times when a status changes to
OAorInterview, syncing them as calendar/push reminders. - Ghost Detection: Automated Spring Scheduler cron jobs that identify inactive applications (based on user-configured thresholds, e.g., 30 days) and flag them as
Ghosted. - One-Click Archiving: Easy archival of inactive or rejected applications.
- Targeted Career Profiles: Create profiles (e.g., "Full Stack Dev", "Product Manager") with custom color-coding and Lucide icons.
- Automatic Version Control: Upload multiple resume versions. The backend auto-increments version numbers (v1 ➔ v2) and suggests the latest resume when applying for a matching profile.
- Inline Resume Creation: "Quick Upload" new resumes directly within the application creation modal.
- Keyword Changelog: Keep detailed records of what keywords/sections changed in each resume version to correlate resume adjustments with response rates.
- Networking Tracker: Track cold outreach sent to recruiters and employees with contact info, discussion topics, and outreach dates.
- Follow-Up Automation: Set follow-up reminders relative to "Date Sent" with validation to prevent logical date conflicts.
- Application Conversion: Convert successful conversations into formal job applications in one click, transferring history and company details.
- Sentiment Analysis: Paste recruiter replies into the AI analysis tool to automatically classify sentiment (
REPLIED,INTERVIEW_SECURED, etc.).
- Data Extraction: Paste job descriptions, recruiter emails, or invite letters, and let the AI extract Company, Role, Location, Salary, and Deadline details.
- Auto-Populate: Pre-fill application forms from the extracted data for user review.
- Profile Suggestions: AI maps the job posting to the most relevant Career Profile.
- Job Description Archival: Preserves the original job description raw text to prevent loss if the external posting is deleted.
- Mock Fallback: Automatic fallback to regex-based mock parsing when Groq API keys are omitted or set to
mock-key.
- Web Push Notifications: Real-time push alerts via Web Push API for OA/Interview times and outreach follow-ups.
- Daily Digest: A consolidated overview of the daily agenda displayed in the dashboard widget.
- Integrated Placement Sheets: Built-in repository covering recruitment criteria for 100+ top technology companies, listing salary packages (CTC), eligibility thresholds (CGPA, high school grades), and common interview topics.
- Private S3 Document Storage: Dedicated document vault to upload and manage company-specific PDFs, offer details, and benefit guidelines stored securely in AWS S3.
- Pipeline Fine-Tuning: Define custom thresholds for the automatic "Ghosted" detection cron job.
- Automated Lifecycle Actions: Toggle preferences like auto-archiving rejected roles and managing notification alerts.
Trajectory's interactive flows are optimized to minimize administrative overhead:
- Authentication & Onboarding: Users sign up or login locally (JWT) or via OAuth2 (Google/GitHub). They configure their initial Career Profile and upload their base Resume (v1).
- The Application Loop: Users click "Add Application", paste a job description or email, trigger the Spring AI extraction (powered by Groq / Llama 3), verify the auto-populated fields, and save.
- Lifecycle Management: When updating status (e.g., from
AppliedtoOA), the user enters the meeting details. The system logs the history transition, calculates the duration of the previous status, and schedules a push reminder. - Networking (CRM) Flow: Users log recruiter outreach and follow-up dates. If an interview is secured, they convert the entry into an Application.
- Data Portability: Users can export their entire workspace data as JSON/CSV or restore their status using the import feature.
For a detailed view of the backend execution and frontend events, read Docs/App Flow.md.
graph TD
%% User Interaction Layer
subgraph User_Interface ["Frontend / React 19 SPA (Vercel)"]
A["User Login / OAuth"] --> B["Dashboard"]
B --> C["Add Application"]
B --> D["Networking/CRM"]
B --> E["Resume Manager"]
end
%% Edge & Proxy Layer
subgraph Proxy_Layer ["Ingress Gateway"]
Nginx["Nginx Reverse Proxy / Certbot SSL"]
end
%% Backend Processing Layer
subgraph Backend_Services ["Spring Boot API Container (AWS EC2)"]
C1["Spring AI Service"]
C2["Resume Service"]
D1["CRM Service"]
F["Spring Scheduler Daemon"]
C --> C1
E --> C2
D --> D1
end
%% External & AI
subgraph External_Providers ["External APIs"]
C1 -->|Prompt| G["Groq Cloud / Llama 3"]
G -->|Structured JSON| C1
A -->|OAuth2| OAuth["Google / GitHub OAuth2"]
end
%% Data Layer
subgraph Persistence ["Data Store (AWS Managed Services)"]
DB[("AWS RDS PostgreSQL 16")]
S3["AWS S3 Bucket"]
end
%% Network Connections
User_Interface -->|HTTPS REST| Nginx
Nginx -->|Proxy Pass 8080| Backend_Services
C1 -.-> DB
C2 -.-> S3
C2 -.-> DB
D1 -.-> DB
F -.->|Ghost Detection| DB
DB -.->|Hydrate Views| B
Trajectory features a type-safe, high-contrast visual design system built with Tailwind CSS and Shadcn UI primitives. For full details on tokens, components, and design rules, refer to Docs/DESIGN.md.
/login— Authentication Canvas: Credentials login/signup tabs and social authentication buttons (Google/GitHub)./dashboard— Command Center: Displays rollups for active pipelines, Recharts funnel charts, and Daily Agenda./applications— Application Matrix: Searchable and paginated data table of all job applications with multi-select filters, AI Import, and Quick Resume Upload./applications/:id— Application Inspector: Detailed page displaying status audit history on a chronological timeline with pulsing indicators./outreach— Networking CRM: Recruiter grid view showing contact details, LinkedIn links, and follow-up warning alerts./resumes— Career Profile Matrix: Displays custom color-coded career personas, versioned PDF resume records (v1,v2), and changelogs./resources— Placement Sheets & Company Documents: Dashboard displaying integrated placement criteria for 100+ top tech companies (CTC, CGPA, prep topics) and private S3 document storage./settings— User Profile & Settings: Configurations for display name, custom inactivity thresholds for automatic "Ghosted" detection, and lifecycle automation toggles.
- Framework: React 19 (
^19.0.0) bundled with Vite - Language: TypeScript (
^5.5.3) - Styling: Tailwind CSS + Shadcn UI (Radix UI primitives)
- State Management:
- Server State: TanStack Query (
@tanstack/react-query ^5.51.1) for API caching and sync - Client State: Zustand (
^4.5.4) for lightweight global UI states
- Server State: TanStack Query (
- Forms & Validation: React Hook Form + Zod (
zod ^3.23.8) - Analytics Visualizations: Recharts (
^2.12.7) - Iconography: Lucide React (
lucide-react ^0.407.0) - Hosting: Vercel Edge Network (
vercel.jsonSPA rewrites)
- Core Platform: Java 21 + Spring Boot 3.3.1
- AI Integration: Spring AI (
spring-ai-openai-spring-boot-starter) orchestrating Groq Cloud / Llama 3 - Security: Spring Security (Stateless JWT auth + OAuth2 with Google/GitHub)
- Data Access: Spring Data JPA + Hibernate
- Database Migrations: Flyway (
flyway-core+flyway-database-postgresql) - Documentation: SpringDoc OpenAPI 2.6.0 (Swagger UI at
/swagger-ui.html) - Daemon & Jobs: Spring Scheduler (
GhostDetectionScheduler,NotificationScheduler) - Concurrency: Java 21 Virtual Threads (
spring.threads.virtual.enabled=true)
- Server Host: AWS EC2 (Ubuntu 24.04 LTS)
- Primary Database: AWS RDS PostgreSQL 16
- Object Storage: AWS S3 (
ap-south-1region) - Containerization: Docker & Docker Compose (
docker-compose.prod.yml) - Reverse Proxy: Nginx with Certbot Let's Encrypt SSL (
https://trajectory-api.duckdns.org) - CI/CD Pipeline: GitHub Actions with Self-Hosted Runner installed on EC2
For complete architectural details, read Docs/Tech Stack.md and Docs/Deployment.md.
The database schema is versioned via Flyway migrations under backend/src/main/resources/db/migration/:
+------------------+
| users |
+------------------+
| 1
|
+------------------+------------------+-------------------+
| 1 | 1 | 1 | 1
+--------▼--------+ +------▼-------+ +-------▼-------+ +--------▼---------+
| career_profiles | | outreach | | notifications | | refresh_tokens |
+--------┬--------+ +--------------+ +---------------+ +------------------+
| 1
|
+------------------+
| M | M
+--------▼--------+ +-------▼--------+
| applications | | resumes |
+--------┬--------+ +----------------+
| 1
+--------▼--------+
|status_history |
+-----------------+
users: Account identity, auth provider (LOCAL, GOOGLE, GITHUB), configurations (ghost_threshold_days,auto_archive_enabled,browser_notifications_enabled), and AI extraction metrics.career_profiles: Career personas (e.g. Title, Color Hex, Icon) linked to users.resumes: Versioned PDF metadata (s3_key, version numbers, file names, changelog notes).applications: Application lifecycle entities (status,company_name,role_title,is_archived,oa_date_time,interview_date_time,meeting_link, job description raw text).application_status_history: Audit trail logging every application status transition and duration.outreach: Networking CRM tracker (contacts, outreach status, date sent, follow-ups, position discussed).company_documents: Private company-specific documents (eligibility PDFs, benefit guides) stored in AWS S3.notifications: System alerts and reminders for OAs, interviews, and outreach follow-ups.refresh_tokens: Secure token persistence for JWT session rotation.
- Java SDK 21
- Node.js 20+ & npm
- Docker & Docker Compose
Start PostgreSQL, Redis, and MinIO locally using Docker Compose:
docker compose up -dCopy template environment files:
- Backend:
backend/src/main/resources/application.yml - Production Environment:
.env.prod(refer to.env.prod.example) - Frontend:
frontend/.env(VITE_API_BASE_URL=http://localhost:8080/api)
cd backend
mvn spring-boot:runThe REST API will start on port 8080. Swagger UI is accessible at http://localhost:8080/swagger-ui.html.
cd frontend
npm install
npm run devThe React SPA will start on http://localhost:5173.
- Documentation Index (Docs/INDEX.md) — Master index for all project documentation.
- Product Requirements (Docs/PRD.md) — Core functional and non-functional requirements.
- Feature List (Docs/FEATURE_LIST.md) — Implemented vs. planned feature mappings.
- Tech Stack Specification (Docs/Tech Stack.md) — Environment configurations and library rationales.
- Application Flow (Docs/App Flow.md) — State machines, auth diagrams, and background crons.
- Visual Design System (Docs/DESIGN.md) — Theme guidelines, spacing rules, and status color codes.
- System Architecture (Docs/SYSTEM_ARCHITECTURE.md) — Component diagrams and thread scheduling configurations.
- REST API Specification (Docs/API_SPECIFICATION.md) — Endpoint reference, DTO records, and validation parameters.
- Database Schema (Docs/DATABASE_SCHEMA.md) — Relational tables, datatypes, constraints, indexes, and Flyway history.
- Security Architecture (Docs/SECURITY_ARCHITECTURE.md) — Perimeter security, SSL, JWT session structures, and VPC isolations.
- Authentication & Authorization (Docs/AUTHENTICATION_AUTHORIZATION.md) — Spring Security filter chain configurations, Bcrypt hashing, and OAuth2 callback flows.
- Provider Strategy (Docs/PROVIDER_STRATEGY.md) — Integrations for AWS S3 object store, Spring AI Groq API gateways, and Google/GitHub OAuth clients.
- Error Handling Strategy (Docs/ERROR_HANDLING_STRATEGY.md) — Custom exception hierarchies, validation handlers, and client notifications.
- Testing Strategy (Docs/TESTING_STRATEGY.md) — JUnit 5 Mockito unit tests, Vitest state store suites, and CLI execution commands.
- Deployment Architecture (Docs/Deployment.md) — Multi-stage Docker configurations, Nginx proxies, Certbot renewals, and self-hosted runners.
- Environment Configuration (Docs/ENVIRONMENT_CONFIGURATION.md) — Environment variables dictionary, local properties, and application.yml mappings.
- Folder Structure (Docs/FOLDER_STRUCTURE.md) — Physical directory mappings across front-end and backend files.
- Data Flow (Docs/DATA_FLOW.md) — MVC request-response tracing, AI workflows, and S3 resume uploads.
- External Integrations (Docs/EXTERNAL_INTEGRATIONS.md) — Core integration endpoints, parameters, and protocols.
- Spring AI Prompt Engineering (Docs/PromptSkills.md) — System prompt instructions, templates, and mock fallbacks.
This project is licensed under the MIT License - see the LICENSE file for details.