Skip to content

MassRobotics Job Portal - Connecting robotics talent with innovative companies

Notifications You must be signed in to change notification settings

MassRobotics-AMR/robotics-job-portal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MassRobotics Job Portal

A job matching platform for the robotics industry connecting candidates with companies in the MassRobotics ecosystem.

Tech Stack

  • Backend: Node.js + Express
  • Frontend: React (Vite)
  • Database: PostgreSQL (with Prisma ORM)
  • Authentication: JWT tokens
  • PDF Processing: pdf-parse library

Prerequisites

  • Node.js 18+
  • PostgreSQL 15+ (or Docker)
  • npm

Quick Start

1. Start PostgreSQL

Option A: Using Docker

docker-compose up -d

Option B: Using local PostgreSQL Create a database named robotics_job_portal and update the connection string in backend/.env.

2. Set up the Backend

cd backend

# Install dependencies
npm install

# Run database migrations
npx prisma migrate dev --name init

# Seed the database with MassRobotics companies
npm run db:seed

# Start the server
npm run dev

The backend will run on http://localhost:3001

3. Set up the Frontend

cd frontend

# Install dependencies
npm install

# Start the development server
npm run dev

The frontend will run on http://localhost:5173

Usage

For Candidates

  1. Go to http://localhost:5173 and click "Candidate Login"
  2. Register a new account or log in
  3. Upload your resume (PDF)
  4. Set your job preferences (position type, preferred work mode, location)
  5. Select up to 5 companies you're interested in

For Companies

Companies have pre-seeded accounts. Access the company login at: http://localhost:5173/login/company

Login with:

  • Company Name: Enter the company name (e.g., "Ava Robotics")
  • Password: company123

Once logged in, you can:

  • Search candidates by keywords, position type, work mode, location
  • Filter by submission date
  • Filter to see only candidates interested in your company
  • View full-page resume previews
  • Download resumes

Configuration

All configurable values are in backend/src/config/settings.js:

module.exports = {
  MAX_PREFERRED_COMPANIES: 5,    // Max companies a candidate can select
  RESULTS_PER_PAGE: 10,          // Pagination page size
  JWT_EXPIRY: '7d',              // JWT token expiration
  MAX_RESUME_SIZE_MB: 10,        // Max resume file size
};

Project Structure

robotics-job-portal/
├── backend/
│   ├── src/
│   │   ├── config/settings.js     # Configurable values
│   │   ├── controllers/           # Route handlers
│   │   ├── middleware/auth.js     # JWT authentication
│   │   ├── routes/                # API routes
│   │   └── services/
│   │       ├── pdfService.js      # PDF text extraction
│   │       └── matching/          # Modular matching system
│   ├── prisma/
│   │   ├── schema.prisma          # Database schema
│   │   ├── seed.js                # Company seed data
│   │   └── seedCandidates.js      # Test candidate data
│   └── uploads/                   # Resume storage
├── frontend/
│   ├── public/                    # Static assets (logo, etc.)
│   └── src/
│       ├── config/settings.js     # Frontend config
│       ├── context/AuthContext    # Auth state management
│       ├── pages/                 # Page components
│       └── services/api.js        # API client
└── docker-compose.yml             # PostgreSQL setup

API Endpoints

Authentication

  • POST /api/auth/register - Candidate registration
  • POST /api/auth/login - Login (supports email or company name)
  • GET /api/auth/me - Get current user

Candidates

  • POST /api/candidates/resume - Upload resume
  • PUT /api/candidates/profile - Update profile/preferences
  • GET /api/candidates/profile - Get profile

Companies

  • GET /api/companies - List all companies
  • GET /api/companies/candidates - Search/filter candidates

Resumes

  • GET /api/resumes/:id/preview - Preview resume PDF
  • GET /api/resumes/:id/download - Download resume

Matching Algorithm

The current implementation uses keyword-based scoring. The matching system is modular and can be replaced with more sophisticated algorithms:

// backend/src/services/matching/index.js
const matcher = createMatcher('keyword');  // or 'ml', 'semantic' in the future
const rankedCandidates = matcher.rank(candidates, searchTerms);

Seeded Companies (89 MassRobotics Startups)

The database is seeded with 89 robotics companies from MassRobotics, including:

  • Ava Robotics
  • Dusty Robotics
  • Realtime Robotics
  • PSYONIC
  • WiBotic
  • And 84 more...

License

Copyright (c) MassRobotics. All rights reserved.

About

MassRobotics Job Portal - Connecting robotics talent with innovative companies

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •