Hireable LogoHireable
Getting Started

Introduction

Overview of the Hireable platform architecture and development workflow

What is Hireable?

Hireable is a talent marketplace platform that connects employers with talent through a trial-based hiring process. The platform is built as a modern monorepo using TurboRepo, featuring:

  • Next.js 16 Frontend with React 19 and App Router
  • Express Backend with TypeScript
  • MongoDB Database with Mongoose ODM
  • Shared Packages for type safety across the stack

Architecture Overview

The project follows a vertical-slice (feature-first) architecture where features are self-contained modules with their own components, hooks, services, and types.

hireable-monorepo/
├── apps/
│   ├── web/                  # Next.js Frontend
│   │   └── src/
│   │       ├── app/          # Next.js App Router
│   │       ├── features/     # Feature slices
│   │       ├── components/   # Shared UI components
│   │       ├── hooks/        # Global custom hooks
│   │       ├── services/     # API clients
│   │       ├── providers/    # React Context providers
│   │       └── lib/          # Utilities and helpers
│   └── api/                  # Express Backend
│       └── src/
│           ├── controllers/  # Request handlers
│           ├── routes/       # Route definitions
│           └── app.ts        # Application entry
├── packages/
│   ├── shared/               # @hireable/shared
│   │   └── src/
│   │       ├── types/        # API and domain types
│   │       └── utils/        # Validation utilities
│   └── database/             # @hireable/database
│       └── src/
│           ├── models/       # Mongoose models
│           └── db/           # Database connection
└── turbo.json                # Build orchestration

Development Workflow

1. Feature Development

When adding a new feature, create a self-contained slice:

src/features/[feature-name]/
├── components/     # Feature-specific UI
├── hooks/          # Feature-specific hooks
├── services/       # API calls and mappers
├── types/          # Feature types
└── index.ts        # Public API exports

2. Import Pattern

Always import from the feature's public API:

// ✅ Correct - Import from public API
import { authService } from "@/features/auth";
 
// ❌ Avoid - Deep imports into internals
import { authService } from "@/features/auth/services/auth.service";

3. Shared Code

Use the shared packages for cross-cutting concerns:

// Import shared types
import type { User } from "@hireable/shared/types/api";
 
// Import validation utilities
import { SecurityValidator } from "@hireable/shared";
 
// Import database models
import { Employer, Talent } from "@hireable/database";

User Roles

The platform supports four user roles:

RoleDescription
ADMINFull system access
EMPLOYERCan post jobs, manage trials, review applications
TALENTCan apply to jobs, participate in trials
GUESTRead-only access to public job listings

Next Steps

  1. Installation - Set up your development environment
  2. Configuration - Configure environment variables
  3. Project Structure - Detailed folder organization

On this page