Skip to content

Latest commit

Β 

History

269 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

RoleLinker

RoleLinker is a lightweight, secure, and modular job-matching platform designed to connect Job Seekers and Recruiters with minimal friction. The system focuses on clarity, performance, and maintainability, offering a clean architecture suitable for real-world scaling and development.

This README gives a developer-oriented overview of how the project is structured and how to navigate it. Deeper project documentation lives in /docs/internal/


πŸš€ What This Project Is

RoleLinker provides:

  • Direct connection between recruiters and job seekers
  • Clean UX for onboarding, profile setup, job discovery, and applications
  • Match-score-based suggestions (deterministic math, no AI)
  • Fully modular backend (AuthManager, ProfileManager, JobManager, SuggestionEngine…)
  • Secure session-based authentication
  • Multi-environment support (local, staging, production)
  • Admin Panel (separate, documented in /docs/internal/admin_panel.md)

This repo includes all backend API services, the full user-facing application, and deployment setup.


πŸ’‘ Project Context

Zero-Cost Constraint β€’ Single Developer β€’ Academic Origin

This project was developed by a single developer as an academic project with a focus on production-grade quality, demonstrating:

  • Zero external costs – No paid services, cloud dependencies, or premium APIs
  • Self-sufficient infrastructure – File-based rate limiting, local logging, no Redis/paid caching
  • Production-ready practices – Despite constraints, follows industry best practices for security, testing, and maintainability
  • Scalable architecture – Designed for easy migration to paid services (Redis, cloud backups) when budget allows

🧱 Technologies Used

Frontend

  • HTML5
  • Vanilla JavaScript (modular scripts)
  • CSS (component-based styles)
  • PHP templating

Backend

  • PHP 8.2 (modular directory structure)
  • MySQL
  • Custom caching layer
  • REST-style API routes

Deployment

  • Docker (Production & Staging)
  • XAMPP (Local Development)
  • Environment files (.env, .env.staging, .env.production)

πŸ“ Folder Structure (Key Modules)

src/
β”œβ”€β”€ admin/                 # Admin panel (not part of user docs)
β”œβ”€β”€ assets/                # JS, CSS, logos, component styles
β”œβ”€β”€ templates/             # PHP templates for UI rendering
β”œβ”€β”€ server/                # All backend APIs + managers + core libraries
β”œβ”€β”€ files/                 # Cache + file uploads (profile pics/resumes)
β”œβ”€β”€ index.php              # Main entry point (post-login router)
β”œβ”€β”€ auth.php               # Auth flow entry
└── manage_profile.php     # Profile setup/edit

Backend Core Structure:

src/server/
β”œβ”€β”€ core/                  # Config, bootstrap, helpers, security
β”œβ”€β”€ lib/                   # Managers (Auth, Profile, Jobs, Cache, etc.)
β”œβ”€β”€ auth_api.php           # Login / Register / Logout
β”œβ”€β”€ profile_api.php        # Profile setup/update/read
β”œβ”€β”€ jobs_api.php           # Job CRUD + applications
β”œβ”€β”€ suggestion_api.php     # Suggestions for jobs & profiles
└── attributes_api.php     # Skills, roles, locations, experience

πŸ”Œ APIs (High-Level Overview)

  • /server/auth_api.php β†’ Auth
  • /server/profile_api.php β†’ Profile CRUD
  • /server/jobs_api.php β†’ Job creation, deletion, application flow
  • /server/suggestion_api.php β†’ Job/Applicant matching
  • /server/attributes_api.php β†’ Skills, roles, locations, experience lists

A full breakdown is available in:

/docs/internal/dev_wiki.md


βš™ Development Setup

Local (XAMPP)

  1. Clone repository
  2. Place project inside htdocs
  3. Import DB schema from /database/base_schema.sql
  4. Configure .env (dev values)
  5. Visit /auth.php

Staging / Production (Docker)

  1. Build with root Dockerfile
  2. Use environment-specific .env files
  3. Deploy to any container host (Railway, Render, self-hosted, etc.)

πŸ” Security Highlights

  • CSRF protection
  • Input validation & sanitization
  • Password hashing (password_hash)
  • Role-based access on DB level
  • Strict file permissions
  • Secure session regeneration
  • Limited public fields via PROFILE_PUBLIC_FIELDS

πŸ“š Documentation

All detailed, module-level, and architectural documentation lives in:

/docs/internal/dev_wiki.md

Additional docs:

  • Database schema: /docs/internal/database.md
  • Admin panel: /docs/internal/admin_panel.md
  • Academic report: /docs/final_report/

🧩 Project Status

Deployment

Environment URL Status
Production rolelinker.ivin.site ⚠️ Offline (Railway credits exhausted)
Staging rolelinker-staging.ivin.site ⚠️ Offline
Local localhost/RoleLinker βœ… Available via XAMPP

Note: Live demos were previously hosted on Railway's free tier. Run locally with XAMPP for full functionality.

Features

Module Status
Auth system βœ… Complete
Profile setup βœ… Complete
Job seeker suggestions βœ… Complete
Recruiter suggestions βœ… Complete
Job search + filters βœ… Complete
Application workflow βœ… Complete
Recruiter applicant viewer βœ… Complete
Analytics dashboard πŸ”œ Planned

For app screenshots: App Preview


🀝 Contributions

If you're extending or improving the project, please read:

docs/internal/dev_wiki.md#extension-guide

for coding standards, file structure rules, and best practices.


�️ Roadmap & Future Improvements

This project follows a principle of transparent technical debt. Below are identified improvement areas:

Architecture

  • Frontend modularization – Split large JS files (discover.js, jobs.js) into focused modules
  • Component extraction – Centralize repeated UI patterns (job cards, profile cards)
  • State management – Implement consistent state pattern across modules

Testing

  • Expand unit test coverage to core managers (AuthManager, JobManager)
  • Add integration tests for API endpoints
  • Set up CI/CD pipeline with automated testing

Scalability (When Budget Allows)

  • Redis caching layer (replace file-based cache)
  • Database read replicas
  • CDN for static assets

Features (Backlog)

  • Real-time messaging between recruiters and candidates
  • Resume parsing and auto-fill
  • Email notifications for application updates
  • Analytics dashboard for recruiters

πŸ“„ Detailed technical debt documentation: docs/internal/TECHNICAL_DEBT.md


οΏ½πŸ“© Contact

For questions or collaboration, use the contact.php page or reach out to the developer directly.

About

Simplified Job Portal. S5 BCA Mini Project

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages