We maintain the Redmine instances nobody wants to touch
Our ground is the heavily customised production instance, usually several major versions behind, sometimes under external audit.
Over 15 years of Redmine, as users, administrators and developers.
- Hosting and operations
- Redmine installed and hosted on Debian with nginx, Passenger and PostgreSQL or MySQL. Tested backups, monitoring, certificates, LDAP or SSO authentication, scheduled administration tasks and maintenance modes. For years we ran both Redmine instances of a large IT services company: the one carrying every project in the company, and the one behind its hosting business.
- Forks and upgrades
- Redmine 4 to 5, 6 and 7, with the upgrades that come with it: Rails from 5.2 to 8.1, Ruby from 2.7 to 4.0. The version bump is not the work: the work is what follows, from API breaks and deprecations to regressions in the business models, plus data migrations that keep referential integrity intact.
- Plugins and engines
- Custom plugins: fields, screens, reports, workflow automation. Models, controllers, routes, core overrides through injected modules. Existing plugins ported to Redmine 6 and 7. We write plugins that reapply cleanly on the next release instead of holding it back.
- Theming
- Redmine in your organisation's colours, with an interface fitted to your teams, maintained alongside the rest of the instance so it survives upgrades.
- Application security
- Dependency vulnerability fixes, content security policy, authorisation and open redirect holes, technical information leaks, static analysis findings.
- Integrations
- Inbound and outbound REST APIs: imports, exports, synchronisation and scripts. Enterprise SSO and directory authentication, scheduler orchestration, exchanges with upstream systems.
- Configuration and training
- Instance setup: trackers, statuses, workflows, roles, custom fields. Training for users and administrators, delivered by experienced Redmine and Rails trainers.
Stack
- Ruby on Rails
- Redmine 4 to 7
- Ruby 2.7 to 4.0
- PostgreSQL
- MySQL
- Debian
- nginx
- Passenger
- Docker
- GitLab CI
- Jenkins
One reference
We work on a procurement platform used by several thousand people, built on a heavily rewritten Redmine: eight internal plugins, around sixty business models, a separate front end and live integrations with upstream systems.
On that platform we ran two major upgrades, handled the findings of the static analyser the client mandates, and shrank the fork so the next upgrade costs less than the last one.