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/
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.
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
- HTML5
- Vanilla JavaScript (modular scripts)
- CSS (component-based styles)
- PHP templating
- PHP 8.2 (modular directory structure)
- MySQL
- Custom caching layer
- REST-style API routes
- Docker (Production & Staging)
- XAMPP (Local Development)
- Environment files (
.env,.env.staging,.env.production)
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
/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
- Clone repository
- Place project inside
htdocs - Import DB schema from
/database/base_schema.sql - Configure
.env(dev values) - Visit
/auth.php
- Build with root
Dockerfile - Use environment-specific
.envfiles - Deploy to any container host (Railway, Render, self-hosted, etc.)
- 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
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/
| Environment | URL | Status |
|---|---|---|
| Production | ||
| Staging | ||
| Local | localhost/RoleLinker |
β Available via XAMPP |
Note: Live demos were previously hosted on Railway's free tier. Run locally with XAMPP for full functionality.
| 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
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.
This project follows a principle of transparent technical debt. Below are identified improvement areas:
- 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
- Expand unit test coverage to core managers (
AuthManager,JobManager) - Add integration tests for API endpoints
- Set up CI/CD pipeline with automated testing
- Redis caching layer (replace file-based cache)
- Database read replicas
- CDN for static assets
- 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
For questions or collaboration, use the contact.php page or reach out to the developer directly.