Rediflow documentation
Project flow. Portfolio flow. One flow.
Scattered spreadsheets. Unclear capacity. Staff asking "who's doing what?" — Rediflow brings planning, tracking, and reporting into one place. One source of truth. No Excel needed.
For directors, managers, employees, and Business-IT who deploy and run the system. Rediflow runs on Podman or Docker — the same stack most organisations already use. Migrations, audit logs, data quality checks, and backups are built in.
Who this is for
- Directors — Budgeting, capacity gaps, underallocated people, sales pipeline
- Managers — Portfolio planning, demand vs capacity, cross-org coordination
- Employees — Your allocations: capacity and project assignments at a glance
- Business-IT — Deploy, configure, and maintain on your infrastructure
For customers
| Document | Description |
|---|---|
| Market and positioning | Market context, vendor landscape, Rediflow's EU-focused positioning |
| Business case | The proposal from your perspective — the challenge, what we offer, estimated impact |
Getting started
| Document | Description |
|---|---|
| Overview | What Rediflow is and how to get started |
| Key features | Screenshots of key features with fictional data |
| All views — screenshots | Every main view on the seeded system |
| Requirements | System requirements, database, OIDC, deployment options |
| Configuration | Environment variables, .env files, load order |
| Feature flags | Person capacity, Share links, Demand deviation — enable or disable features |
| Initial data entry after deployment | Step-by-step: what to do, why, how, and how to verify |
| In-app Help | Help topics in the running application |
Deployment
| Document | Description |
|---|---|
| Deployment overview | Podman/Docker, build vs pre-built, which path |
| Run with Podman or Docker | Build locally and run (image, compose, database) |
| Deploy QA and production | Deploy with pre-built container image (no local build) |
| Deploy on containerized Ubuntu desktop | Nested containers (LXD/LXC): DB and app on same host |
| Deploy on containerized Rocky Linux | Nested containers (LXD/LXC): Rocky Linux 10.1 |
| Containers survive host reboot | Auto-start db and app after reboot |
| Registration and license | Registration, license file, footer |
Operations
| Document | Description |
|---|---|
| QA verification | Verify deployment is healthy — database, migrations, smoke test |
| Database backup | Back up and restore PostgreSQL data (pg_dump, volume backup, WAL) |
| Clean database start | Reset or create a fresh database with schema and project states only |
Authentication
| Document | Description |
|---|---|
| Authentik setup | Run Authentik as a container, configure OIDC (OpenID Connect), groups in token, and Row Level Security |
| Organisation visibility | Restrict projects and people by Authentik group — org-level or assignment-only |
Security
| Document | Description |
|---|---|
| Security overview | Threat model, security posture, and deployment hardening |
| Security deployment | TLS, OIDC, secrets, and hardening checklist |
Import from ODS spreadsheets
| Document | Description |
|---|---|
| Import from ODS — overview | When to use, order of steps, local vs container |
| Project ODS: sheet layout | Project ODS structure and validation |
| People ODS: sheet layout | People ODS structure and validation |
| Portfolio import (multiple projects + staff) | Projects first, then people |
| Seed projects and calendars | Seed calendars and projects from ODS when using the container image |
| Per-org ODS variant | Build and import per-org ODS files |
Capacity and data quality
| Document | Description |
|---|---|
| Capacity: person-months and hours | Person-months, hours, divisor, capacity calculations |
| Cross-organisation capacity requests | Create, view, and respond to capacity requests |
| Fix data quality errors | Resolve data quality issues reported on projects |
| Transfer project home organisation | Change project owner organisation |
Localization and UI
| Document | Description |
|---|---|
| Translate UI | Add and update translations (Babel, .po files) |
| Translate project states | Localise project lifecycle states |
Other
| Document | Description |
|---|---|
| Getting help or extending | Missing feature or data type? Fork, create a ticket, or contact us by email |
| License | O'Saasy license agreement (this project's terms) |
| Third-party open source | Dependency licenses (MIT, Apache 2.0, BSD, etc.) |
| Brand guidelines | Colours, logo, typography, tone — consistent branding |
For developers
| Document | Description |
|---|---|
| Environment setup and E2E tests | Set up dev, test, qa, prod and run E2E tests |
| Authentik: Enforcing login | How login enforcement works, public paths, and how to add routes to the allowlist |
| GitLab release setup | CI/CD release workflow |
| GitLab registry push | Push images to GitLab container registry |
| Populate fixtures | Example fixture, EU projects, export-from-DB |
| Seed testing data | Populate test data for development |
| Push test data to DB | Push fixture data to the database |
| Populate EU projects from org details | Fetch and seed EU project data |
| EU Playwright data repo | EU project data extraction and fixture repo |
| Continue org details fetch | Resume org details fetching |
| Run Eura Hanketietopalvelu | Eura project data extraction |
| Test capacity requests locally | Enable and test capacity request to other org (three organisations) |
| Serve vendor assets locally | Serve Chart.js and other assets from local copy |
Design and plans
Design notes and decisions are in docs/plans/ (not published on Pages).