Track Jobs with Friends - Share Opportunities, Chat & Succeed
Track job applications with Kanban boards, smart autofill, real-time chat, and group collaboration features.
This Chrome extension is an all-in-one job search companion with real-time collaboration that solves major pain points:
- π Filter LinkedIn Jobs - Hide reposted jobs, filter by time, blacklist companies
- π Track Applications - Beautiful Notion-style dashboard with 5-column kanban (Saved, Applied, Interview, Offer, Rejected)
- π Analytics & Insights - Visualize your job search progress with charts and metrics
- β‘ Autofill Forms - One-click autofill for job applications across 10+ platforms with intelligent field detection
- π₯ Group Collaboration - Create/join groups, share jobs, real-time chat, and collaborate with peers (NEW!)
- π¬ Real-time Chat - Socket.io powered group chat with typing indicators and message reactions (NEW!)
- π Live Notifications - Get notified when jobs are shared, messages sent, and more (NEW!)
Prerequisites:
- Node.js v14+ (for backend)
- MongoDB (local or cloud)
- Chrome Browser
Step 1: Clone Repository
git clone https://github.com/VIJAYRUR/ChromeExtension.git
cd ChromeExtensionStep 2: Backend Setup (Required for Group Features)
- Install dependencies:
cd backend
npm install- Configure environment variables:
Create a
.envfile in thebackenddirectory:
PORT=3000
MONGODB_URI=your_production_mongodb_uri
MONGODB_LOCAL_URI=mongodb://localhost:27017/job-tracker-groups
JWT_SECRET=your_jwt_secret_key_here
NODE_ENV=development- Start MongoDB locally:
# macOS (with Homebrew)
brew services start mongodb-community
# Linux
sudo systemctl start mongod
# Windows
net start MongoDB- Start the backend server:
npm startThe backend will run on http://localhost:3000
Step 3: Chrome Extension Setup
- Configure API URL:
Edit
shared/config.js:
const API_CONFIG = {
API_URL: 'http://localhost:3000/api', // For local development
SOCKET_URL: 'http://localhost:3000' // For local development
};- Load extension in Chrome:
- Open Chrome and go to
chrome://extensions/ - Enable "Developer mode" (top right toggle)
- Click "Load unpacked"
- Select the extension folder (ChromeExtension)
- Pin the extension to your toolbar for easy access
Step 4: Create Account
- Click the extension icon
- Click "Sign Up"
- Enter your name, email, and password
- Click "Create Account"
- You're ready to use all features!
Filter LinkedIn Jobs:
- Visit LinkedIn Jobs page
- Click extension icon β Toggle filter panel
- Set your preferences (time range, hide reposts, blacklist companies)
Track Applications:
- On any LinkedIn job, click "Track Application" button
- Job details auto-extracted: location, salary, work type, description HTML
- Click extension icon β "Open Dashboard" to view all tracked jobs
- Switch between Kanban, Table, Calendar, and Stats views
- Update status, add notes, upload resumes
View Analytics:
- Open dashboard β Click "Stats overview" tab
- See application timeline, status distribution, response time analysis
- Filter by date range: Last 7 days, 30 days, 3 months, or all time
Autofill Applications:
- Click extension icon β "Setup Profile" (one-time setup)
- Complete 7-step profile wizard:
- Upload resume (PDF/DOC/DOCX) - auto-extracts data
- Personal information (name, email, phone)
- Address details
- Professional links (LinkedIn, GitHub, portfolio)
- Work experience
- Education history
- Skills and summary
- Visit any job application page (Workday, Greenhouse, Lever, etc.)
- Click the floating "Autofill" button
- Review auto-filled fields and submit
Group Collaboration (NEW!):
Create a Group:
- Click "Groups" button in dashboard sidebar
- Click "Create Group" button
- Enter group name and description
- Choose Public or Private
- Click "Create Group"
- Share the 6-character invite code with others
Join a Group:
- Click "Groups" button in dashboard sidebar
- Click "Join Group" button
- Enter the invite code you received
- Click "Join Group"
Chat with Group Members:
- Open a group from the groups dashboard
- Type a message in the chat input (left column)
- Press Enter to send
- React to messages by clicking the π icon
- See typing indicators when others are typing
- Green dot shows who's online
Share Jobs in Chat:
- Click the π (attach) icon in chat input
- Select a job from your personal tracker
- Job appears as a rich card in the chat
- Click the job card to view full details
Share Jobs to Group:
- Go to "Shared Jobs" section (middle column)
- Click "Share Job" button
- Fill in job details (company, title, location, etc.)
- Click "Share to Group"
- Job appears in shared jobs list
Save Shared Jobs:
- Browse shared jobs in the "Shared Jobs" section
- Click "Save to My Jobs" on any job card
- Job appears in your personal dashboard's "Saved" column
- Click "Mark as Applied" when you apply to the job
- Job moves to "Applied" column
View Group Members:
- Go to "Members" section (right column)
- See all members with their roles
- Green dot indicates online status
- View member stats (jobs shared, messages sent)
Create & Join Groups:
- β Public/Private Groups - Create groups with custom names and descriptions
- β Invite Codes - Share unique 6-character codes to invite members
- β Role-based Access - Admin, Moderator, and Member roles
- β Member Management - View all group members with their roles and stats
Real-time Chat:
- β Socket.io Powered - Instant message delivery with WebSocket technology
- β Typing Indicators - See when others are typing in real-time
- β Online Status - Green dot shows who's currently online
- β Message Reactions - React with π β€οΈ π₯ π emojis
- β Message Alignment - Your messages on right, others on left
- β User Avatars - Colorful initials for each member
- β Timestamps - See when each message was sent
Share Jobs:
- β Share to Group - Share job opportunities with all group members
- β Inline Job Sharing - Share jobs directly in chat messages with rich cards
- β Job Details - Company, title, location, salary, work type, description
- β Save to My Jobs - Save shared jobs to your personal "Saved" kanban column
- β Mark as Applied - Track when you apply to shared jobs
- β Job Statistics - See how many members viewed, saved, or applied
- β Clickable Job Cards - Click to view full job details in modal
Group Features:
- β Three-Column Layout - Chat, Shared Jobs, and Members in one view
- β Job Filters - Filter shared jobs by work type, date, or search
- β Member Stats - See each member's contribution (jobs shared, messages sent)
- β Group Dashboard - View all your groups in one place
- β Leave Group - Leave groups you no longer want to be part of
- Time Filters: 1h, 3h, 6h, 12h, 24h, 3d, 7d
- Hide Reposts: Automatically hide reposted jobs
- Company Blacklist: Block specific companies from results
- Real-time Filtering: No page reload needed
- Draggable Panel: Collapsible, movable filter panel
- Clean UI: Notion-style design with smooth animations
Dashboard Views:
- Kanban Board: Drag-and-drop cards by status (Saved, Applied, Interview, Offer, Rejected)
- Table View: Sortable table with all job details
- Calendar View: See applications by date with monthly view
- Stats Overview: Analytics and insights
Job Details Captured:
- Company name
- Job title
- Location (auto-extracted from LinkedIn)
- Salary (auto-extracted from LinkedIn)
- Work Type (On-site/Remote/Hybrid - auto-extracted)
- Description HTML (formatted with bold headings)
- Application Timing (how long after job was posted - NEW!)
- Competition Level (number of applicants when you applied - NEW!)
- LinkedIn URL
- Date applied
- Status tracking
Features:
- Upload resumes (per job)
- Add cover letters
- Notes and tags
- Timeline tracking
- Priority levels
- Deadline management
- Contact information
- Interview dates
- Follow-up reminders
- Search and advanced filters
- Export data (JSON)
- Compact mode
Status Options:
- Saved (purple) - NEW! Jobs saved from groups or for later
- Applied (gray)
- Interview (blue)
- Offer (green)
- Rejected (red)
Quick Stats Cards:
- Total applications count
- Success rate (offers Γ· total)
- Average response time
- Interview rate
Charts & Visualizations:
-
Applications Timeline (Bar Chart)
- Weekly or monthly view based on date range
- Stacked by status (Applied/Interview/Offer/Rejected)
- Color-coded bars
- Interactive tooltips
-
Status Distribution (Doughnut Chart)
- Visual breakdown of all statuses
- Percentages on hover
- Legend with counts
-
Response Time Analysis
- Average days to interview
- Average days to rejection
- Fastest response (with company name)
- Slowest response (with company name)
-
Application Timing Insights (NEW!)
- Interview rate vs. Application Speed
- Shows if applying early improves interview chances
- Buckets: 0-3h, 4-12h, 13-24h, 1-3d, 3-7d, 7d+
-
Competition Level Insights (NEW!)
- Interview rate vs. Number of Applicants
- Shows how competition affects outcomes
- Buckets: 0-10, 11-25, 26-50, 51-100, 100+ applicants
-
Your Best Application Window (NEW!)
- Personalized insight based on your data
- Identifies optimal timing and competition levels
- Appears after tracking 10+ jobs with timing data
- Example: "Apply within 12 hours before 25 applicants"
Date Range Filters:
- Last 7 days
- Last 30 days
- Last 3 months
- All time
Profile Setup:
- One-time comprehensive profile setup with 7-step wizard
- Resume upload (PDF, DOC, DOCX) with automatic parsing
- Cover letter upload and management
- Extract information from resume: name, email, phone, LinkedIn, GitHub, website
- Work experience and education history
- Skills and professional summary
- Address and contact information
Smart Autofill Features:
- Supports 10+ ATS platforms (Workday, Greenhouse, Lever, Taleo, iCIMS, SmartRecruiters, Jobvite, Breezy HR, Workable, and more)
- Intelligent field detection and mapping (90+ field types recognized)
- Platform-specific autofill logic for optimal accuracy
- Multi-page form support with automatic page monitoring
- Auto-detect form types and adapt filling strategy
- Fills personal info, contact details, work experience, education, skills
- Handles complex fields: work authorization, EEO questions, legal questions
- Professional links: LinkedIn, GitHub, portfolio/website
- Visual feedback with field highlighting
- Review before submit
Supported Field Types:
- Personal: First/Last/Full Name, Email, Phone, Address, City, State, ZIP, Country
- Professional: LinkedIn, GitHub, Portfolio, Website, Current Company, Job Title
- Education: University, Degree, Major, GPA, Graduation Year
- Work: Years of Experience, Responsibilities, Start/End Dates
- Legal: Work Authorization, Sponsorship Requirements, Security Clearance
- EEO: Gender, Race, Veteran Status, Disability Status (optional)
- Additional: Preferred Location, Start Date, Relocation, Salary Expectations
- Notion-inspired UI: Clean, modern, professional
- Subtle animations: Smooth hover effects, transitions
- Typography: -0.02em letter spacing for headings, proper font weights
- Color System: Consistent color scheme across all views
- Responsive: Works on all screen sizes
- Accessibility: Proper ARIA labels, keyboard navigation
ChromeExtension/
βββ backend/ # Node.js + Express backend (NEW!)
β βββ controllers/ # API controllers
β β βββ authController.js # User authentication
β β βββ groupController.js # Group management
β β βββ chatController.js # Chat messages
β β βββ sharedJobController.js # Shared jobs
β β βββ groupAnalyticsController.js # Analytics
β βββ models/ # MongoDB models
β β βββ User.js # User model
β β βββ Group.js # Group model
β β βββ GroupMember.js # Group membership
β β βββ ChatMessage.js # Chat messages
β β βββ SharedJob.js # Shared jobs
β β βββ Comment.js # Job comments
β βββ routes/ # API routes
β β βββ auth.js # Auth endpoints
β β βββ groups.js # Group endpoints
β β βββ chat.js # Chat endpoints
β β βββ sharedJobs.js # Shared job endpoints
β β βββ groupAnalytics.js # Analytics endpoints
β βββ socket/ # Socket.io handlers
β β βββ chatHandlers.js # Chat events
β β βββ groupHandlers.js # Group events
β βββ middleware/ # Express middleware
β β βββ auth.js # JWT authentication
β β βββ rateLimiter.js # Rate limiting
β βββ config/ # Configuration
β β βββ database.js # MongoDB connections
β βββ server.js # Main server file
β
βββ job-filter/
β βββ content.js # LinkedIn page filtering & job extraction
β βββ filter-panel.css # Filter panel styles
β βββ filter-panel.html # Filter panel UI
β
βββ tracking-dashboard/
β βββ dashboard.html # Main dashboard (4 views)
β βββ dashboard.css # Dashboard styles
β βββ dashboard.js # Dashboard logic & view switching
β βββ job-detail.html # Individual job detail page
β βββ job-detail.css # Job detail styles
β βββ job-detail.js # Job detail logic
β βββ job-tracker.js # Job data management
β βββ stats.js # Stats/analytics logic
β βββ stats.css # Stats view styles
β βββ chart.min.js # Chart.js library
β βββ groups.html # Groups dashboard (NEW!)
β βββ groups.css # Groups styles (NEW!)
β βββ groups.js # Groups logic (NEW!)
β βββ group-detail.html # Group detail page (NEW!)
β βββ group-detail.css # Group detail styles (NEW!)
β βββ group-detail.js # Group detail logic (NEW!)
β
βββ autofill/
β βββ profile-setup.html # Profile setup page
β βββ profile-setup.css # Profile setup styles
β βββ profile-setup.js # Profile setup logic
β βββ autofill-content.js # Content script for autofill
β βββ autofill-engine.js # Form autofill logic
β
βββ shared/
β βββ background.js # Background service worker
β βββ popup.html # Extension popup
β βββ popup.css # Popup styles
β βββ popup.js # Popup logic
β βββ linkedin-html-cleaner.js # HTML cleaner for job descriptions
β βββ config.js # API configuration (NEW!)
β βββ auth-api.js # Authentication API wrapper (NEW!)
β βββ group-api.js # Group API wrapper (NEW!)
β βββ socket-client.js # Socket.io client (NEW!)
β
βββ manifest.json # Extension configuration
See ARCHITECTURE.md for detailed documentation.
POST /api/auth/register
- Register a new user account
- Body:
{ name, email, password } - Returns:
{ token, user }
POST /api/auth/login
- Login to existing account
- Body:
{ email, password } - Returns:
{ token, user }
GET /api/auth/me
- Get current user profile
- Headers:
Authorization: Bearer <token> - Returns:
{ user }
GET /api/groups
- Get all groups for current user
- Headers:
Authorization: Bearer <token> - Returns:
{ groups[] }
POST /api/groups
- Create a new group
- Body:
{ name, description, isPublic } - Returns:
{ group, inviteCode }
GET /api/groups/:id
- Get group details
- Returns:
{ group }
POST /api/groups/:id/join
- Join a group with invite code
- Body:
{ inviteCode } - Returns:
{ group, member }
POST /api/groups/:id/leave
- Leave a group
- Returns:
{ success: true }
GET /api/groups/:id/members
- Get all group members
- Returns:
{ members[] }
GET /api/groups/:id/messages
- Get chat messages for a group
- Query:
?limit=50&before=messageId - Returns:
{ messages[] }
POST /api/groups/:id/messages/:msgId/reactions
- Add reaction to a message
- Body:
{ reactionType: 'π' } - Returns:
{ message }
GET /api/groups/:id/jobs
- Get all shared jobs in a group
- Query:
?workType=remote&search=engineer - Returns:
{ jobs[] }
POST /api/groups/:id/jobs
- Share a new job to the group
- Body:
{ company, title, location, salary, workType, description, linkedinUrl } - Returns:
{ job }
GET /api/groups/:id/jobs/:jobId
- Get shared job details
- Returns:
{ job }
POST /api/groups/:id/jobs/:jobId/save
- Save shared job to personal tracker
- Returns:
{ success: true, job }
POST /api/groups/:id/jobs/:jobId/apply
- Mark shared job as applied
- Returns:
{ success: true, job }
DELETE /api/groups/:id/jobs/:jobId
- Delete a shared job (admin/owner only)
- Returns:
{ success: true }
GET /api/groups/:id/analytics
- Get group analytics and statistics
- Returns:
{ stats, charts }
GET /api/groups/:id/leaderboard
- Get member leaderboard
- Returns:
{ leaderboard[] }
Client β Server:
chat:join- Join a group roomchat:leave- Leave a group roomchat:message- Send a chat messagechat:typing- User is typingchat:reaction- Add message reaction
Server β Client:
chat:message- New message receivedchat:typing- Someone is typingchat:reaction- Reaction addedjob:shared- New job sharedjob:saved- Job saved by memberjob:applied- Job applied by membermember:joined- New member joinedmember:left- Member left groupuser:online- User came onlineuser:offline- User went offlineerror- Error occurred
Dual MongoDB Setup:
- Production MongoDB (Cloud) - Stores user accounts and personal job data
- Local MongoDB - Stores group features, chat messages, and shared jobs
- Why Dual Setup? - Separates personal data from collaborative features for better scalability
Cross-Database Data Fetching:
- Manual user data fetching instead of Mongoose
.populate() .populate()only works within the same database connection- Solution: Fetch user from production DB, attach to chat message, broadcast via Socket.io
Socket.io Real-time Events:
chat:message- New chat messagechat:typing- User typing indicatorchat:reaction- Message reaction addedjob:shared- New job shared to groupjob:saved- Member saved a shared jobjob:applied- Member applied to a shared jobmember:joined- New member joined groupmember:left- Member left groupuser:online- User came onlineuser:offline- User went offline
API Endpoints:
- Auth:
/api/auth/register,/api/auth/login,/api/auth/me - Groups:
/api/groups(CRUD),/api/groups/:id/join,/api/groups/:id/leave - Chat:
/api/groups/:id/messages,/api/groups/:id/messages/:msgId/reactions - Shared Jobs:
/api/groups/:id/jobs,/api/groups/:id/jobs/:jobId/save,/api/groups/:id/jobs/:jobId/apply - Analytics:
/api/groups/:id/analytics,/api/groups/:id/leaderboard
Security:
- JWT authentication with Bearer tokens
- Rate limiting on all endpoints (100 requests/15 minutes)
- Role-based authorization (Admin, Moderator, Member)
- Input validation and sanitization
- CORS enabled for Chrome extension
Current Features:
- Extract GitHub profile URL from resume during profile setup
- Autofill GitHub profile in job application forms
- Recognize GitHub field variations: "github", "github-url", "github-profile", "githuburl"
Planned Features (Roadmap):
- Pull repository statistics from GitHub API
- Display contribution graph and activity
- Show top languages and popular repositories
- Include GitHub stats in application tracking
- Auto-populate GitHub achievements in applications
When you click "Track Application", the extension automatically extracts:
Location:
- Primary:
.tvm__text--low-emphasisin tertiary description - Fallback:
.jobs-unified-top-card__bullet - Example: "San Francisco Bay Area"
Salary:
- Primary:
.job-details-fit-level-preferences buttonwith salary text - Regex:
/\$[\d,]+(?:K)?(?:\/yr)?(?:\s*-\s*\$[\d,]+(?:K)?(?:\/yr)?)?/i - Example: "$140K/yr - $250K/yr"
Work Type:
- Primary:
.job-details-fit-level-preferences buttonwith "On-site", "Remote", or "Hybrid" - Example: "On-site"
Description HTML:
- Extracts full innerHTML from LinkedIn job description
- Preserves
<strong>tags for headings - Cleans LinkedIn-specific classes and IDs
- Maintains structure:
<p>,<ul>,<li>
HTML Cleaner (shared/linkedin-html-cleaner.js):
- Removes LinkedIn classes, IDs, attributes
- Preserves semantic HTML structure
- Cleans up empty spans and HTML comments
- Removes excessive
<br>tags - Extracts 40+ skills (Python, JavaScript, React, Django, AWS, etc.)
CSS Styling (tracking-dashboard/job-detail.css):
.description-content.formatted p strong {
display: block;
font-size: 16px;
font-weight: 700;
margin-top: 24px;
margin-bottom: 12px;
}Result: Bold headings with proper spacing like "Summary", "Requirements", "Benefits"
Data Processing:
- Groups jobs by week or month
- Calculates success/interview rates
- Computes average response times
- Tracks timeline events
Chart Configuration:
- Uses Chart.js 4.4.1
- Stacked bar chart for timeline
- Doughnut chart for status distribution
- Custom tooltips and colors
- Responsive canvas sizing
Response Time Calculation:
const days = Math.round((response - applied) / (1000 * 60 * 60 * 24));Autofill works on:
- Workday
- Greenhouse
- Lever
- Taleo
- iCIMS
- SmartRecruiters
- Jobvite
- Breezy HR
- Workable
- Generic application forms
- β Backend Infrastructure: Node.js + Express + MongoDB + Socket.io
- β Group Management: Create/join groups with invite codes
- β Real-time Chat: Socket.io powered instant messaging
- β Share Jobs: Share job opportunities with group members
- β Inline Job Sharing: Share jobs directly in chat with rich cards
- β Save to My Jobs: Save shared jobs to personal "Saved" kanban column
- β Mark as Applied: Track applications from shared jobs
- β Message Reactions: React with π β€οΈ π₯ π emojis
- β Typing Indicators: See when others are typing
- β Online Status: Green dot for online members
- β Job Statistics: Track views, saves, and applications
- β Member Management: View members with roles and stats
- β Dual MongoDB Setup: Production + Local databases
- β JWT Authentication: Secure user authentication
- β Rate Limiting: Prevent spam and abuse
- β 5-Column Kanban: Added "Saved" column (purple)
- β Major Autofill Overhaul: Completely redesigned autofill engine with 90+ field types
- β 7-Step Profile Setup: Comprehensive wizard for profile creation
- β Resume Parsing: Automatic extraction of data from uploaded resumes
- β Platform-Specific Logic: Optimized autofill for Workday, Greenhouse, Lever, and more
- β GitHub Profile Support: Extract and autofill GitHub profile URLs
- β Multi-Page Forms: Automatic detection and filling across multiple form pages
- β Legal & EEO Fields: Smart handling of work authorization and compliance questions
- β Enhanced Field Mapping: Improved accuracy with better field detection algorithms
- β Visual Feedback: Real-time highlighting of filled fields
- β Cover Letter Management: Upload and manage cover letters
- β Added Stats Overview page with 5 charts
- β Auto-extract location from LinkedIn
- β Auto-extract salary from LinkedIn
- β Auto-extract work type (On-site/Remote/Hybrid)
- β Preserve job description HTML formatting
- β Bold headings in job descriptions
- β Skill extraction (40+ keywords)
- β Response time tracking
- β Application timing insights (how fast you applied)
- β Competition level tracking (number of applicants)
- β Date range filters
- β Notion-style design polish
backend/server.js- Express + Socket.io server (NEW!)backend/controllers/- 5 API controllers (NEW!)backend/models/- 6 MongoDB models (NEW!)backend/socket/chatHandlers.js- Socket.io chat events (NEW!)tracking-dashboard/groups.js- Groups dashboard (NEW!)tracking-dashboard/group-detail.js- Group detail page (2500+ lines) (NEW!)shared/socket-client.js- Socket.io client wrapper (NEW!)shared/group-api.js- Group API wrapper (NEW!)autofill/autofill-engine.js- Enhanced autofill engine (950 lines)autofill/profile-setup.js- 7-step profile wizard (501 lines)tracking-dashboard/stats.js- Stats manager class (382 lines)shared/linkedin-html-cleaner.js- HTML cleaner (126 lines)
- ARCHITECTURE.md - Technical architecture and module details
- JOB_SHARE_SUMMARY.md - Group collaboration feature roadmap (NEW!)
- JOB_SHARE_TASKS.md - Detailed task breakdown for group features (NEW!)
- manifest.json - Extension configuration
- DEBUG.md - Debugging guide for formatting issues
- FEATURE-STATUS.md - Feature implementation status
Tech Stack:
- Frontend: Vanilla JavaScript (ES6+), Chrome Extension Manifest V3
- Backend: Node.js, Express.js, Socket.io
- Database: MongoDB (Dual setup - Production + Local)
- Authentication: JWT (JSON Web Tokens)
- Real-time: Socket.io WebSockets
- Charts: Chart.js 4.4.1 for analytics
- Storage: Chrome Storage API + MongoDB
- Styling: Modern CSS (Grid, Flexbox, CSS Variables)
- No frontend frameworks - Pure JavaScript for performance
Key Files:
backend/server.js- Express + Socket.io server (NEW!)backend/socket/chatHandlers.js- Real-time chat events (NEW!)tracking-dashboard/group-detail.js- Group detail page (2500+ lines) (NEW!)shared/socket-client.js- Socket.io client wrapper (NEW!)shared/group-api.js- Group API wrapper (NEW!)job-filter/content.js- LinkedIn filtering & data extraction (875 lines)tracking-dashboard/dashboard.js- Dashboard UI & view switching (654 lines)tracking-dashboard/stats.js- Analytics & charts (382 lines)autofill/autofill-engine.js- Enhanced form autofill logic (950 lines)autofill/profile-setup.js- Profile setup wizard (501 lines)shared/background.js- Background service workershared/linkedin-html-cleaner.js- HTML cleaner (126 lines)
Chrome APIs Used:
chrome.storage.local- Job data persistencechrome.runtime- Message passingchrome.tabs- Tab managementchrome.action- Extension icon clicks
Backend APIs:
- Express.js - RESTful API server
- Socket.io - WebSocket server for real-time features
- Mongoose - MongoDB ODM
- JWT - Authentication tokens
- bcrypt - Password hashing
- cors - Cross-origin resource sharing
Design System:
- CSS Variables for colors
- Consistent spacing (8px grid)
- Typography scale (12px, 13px, 14px, 16px, 28px)
- Border radius: 6px (cards), 4px (buttons)
- Shadows:
0 2px 8px rgba(0,0,0,0.04)on hover
- Chrome 88+ (Manifest V3 support)
- Edge 88+ (Chromium-based)
- Opera 74+ (Chromium-based)
- Brave (latest)
- Minimal memory footprint (~5MB)
- Lazy loading of charts (only when Stats view active)
- Efficient DOM manipulation
- Debounced search/filters
- No external API calls (all local)
Personal Job Data:
- All personal job tracking data stored locally in Chrome storage
- Synced to your personal MongoDB account (optional)
- No third-party access to your job data
Group Collaboration Data:
- Group messages and shared jobs stored in MongoDB
- Only visible to group members
- Encrypted in transit (HTTPS/WSS)
- No data sold to third parties
Authentication:
- Passwords hashed with bcrypt
- JWT tokens for secure API access
- Tokens stored securely in Chrome storage
Open Source:
- Full source code available on GitHub
- Audit the code yourself
- No hidden tracking or analytics
Extension:
- LinkedIn may change HTML structure (selectors may need updates)
- Old jobs (tracked before v2.0) won't have location/salary/HTML
- Charts require Chart.js to load (included locally)
- Calendar view shows max 100 jobs per month
Group Collaboration:
- Backend server must be running for group features to work
- Requires internet connection for real-time chat
- Socket.io connection may timeout after 30 minutes of inactivity
- Maximum 50 members per group (configurable)
- Maximum 1000 messages per group (older messages archived)
- File uploads not yet supported in chat
- Cannot edit/delete messages yet (coming in v3.1)
Stats not showing:
- Check console for errors
- Ensure Chart.js loaded (
window.Chartshould exist) - Reload extension
- Clear browser cache
Location/salary not auto-filled:
- LinkedIn may not show these fields for all jobs
- Only NEW jobs (tracked after update) will have auto-extraction
- Check console logs for extraction status
Job descriptions not formatted:
- Only NEW jobs will have HTML formatting
- Old jobs need to be re-tracked
- See DEBUG.md for detailed troubleshooting
Group features not working:
- Check backend server is running:
cd backend npm start - Verify MongoDB is running:
# macOS brew services list | grep mongodb # Linux sudo systemctl status mongod
- Check API URL in
shared/config.js:- Should be
http://localhost:3000/apifor local development - Should be production URL if using deployed backend
- Should be
- Check browser console for errors:
- Open DevTools (F12) β Console tab
- Look for authentication errors or network errors
- Clear Chrome storage and re-login:
- Go to
chrome://extensions/ - Click "Remove" on the extension
- Reload the extension
- Login again
- Go to
Chat messages not sending:
- Check Socket.io connection in console (should see "Socket connected")
- Verify you're a member of the group
- Check network tab for WebSocket connection
- Reload the page
Shared jobs not appearing:
- Refresh the page
- Check if you have permission to view shared jobs
- Verify the job was shared to the correct group
- Check console for API errors
"Unknown User" in chat:
- This was a known issue in v3.0.0 - fixed in latest version
- Update to latest version from GitHub
- Reload the extension
Socket.io disconnecting:
- Check your internet connection
- Backend server may have restarted
- Refresh the page to reconnect
- Check backend logs for errors
We welcome contributions! Here's how to get started:
- Fork the repository on GitHub
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/ChromeExtension.git cd ChromeExtension - Create a feature branch:
git checkout -b feature/amazing-feature
- Make your changes
- Test thoroughly:
- Reload extension in Chrome
- Test all views (Kanban, Table, Calendar, Stats)
- Test autofill on different platforms
- Check console for errors
- Commit with descriptive message:
git add . git commit -m "Add amazing feature: description"
- Push to your fork:
git push origin feature/amazing-feature
- Open a Pull Request on GitHub
- Use ES6+ features (arrow functions, async/await, destructuring)
- Add comments for complex logic
- Follow existing code style and naming conventions
- Test on multiple screen sizes
- Console log important operations with prefixes (e.g.,
[Autofill],[Dashboard]) - Keep functions focused and modular
- Update documentation for new features
- Describe what your PR does and why
- Include screenshots for UI changes
- Reference any related issues
- Ensure all tests pass
- Keep PRs focused on a single feature/fix
Completed Features (v3.0):
- Group collaboration with real-time chat
- Share jobs to groups
- Save shared jobs to personal tracker
- Inline job sharing in chat
- Message reactions and typing indicators
- Socket.io real-time communication
- Dual MongoDB setup (Production + Local)
- JWT authentication
- 5-column kanban with "Saved" status
- Enhanced autofill system with 90+ field types
- Resume parsing and automatic data extraction
- GitHub profile extraction and autofill
- Multi-page form support
- Platform-specific autofill logic
- Stats overview with 5 charts
- Application timing and competition tracking
In Progress (v3.1):
- Share job from dashboard to groups
- LinkedIn share integration (share while browsing)
- Comments on shared jobs
- Reactions on shared jobs (π π₯ β€οΈ)
- @Mentions in chat
- Group analytics dashboard
Planned Features (v3.2+):
- Edit/delete messages
- Search and filter shared jobs
- Group settings UI (admin controls)
- Member management UI (promote/demote/remove)
- Notifications system (badge counts)
- GitHub API integration to pull repository stats
- Colored skill pills in job descriptions
- Export to PDF/CSV
- Email reminders for follow-ups
- Company research integration (Glassdoor, Blind)
- Salary comparison with market data
- Interview preparation notes and resources
- Job search goals and tracking
- Browser notifications for deadlines
- Dark mode
- AI-powered cover letter generation
- Resume tailoring suggestions based on job description
MIT License - feel free to use, modify, and distribute
- Backend Infrastructure: Node.js + Express + MongoDB + Socket.io
- Group Management: Create/join groups with invite codes
- Real-time Chat: Socket.io powered instant messaging with typing indicators
- Share Jobs: Share job opportunities with group members
- Inline Job Sharing: Share jobs directly in chat with rich cards
- Save to My Jobs: Save shared jobs to personal "Saved" kanban column
- Mark as Applied: Track applications from shared jobs
- Message Reactions: React with π β€οΈ π₯ π emojis
- Online Status: See who's currently online with green dot
- Job Statistics: Track views, saves, and applications for shared jobs
- Member Management: View members with roles (Admin, Moderator, Member)
- Dual MongoDB Setup: Production (cloud) + Local databases
- JWT Authentication: Secure user authentication with Bearer tokens
- Rate Limiting: Prevent spam and abuse (100 req/15min)
- 5-Column Kanban: Added "Saved" column (purple) for saved jobs
- Cross-Database Fetching: Manual user data fetching across MongoDB connections
- Socket Rooms: Group-specific real-time broadcasts
- API Endpoints: 30+ RESTful endpoints for groups, chat, jobs, analytics
- Major Autofill Overhaul: Complete redesign of autofill engine
- Enhanced profile setup with 7-step wizard
- Resume parsing with automatic data extraction
- GitHub profile URL extraction and autofill
- 90+ field types now supported (up from 30+)
- Platform-specific autofill logic for Workday, Greenhouse, Lever
- Multi-page form detection and automatic filling
- Legal and EEO field handling
- Cover letter upload and management
- Visual feedback with field highlighting
- Improved field detection algorithms
- Added Stats Overview with 5 charts
- Auto-extract location, salary, work type from LinkedIn
- Job description HTML formatting with bold headings
- Skill extraction (40+ keywords)
- Response time tracking
- Application timing insights (how fast you applied)
- Competition level tracking (number of applicants)
- Date range filters (7d, 30d, 3m, all time)
- Notion-style design improvements
- LinkedIn HTML cleaner for job descriptions
- LinkedIn job filtering (time, reposts, blacklist)
- Job application tracking dashboard
- Kanban, Table, Calendar views
- Basic autofill system
- Chrome storage integration
Found a bug? Have a feature request? We'd love to hear from you!
- Check existing issues on GitHub Issues
- Create a new issue with:
- Clear, descriptive title
- Browser version (Chrome/Edge/Brave)
- Extension version (check
chrome://extensions/) - Error messages from console (F12 β Console tab)
- Screenshots or screen recordings
- Steps to reproduce the issue
- Expected vs. actual behavior
- Open a GitHub Issue with the "enhancement" label
- Describe the feature and why it would be useful
- Include mockups or examples if applicable
- Check the Troubleshooting section below
- Review ARCHITECTURE.md for technical details
- Search closed issues for similar problems
Built with:
- Chart.js - https://www.chartjs.org/
- Chrome Extensions API - https://developer.chrome.com/docs/extensions/
Inspired by:
- Notion's clean design philosophy
- Modern productivity tools
- The pain of job searching π
GitHub: https://github.com/VIJAYRUR/ChromeExtension
Pull Latest Changes:
cd ChromeExtension
git pull origin mainCheck for Updates:
- Watch the repository on GitHub for notifications
- Check the Changelog for new features
- Review Recent Updates section
Version History:
- Current: v3.0.0 (Group Collaboration & Real-time Chat)
- Previous: v2.1.0 (Enhanced Autofill)
- Previous: v2.0.0 (Stats & Analytics)
- Initial: v1.0.0 (Core Features)
Made with β€οΈ to make job searching less painful
β Star this repo if it helped you land a job! π Report bugs to help us improve π Contribute to make it even better π’ Share with friends who are job hunting