RetroWrap
Free & Open Source

Team retrospectives
built for self-hosting

Download, drop into your PHP host, share the link with your team. No accounts, no SaaS, no dependencies — just lightweight retros on your own server.

Collecting — everyone writes cards privately, hidden from teammates.

How it works

Five steps, one action per step — a focused retrospective flow.

1. Collect

Everyone writes cards privately — what went well, what didn't, what to improve.

2. Group

Cards are revealed. Cluster related feedback under shared themes.

3. Discuss

Spotlight cards one at a time for focused team discussion of the grouped themes.

4. Vote

Prioritize the most important topics. Six votes per person, results sorted by priority.

5. Act

Capture concrete action items with owners and due dates. Export everything.

Why self-hosted?

Retrospectives surface sensitive feedback. Keep it on infrastructure you already trust.

Data stays on your server

Nothing leaves your infrastructure. No cloud vendor, no subprocessor chain, no DPA to sign.

No tracking, no CDNs

Zero analytics, zero third-party scripts. Tailwind and icons are bundled locally — the browser never calls an external domain at runtime.

Audit-friendly

Readable PHP and vanilla JS, no build step, no minification. Your security team can diff and review every line before deploy.

Run these kinds of retros

Any structured reflection where a team collects thoughts, prioritizes them, and agrees on next steps.

Sprint retros

The classic agile ritual at the end of every sprint.

Incident post-mortems

Blameless reviews after outages. Anonymous mode makes it safer to be honest.

Team health checks

Quarterly deeper-dive retros — group, discuss, and vote on each theme properly.

Project wrap-ups

Close-out reflection when a project ships. Capture lessons before people rotate off.

Features

No login required

Share a link, join instantly. No accounts to manage.

Five-step flow

The focused Collect → Group → Discuss → Vote → Act cadence.

Phase timers

Optional countdowns for the bounded phases — collecting, grouping, voting, actions.

Anonymous mode

Hide author names for more honest feedback.

Vote & prioritize

6 votes per person, 2 per column. Results ranked automatically.

Team chat

Built-in side panel for real-time discussion.

Card grouping

Drag-and-drop cards into shared labels to organize themes.

Drag & reorder

Reorder cards and groups within columns during discussion.

Export JSON / CSV

Download retro results for documentation and follow-ups.

Dark mode

Easy on the eyes with full dark theme support.

Built for simplicity

A deliberately small codebase you can read in an afternoon. No framework churn, no transpilers, no lock-in.

PHP + SQLite ~6k PHP + ~5k JS No JS framework Zero build step One SQLite file Self-hosted MIT licence 20+ concurrent users

Frequently asked

Things people usually want to know before they drop the ZIP on their server.

How many concurrent users can it handle?

Comfortably handles 20+ participants per retro on cheap shared hosting. SQLite plus 3-second polling keeps the per-user footprint tiny.

Does it work on mobile?

Yes. The board auto-zooms below 900px and simplifies to three columns on narrow screens. Writing cards, voting, grouping and the team chat all work on phones.

Can I customize the columns or labels?

The three collection columns have default titles (Went well / Went bad / To improve) that you can rename when creating a retro. Group labels for clustering cards are free-form — they can be renamed, recolored, or added on the fly during any retro.

How do backups and migrations work?

Everything lives in data/retro.sqlite. Copy that single file for a full backup. Move it between hosts whenever you want — no import/export dance.

How do I update to a newer version?

Download a newer ZIP, overwrite the files, keep the data/ directory. The database migrates itself on the next page load — no manual SQL.

Is there a hosted demo I can try first?

No — keeping it self-hosted is the point. Drop the ZIP on any PHP host (local, shared, Docker) and you'll have your own instance in under a minute. The install section below walks you through it.

What data can I export?

Each retro exports to JSON or CSV from the admin view. The JSON includes cards, votes, groups, and action items with full metadata — enough to archive retros outside the tool or feed them into other systems.

What's the license? Can I fork it?

MIT. Fork it, self-host it, modify it, ship it inside your company — no strings, no per-seat costs, no usage limits.

Install on your server

Up and running in 60 seconds

RetroWrap runs on any shared hosting with PHP 8+ and SQLite. No composer, no npm, no build step.

1

Download & upload

Download RetroWrap-latest.zip and extract it into your web directory via FTP or your hosting file manager.

public_html/
  app.php
  admin.php
  board.php
  api/
  assets/
  inc/
  data/ ← created automatically
2

Check permissions

Make sure the data/ directory is writable by the web server. Most shared hosts do this automatically. If not:

chmod 750 data/
3

Open in browser

Navigate to https://yourdomain.com/app.php. The database is created automatically on first visit. That's it — create your first retro!

Requirements: PHP 8.0+ with SQLite (pdo_sqlite). No other extensions needed.

Docker: Also available as docker compose up -d — see the included docker-compose.yml.

Updates: Just overwrite the files. The database migrates itself automatically.

Ready to run your next retro?

No sign-up, no credit card, no tracking. Download RetroWrap, drop it on your PHP host, and share the board link with your team.