130 lines
4.2 KiB
Markdown
130 lines
4.2 KiB
Markdown
# MerchantsOfHope.org - Recruiting Platform
|
|
|
|
This is the official repository for MerchantsOfHope.org, the recruiting platform for TSYS Group.
|
|
|
|
## Overview
|
|
|
|
MerchantsOfHope.org is designed to handle:
|
|
- Multiple independent tenants (TSYS Group has dozens of lines of business, all fully isolated from each other)
|
|
- OIDC and social media login
|
|
- Job seekers browsing positions and posting resumes/going through the application process
|
|
- Job providers managing the lifecycle of positions and applications
|
|
|
|
## Tech Stack
|
|
|
|
- Language: Hack (PHP)
|
|
- Framework: Slim Framework 4
|
|
- Container: Docker
|
|
- Deployment: Kubernetes-ready
|
|
|
|
## Architecture
|
|
|
|
- Multi-tenant architecture ensuring complete isolation between different business lines
|
|
- OIDC and social login integration
|
|
- Compliance-ready with USA law, accessibility standards, PCI, GDPR, SOC, and FedRAMP
|
|
|
|
## Development
|
|
|
|
1. Clone this repository
|
|
2. Install dependencies with `composer install`
|
|
3. Set up environment variables in `.env`
|
|
4. Run with Docker Compose
|
|
|
|
## Port Assignment
|
|
|
|
This service runs on port 18000 as per the project requirements.
|
|
|
|
## Testing
|
|
|
|
The project follows Test Driven Development (TDD) methodology. Run tests with:
|
|
```bash
|
|
composer test
|
|
```
|
|
|
|
## Security & Compliance
|
|
|
|
This project implements:
|
|
- Accessibility features for US Government contracts
|
|
- PCI DSS compliance
|
|
- GDPR compliance
|
|
- SOC compliance
|
|
- FedRAMP compliance
|
|
- USA law compliance
|
|
|
|
## API Documentation
|
|
|
|
### Authentication Endpoints
|
|
- `POST /api/auth/login` - Authenticate user
|
|
- `POST /api/auth/logout` - Logout user
|
|
- `POST /api/auth/register` - Register new user
|
|
- `GET /auth/google/callback` - Google OAuth callback
|
|
- `GET /auth/github/callback` - GitHub OAuth callback
|
|
|
|
### Job Endpoints
|
|
- `GET /api/jobs` - List all jobs with optional filters
|
|
- `GET /api/jobs/{id}` - Get specific job
|
|
- `POST /api/jobs` - Create new job (for job providers)
|
|
- `PUT /api/jobs/{id}` - Update job (for job providers)
|
|
- `DELETE /api/jobs/{id}` - Delete job (for job providers)
|
|
- `GET /api/my-jobs` - Get jobs for current tenant (for job providers)
|
|
|
|
### Application Endpoints
|
|
- `POST /api/applications` - Apply for a job
|
|
- `GET /api/my-applications` - Get applications for current user
|
|
- `GET /api/jobs/{id}/applications` - Get applications for a specific job (for job providers)
|
|
|
|
## Database Schema
|
|
|
|
The application uses PostgreSQL with the following main tables:
|
|
- `tenants` - Stores tenant information
|
|
- `users` - Stores user accounts
|
|
- `jobs` - Stores job postings
|
|
- `applications` - Stores job applications
|
|
- `audit_logs` - Stores compliance audit logs
|
|
|
|
## Environment Variables
|
|
|
|
The application expects the following environment variables (defined in `.env`):
|
|
- `APP_NAME` - Application name
|
|
- `APP_VERSION` - Application version
|
|
- `APP_ENV` - Environment (development, production)
|
|
- `DEBUG` - Enable debug mode
|
|
- `TIMEZONE` - Application timezone
|
|
- `DB_HOST` - Database host
|
|
- `DB_NAME` - Database name
|
|
- `DB_USER` - Database user
|
|
- `DB_PASS` - Database password
|
|
- `DB_PORT` - Database port
|
|
- `JWT_SECRET` - Secret for JWT tokens
|
|
- `SESSION_LIFETIME` - Session lifetime in seconds
|
|
- `TENANT_ISOLATION_ENABLED` - Enable tenant isolation
|
|
- `ACCESSIBILITY_ENABLED` - Enable accessibility features
|
|
- `GDPR_COMPLIANCE_ENABLED` - Enable GDPR compliance
|
|
- `PCI_DSS_COMPLIANCE_ENABLED` - Enable PCI DSS compliance
|
|
- `GOOGLE_CLIENT_ID` - Google OAuth client ID
|
|
- `GOOGLE_CLIENT_SECRET` - Google OAuth client secret
|
|
- `GITHUB_CLIENT_ID` - GitHub OAuth client ID
|
|
- `GITHUB_CLIENT_SECRET` - GitHub OAuth client secret
|
|
- `MAIL_HOST` - Mail server host
|
|
- `MAIL_PORT` - Mail server port
|
|
- `MAIL_USERNAME` - Mail server username
|
|
- `MAIL_PASSWORD` - Mail server password
|
|
- `MAIL_ENCRYPTION` - Mail server encryption method
|
|
|
|
## Docker Configuration
|
|
|
|
The application is configured to run with Docker and Docker Compose, including:
|
|
- Application service
|
|
- PostgreSQL database
|
|
- Redis for caching/session storage
|
|
- MailHog for development email testing
|
|
- Nginx as a reverse proxy
|
|
|
|
## Kubernetes Deployment
|
|
|
|
The application is designed for Kubernetes deployment with:
|
|
- Proper resource requests and limits
|
|
- Health checks
|
|
- Configuration via ConfigMaps and Secrets
|
|
- Service definitions for internal and external access
|
|
- Ingress configuration for routing |