# Fifteen Years of Investor Conversations, Moved Intact and Put in the Editors' Hands

> How Flowcourier relaunched ProInvestor.com: close to 47,000 member accounts, a forum and more than a million chat messages moved to a modern platform the editors run themselves.

**For more than fifteen years, ProInvestor.com has been where Danish private investors debate stocks and talk about the market, many of them every day, in chat channels named after the companies they follow.**

Around 40,000 registered accounts, forum posts dating from 2008 and a chat archive reaching back to 2009 all ran on a legacy PHP platform that had grown hard to change. News arrived through a scheduled job polling RSS feeds, and fifteen years of investor Q&A lived in a hand-edited HTML table.

We rebuilt it for Lilholm Media on a modern stack, moved the accounts, the forum and the chat archive across, and put the controls (frontpage, news feeds, ad slots, redirects and the investor Q&A archive) in the editors' hands. The new site went live on Saturday 29 August 2026 with a single switch at the edge, and with no mass email to its members.

![Frontpage](https://flowcourier.com/media/aexnlyg1/frontpage.png)

The new ProInvestor.com frontpage on a laptop: news teasers, stock chat and forum activity on one page

The relaunched ProInvestor.com: forum, stock chat and news under one login.

Two thirds

![Frontpage Mobile](https://flowcourier.com/media/mkuk54u3/frontpage-mobile.png)

The ProInvestor.com frontpage on a phone

The same frontpage on the phone.

One third

## Features

![Next Js](https://flowcourier.com/media/xizgcxbg/next-js.webp)

## The editorial site, in the editors' hands

Built with Next.js and Payload CMS. Editors compose the frontpage as a drag-and-drop grid of eight teaser block types and watch it update live at phone, tablet and laptop sizes; a publish is visible on the next request, with no deploy and no developer. Fifteen news feeds, including Ritzau MarketWire, Nasdaq and Økonomisk Ugebrev, poll on schedules the editors set, show when they were last fetched and why a poll failed, and switch themselves off after repeated failures.

![Nodebb](https://flowcourier.com/media/qfuf4rsq/nodebb.webp)

## Forum and real-time chat under one login

Built on NodeBB. 20,743 topics, 107,063 replies and 203,409 votes came across with their original timestamps, alongside an archive of more than a million chat messages reaching back to 2009, now organised into 32 channels named after the stocks members follow. Chat arrives in real time over WebSockets, one login covers site, forum and chat, and around 750 member-facing interface strings were translated so the community works in Danish.

![Google Ad Manager](https://flowcourier.com/media/4dyfqndd/google-ad-manager.webp)

## Ad operations without a developer

Every Google Ad Manager slot is a row the team edits in the CMS (placement, sizes, order and campaign notes) with a wireframe map of the site showing where each of the 11 placements appears. A site-wide kill switch is one toggle away, and ad scripts load only after a visitor has given consent, on the site and in the forum alike.

![Cloudflare](https://flowcourier.com/media/xkeeo0ue/cloudflare.webp)

## Fifteen years of links kept alive at the edge

Cloudflare protects the site at the edge with strict TLS to the origin, and 174,977 legacy addresses (old threads, posts, profiles and groups) redirect permanently to their new home; we spot-checked them live after launch. Go-live itself was a single origin switch with no DNS propagation to wait for, and the way back was the same switch.

![Hetzner](https://flowcourier.com/media/mwqeq5sy/hetzner.webp)

## Securely hosted in Europe

The whole platform runs on Hetzner in Germany: the site, forum and chat on a dedicated server, member uploads and chat attachments in Hetzner Object Storage in Nuremberg, with daily server snapshots and a nightly database backup alongside them. Member accounts, fifteen years of posts and the chat archive stay on European infrastructure, with a European provider, under GDPR.

![Docker](https://flowcourier.com/media/wlcb3ll3/docker.webp)

## Dockerized end to end

Every part of the platform runs in Docker: the site, the CMS, the forum and chat, and the database, four containers per environment. Staging and production are separate stacks built from the same definitions, so what was tested on staging is what goes live, the database is reachable only on the private container network, and the whole platform can be rebuilt on a fresh server without hand configuration.

![Grafana](https://flowcourier.com/media/osppadkm/grafana.webp)

## One predictable platform

With GitHub Actions, a push to the main branch deploys production in about six minutes, running database migrations first and keeping the previous version if anything fails. Staging runs beside production as a separate stack with its own PostgreSQL 16 database, reachable only on the private container network. Grafana dashboards and seven days of logs show what the site is doing, and backups run every night.

## Fifteen Years of Conversation, Moved Intact

**What came along:**

46,989

member accounts

20,743

forum topics and 107,063 replies, original timestamps intact

203,409

votes carried across

1M+

chat messages, reaching back to 2009

22,881

attachment files and 901 profile pictures, kept in sync to object storage

~175,000

old web addresses that still work

80

investor Q&A sessions, 2011 to 2026

308

Plus members carried into their new group

Old links still work: a thread bookmarked years ago lands on the same discussion in its new home. The investor Q&A archive, 80 sessions from 2011 to 2026, had never been in a database; it was a hand-edited HTML table. It is now 80 structured, searchable records with its own sitemap, and creating a new Q&A event sets up its chat channel and enforces the question window automatically.

Members were not sent a mass password-reset email. Every migrated account was flagged instead, so a member's first login triggers a single reset mail and the new password is stored with bcrypt. Every rehearsal ran sealed off from real mailboxes, so a test run could never email a member.

One candid note: our original design listed chat history as an explicit non-goal, because "chat is ephemeral by nature". The delivered migration moved an archive of more than a million messages anyway.

On Saturday afternoon the new ProInvestor was simply there. Posts from 2008, chat going back to 2009, the links our members had bookmarked for years: all of it came along. Our members have spent fifteen years building this community, and their history was never ours to leave behind.

Helge Larsen, Editor and Publisher, ProInvestor.com

![Qanda](https://flowcourier.com/media/400byce4/qanda.png)

The /qa investor Q&A archive listing sessions by company and date

80 investor Q&A sessions from 2011 to 2026, now structured and searchable.

Two thirds

![Chat Mobile](https://flowcourier.com/media/iz5bic2d/chat-mobile.png)

A ProInvestor stock chat channel on a phone

Real-time stock chat, in Danish, on the phone.

One third

## Beyond a Redesign: Building a Platform the Team Runs

Relaunching a fifteen-year-old community is not a redesign. The hard parts are moving the history without breaking it, handing everyday control to the people who run the site, and making the platform something the team can rely on day to day.

**Here's how we approached it:**

- **Rehearse until the cutover is boring:** The migration ran end to end at least seven times, the last of them the real one. Every step can be safely re-run, the whole run starts with one command, takes a snapshot first and halts on the first failure. The final run took 3 h 27 m across nine scripted phases, against an original budget of about nine hours. In early August we chose to run staging and production side by side on one server precisely so go-live could be a single switch, and so could the way back. From freezing the old site on Friday evening 28 August to the new one serving the domain on Saturday afternoon took under a day, and the old site stays online as a read-only archive.
- **Put the controls where the work happens:** The admin is organised into three groups: Editorial, Content Hub and Settings. Five site-wide settings, from the frontpage to the footer and ad settings, are editable without a developer. Editors create their own permanent or temporary redirects, and renaming a page redirects its old address automatically. The admin is in Danish, with English selectable.
- **Make running it predictable:** Four containers per environment, staging and production as separate stacks with separate databases, the database never exposed publicly and secrets kept outside the code. A push deploys production in about six minutes, every production deployment across the cutover window was green, and dashboards, logs and nightly backups show what the site is doing.

Lilholm Media owned the decisions that shape a community, and the go/no-go: the review on 13 August, the power-user test round, keeping the first-login reset as the permanent onboarding path, and the final go on cutover day. We owned the architecture, migration tooling, deployment pipeline, monitoring and runbook, and closed the handover with an admin walkthrough on 31 August.

![Payload Frontpage Edit](https://flowcourier.com/media/54nmekhh/payload-frontpage-edit.png)

The frontpage grid in Payload CMS with the live preview pane

Editors compose the frontpage and see it live before they publish.

Full

![Ad Slots](https://flowcourier.com/media/wzzpgr0x/ad-slots.png)

The ad-slot list in the CMS with the wireframe placement map

Every ad placement, mapped and switchable from the CMS.

Half

![Feed Configuration](https://flowcourier.com/media/wvadajvj/feed-configuration.png)

A news feed's settings showing last-fetched and last-error fields

News feeds report their own health.

Half

## What's Next?

Go-live was a starting point, not a finish line. ProInvestor.com keeps improving with each release, and members' own requests continue to shape what comes next. With the platform now in the editors' hands, the team can spend its time on what matters most: news, commentary and a lively debate.

**Interested in learning about and discussing investing with Denmark's biggest community of private investors? [Join ProInvestor.com](https://proinvestor.com/).**

Let's explore how a modern, automated platform can put your community, content and membership back in your team's hands, without losing a member, a post or a link.

## How we moved a 15-year-old Danish investor community to a modern platform, with its forum, chat archive and old links intact.

![Og Default](https://flowcourier.com/media/kdvoswvx/og-default.png)

ProInvestor.com relaunch

17 years of discussions migrated
