Partner
Poco Brass
Case study06
Modern website for the Thierseifen brass choir with events, instrument guides, news and a media archive

Partner
Poco Brass
Industry
Culture & Community
Core technologies
Next.js · TypeScript · Tailwind CSS
At a glance
DuoByte rebuilt the website for Poco Brass, the Thierseifen brass choir, covering events, instruments, youth work, the board, news and a media archive of Easter and Christmas recordings. It also includes a protected contact form, permanent redirects from the old site and an isolated Docker deployment. The site is live.
Our role: DuoByte planned, designed and built the new website and set up its deployment on the server.
Project work
How the project came together: from the context and requirements through implementation to where it stands today.
Context
Poco Brass is the brass choir (Posaunenchor) of Thierseifen near Waldbröl, Germany. Since 1882 the choir has played at church services, on its Easter tour through the surrounding villages, at confirmations and in small serenades for elderly residents, and it rehearses every Friday at its clubhouse in Thierseifen.
The website serves several audiences at once: parishioners who want to know when the choir is playing, people who want to learn an instrument or return to one, young people, and organizers with a performance request. The choir is also looking for a new musical director and needs a dedicated place for that search.
Challenge
The previous website used its own URLs such as “/Ueber-uns” or “/Oberbergische-Posaunentage”, which lived on in search results and shared links. None of them could be allowed to break during the switch.
In terms of content, the new site had two jobs: show the choir's tradition through photos and recordings, and make it easy for people without prior experience to get started. Events had to be easy to maintain, and past performances must never show up as upcoming ones.
On the operations side, the contact form processes personal data and needs protection against automated submissions. The application also had to run isolated from other services on the server.
Solution
The homepage leads straight to upcoming events and introduces the choir, its values and its youth group. Dedicated pages explain the choir's musical compass, the five instruments from trumpet to tuba with their voices, the youth program and the board with personal profiles.
The events page splits upcoming and past performances automatically based on the current date in German time and highlights the next one; it is regenerated daily. News items have their own detail pages, and a page for the musical director search describes the role and how the director works with the board and the choir.
Implementation
The website is built with Next.js 16 and the App Router, React 19, TypeScript and Tailwind CSS 4. Navigation, events, board profiles, instruments and news live in a single central file that every page and component reads from. Content is maintained in one place without touching layout code, and a site of this size does not need a separate CMS.
Archive videos load only when someone presses play and show a poster image until then. The contact form runs as a Server Action: it validates every field on the server, discards submissions with a filled honeypot field, limits attempts per sender and time window and sends the message through Nodemailer via SMTP over TLS. The sender is set as the reply-to address, so the choir can answer straight from its inbox.
Canonical URLs, Open Graph and Twitter previews, JSON-LD for the organization and website, a sitemap, robots.txt and a web manifest support discoverability. A proxy permanently redirects 16 old URLs as well as alternate hostnames to the canonical domain and the new paths with a 308.
Every push to the production branch runs linting and type checks in GitHub Actions and produces an immutable Docker image. The server runs exactly that image as its own Compose project, with a read-only file system, all Linux capabilities dropped, memory and CPU limits and a port that is reachable only locally behind Caddy. The deploy key can call nothing but the deploy script, and if the new container does not report healthy or reports the wrong version, the script restores the previous state automatically.
Outcome
The new website is live. Visitors see right away when and where Poco Brass plays next, prospective members find everything they need to join, and inquiries arrive in the choir's inbox sorted by topic.
Events, news and profiles can be added in a single file, and every change goes online checked and traceable. Old links and search results still lead to the matching new pages.
System architecture
Technologies were combined to suit the task, operating model and long-term maintainability.
Keep exploring
Next case study

Your project
Tell us what your system needs to do. We bring structure to requirements, architecture and delivery.