# MerchantsOfHope.org Recruiting Platform

This is the official recruiting platform for MerchantsOfHope.org, designed to connect talented professionals with opportunities across TSYS Group's diverse business lines.

## Architecture Overview

The platform implements a multi-tenant architecture to support TSYS Group's dozens of independent business lines, each with complete data isolation. Key features include:

- Multi-tenant architecture with data isolation
- OIDC and social media login support
- Job seeker functionality (browse positions, apply, upload resumes)
- Job provider functionality (manage positions, applications)
- Full accessibility compliance (WCAG 2.1 AA standards)
- Security compliance (PCI, GDPR, SOC, FedRAMP)

## Technology Stack

- Backend: Go with Gin framework
- Database: PostgreSQL with GORM
- Authentication: OIDC and OAuth2
- Session Management: Redis
- Frontend: HTML/CSS/JS with accessibility focus
- Containerization: Docker and Docker Compose

## Security & Compliance

The platform implements several security measures to ensure compliance with industry standards:

- PCI DSS compliance for handling any sensitive data
- GDPR compliance for EU data protection
- SOC 2 compliance for security, availability, and privacy
- FedRAMP compliance for government cloud requirements
- Content Security Policy (CSP) headers
- Rate limiting and audit logging
- Secure authentication with OIDC
- Data residency controls

## Project Structure

```
qwen/go/
├── cmd/
├── api/
├── db/                 # Database connection and migrations
├── models/             # Data models
├── middleware/         # Authentication and authorization
├── handlers/           # HTTP request handlers
├── services/           # Business logic
├── utils/              # Utility functions
├── config/             # Configuration management
├── security/           # Security controls and compliance
├── templates/          # HTML templates
├── static/             # Static assets (CSS, JS, images)
├── tests/              # Test files
├── main.go             # Entry point
├── go.mod, go.sum      # Go modules
├── Dockerfile          # Container configuration
└── docker-compose.yml  # Service orchestration
```

## Running the Application

The application is designed to run in Docker containers. To start the application:

1. Ensure Docker and Docker Compose are installed
2. Navigate to the `qwen/go` directory
3. Run `docker-compose up --build`

The application will be available at `http://localhost:17000`.

## API Endpoints

- `GET /health` - Health check
- `POST /api/v1/auth/login` - User login
- `POST /api/v1/auth/register` - User registration
- `GET /api/v1/positions` - Browse job positions
- `POST /api/v1/positions` - Create job position (job providers)
- `POST /api/v1/applications` - Apply to position
- `POST /api/v1/resumes` - Upload resume

## Compliance Features

The platform includes several features to ensure compliance with regulatory requirements:

### GDPR Compliance
- Data residency controls
- User consent mechanisms
- Right to deletion implementations
- Privacy policy integration

### Security Controls
- Role-based access control
- API rate limiting
- Content security policy
- Audit logging
- Secure authentication

### Accessibility
- WCAG 2.1 AA compliance
- Semantic HTML structure
- Proper ARIA labels
- Keyboard navigation
- Sufficient color contrast

## Development

To run tests:
```bash
go test ./tests/...
```

For local development, you can run the application directly:
```bash
go run main.go
```

Note: This requires Go 1.21+, PostgreSQL, and Redis to be installed and running locally.

## Deployment

The platform is designed for containerized deployment. The docker-compose.yml file includes all necessary services:

- Application server
- PostgreSQL database
- Redis for session management
- Nginx as reverse proxy
- Keycloak for OIDC

For production deployment, ensure all security configurations are properly set and consider using Kubernetes for orchestration.