Installation

Set up Who's OOO on your server using Docker or deploy to fortrabbit

Deploy on fortrabbit (recommended)

The easiest way to run Who's OOO in production is on fortrabbit — a PHP hosting platform purpose-built for Symfony apps. No Docker required.

  1. Create a fortrabbit App — use the minimal stack configuration (€4.5/month) when selecting components in the app creation wizard
  2. Install the fortrabbit GitHub app on your GitHub account
  3. Connect your GitHub repository to the fortrabbit App — you can select an existing repo or create a new one during app setup
  4. Map your deployment branch (e.g. main) to the fortrabbit environment
  5. Configure your .env variables in the fortrabbit Dashboard
  6. Deploy by pushing to your mapped branch — fortrabbit deploys automatically on each git push, or you can trigger deployments manually through the Dashboard

fortrabbit's GitHub integration handles deployment pipelines with Composer and Node.js, intelligent caching for fast successive deployments, and comprehensive settings for deployment strategy, include/exclude patterns, and source directory configuration. We run our own Who's OOO instance on fortrabbit.

Docker Compose (self-hosted)

If you prefer to manage your own infrastructure, Who's OOO ships as a Docker Compose stack.

Prerequisites

You only need three tools installed on your machine:

Tool Version
Docker 20+
Docker Compose 2+
Git any

No host PHP, MySQL, Node, or Composer required — everything runs inside containers.

Clone and Start

git clone https://github.com/igornast/who-is-out-of-office.git
cd who-is-out-of-office
just start

Four services will start:

Service Port Description
nginx 80 Web server
php PHP-FPM with Xdebug
db 3306 MySQL 8.4
mailpit 8025 Local email catcher

On first boot the PHP container automatically installs Composer dependencies, waits for the database, runs migrations, and loads demo fixtures. Watch the container logs until you see "Starting PHP-FPM" — the app is then ready.

Log In

Open http://localhost/app in your browser. You'll see the login page.

Login page with email and password fields The login page at /app

The fixtures create three accounts so you can test every role:

Role Email Password
Admin admin@ooo.com 123
Manager manager@ooo.com 123
User user@ooo.com 123

Dashboard Overview

After logging in you land on the dashboard. What you see depends on your role:

  • Admin — full organization view: leave balance stats, all pending requests, who's out today, upcoming absences, birthdays, and work anniversaries.
  • Manager — same sections, scoped to your direct reports.
  • User — your personal leave balance, who's out today and this week, your upcoming absences, and organization-wide birthdays and work anniversaries.

The sidebar gives access to leave requests, the team calendar, your profile, and (for admins) organization settings.

Admin dashboard showing stats cards, upcoming absences, birthdays, and work anniversaries The admin dashboard with all sections visible

Local Email with Mailpit

The development environment includes Mailpit, a local email catcher. Every email the app sends (invitations, leave request notifications) is captured here instead of being delivered.

Open http://localhost:8025 to view caught emails.

Mailpit inbox showing captured invitation and notification emails Mailpit catches all emails sent in development

Tip: No SMTP configuration needed for local development — Mailpit is pre-configured in the Docker setup.