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).