CoroAllegro

Case Study

CoroAllegro is Delaware's chamber choir, singing in Wilmington since 1987, and its 40th Anniversary Gala was coming in November 2026. The website was on Wix, and keeping it current took more time than a volunteer board has. The real need was not a new look. It was a site the board could update on its own, with one clear way to buy a gala ticket. I rebuilt it as eight pages on the choir's own Cloudflare account, with event details, the calendar and rehearsal materials kept in a Google Sheet the board already knows how to use.

Visit CoroAllegro.com
CoroAllegro website homepage with the choir posed around a grand piano beneath the headline Extraordinary People. Exceptional Music., and a Gala Tickets button in the header

Project Overview

The board came to me with a date. The gala was in November, and they wanted a website that could carry it. The old site was on Wix and had become hard to maintain.

When I looked closer, a few things mattered more than the design. Links to the gala pointed to two different ticket pages. The newsletter signup did not add anyone to the newsletter. It sent an email to a volunteer, who then had to add each person to the list by hand.

One problem turned up during setup that nobody had asked about. The choir's domain did not have DKIM signing set up properly. DKIM is the signature that lets an email provider confirm a message really came from the domain it claims, and without it, the choir's mail was not reaching AOL addresses. I set it up as part of the move.

My main recommendation was about who keeps the site current. The things that change every season, event dates and times, the rehearsal calendar, and the scores and practice tracks for the singers, live in a Google Sheet the board edits. A custom admin screen would have been one more login and one more tool to learn. A spreadsheet matches how a season actually gets entered: a whole season of dates in one sitting.

A Website the Board Edits in a Spreadsheet

One Google Sheet holds everything that changes during a season. The site reads it when it builds, so an edit in the Sheet becomes a change on the website without anyone opening code.

Three Tabs, Plain Columns: Events, Calendar and Repertoire. Dates, times, venues, descriptions and ticket links for each event. The season’s rehearsal and performance calendar, with a yes or no column for what the public sees. The season’s music, with links to scores and practice tracks for the singers.
Publishes Itself, Once: Entering a season can be forty edits in ten minutes. Instead of rebuilding the site forty times, it waits until the Sheet has been quiet for five minutes and publishes once. The site is current five to ten minutes after the last edit.
Locked Where It Matters: Each event’s web address and title are protected columns. The board updates dates, venues, descriptions and ticket links. New events are set up by me, so a typo can never break a page address.
Photos by Folder: Every event has a Google Drive folder with the same name. Drop concert photos in, and the nightly rebuild resizes them for phones and adds them to the event page.
Fails Safe: If a build ever cannot read the Sheet, it stops, and the last good version of the site stays live. A bad connection never publishes an empty concert list.
Instructions Inside the Sheet: A README tab explains every column in the choir’s own colors, and locked columns are greyed out and labeled, so the instructions are where the editing happens.

One Way to Buy a Gala Ticket

Every gala link on the site, including the gold Gala Tickets button in the header, goes to one gala page. That page has one Buy Tickets button, and it goes to one ticketing page at the venue. A visitor never has to decide which of two links is the right one.

The ticket link itself is a cell in the Events tab. If the venue changes the ticketing page, the board changes one cell and every button on the site follows.

Signups and Messages That Reach the Right Place

Newsletter Signups Land on the List: The signup form on the homepage posts straight to the choir’s Mailchimp audience. Nobody has to copy names from an email into a mailing list, and nobody gets missed.
Contact Forms Sent From the Choir’s Own Domain: The forms on the Auditions and Support pages send from an address on coroallegro.com, through a sending service whose signature is published in the choir’s DNS, so mail servers can confirm the message really came from the choir.
The Browser Never Picks the Recipient: Each form sends a topic, and the server looks up who receives it. A form that lets the browser name its own recipient can be abused to send spam under the choir’s name. This one cannot.
Easy to Tell Apart in the Inbox: Each notification arrives as a formatted email with the sender’s name in the subject, so separate inquiries do not collapse into one Gmail thread.

Leaving Wix Without Losing a Link

Years of Wix pages leave a trail of old addresses in search results, emails and other sites. Every page in the old site's Wix page sitemap now lands somewhere sensible, through 23 permanent redirects. The old singers and board pages go to About, old performance and ticket pages go to Concerts, and old audition pages go to Auditions.

The site and its domain now sit on the choir's own Cloudflare account. The board owns the hosting, the code and the content, and the domain's email records were checked before and after the switch so the choir's existing mail kept flowing. Two months of updates after launch are included, through December 2, 2026.

Results at a Glance

Google PageSpeed Insights

94+
Performance
Mobile 94 / Desktop 100
100
Accessibility
Mobile 100 / Desktop 100
100
Best Practices
Mobile 100 / Desktop 100
100
SEO
Mobile 100 / Desktop 100

I read these scores on October 5, 2026. PageSpeed moves a few points from run to run, so a fresh test may land slightly higher or lower. Run it yourself on PageSpeed Insights, or see the site's structured data in Google's Rich Results Test.

About that mobile 94

The homepage opens with a wide band of choir photos that crossfade, and on a phone the first photo is the largest thing on the screen. That is a deliberate trade: a choir site should open on the choir. The first photo reaches a phone as a 17 to 21 KB AVIF, the other photos wait until the page has finished loading, and visitors who prefer reduced motion never download them at all. Mobile Performance ran between 87 and 94 across three reads on the same morning, which is normal variation for PageSpeed's simulated phone. Desktop was 100 every time.

The Bottom Line

What this means for the choir, in plain terms:

  • The board keeps concerts, the calendar and rehearsal materials current from a spreadsheet, without waiting on a developer.
  • Everyone who wants a gala ticket is sent to the same place.
  • Everyone who signs up for the newsletter is on the newsletter.
  • Old Wix links from search results and past emails still lead somewhere useful.
  • The choir owns its hosting, its code and its content.

The site went live on October 2, 2026, so it is too early for search or ticket numbers. I will add them here once there is a season's worth to report.

SEO Strategy

Someone searching for a choir to hear, or one to join, should find CoroAllegro and get the right facts. The event data is generated from the same Sheet rows that build the event pages, so the two never disagree.

PerformingGroup Schema on Every Page

JSON-LD identifies CoroAllegro as a performing group with its Wilmington address, on all eight pages.

Event Schema With Tickets

The gala page and the spring 2027 event page carry Event markup with the date and description. The gala adds its venue and a ticket Offer.

Descriptive Titles

Each page title names the choir and what the page is for, starting with “Delaware’s Chamber Choir in Wilmington” on the homepage.

Redirects Keep Old Rankings

23 permanent redirects carry the old Wix addresses to their new equivalents, so search engines transfer what those pages had earned.

Search Console From Day One

The domain was verified in Google Search Console with its sitemap on launch day, so indexing can be watched from the start.

Share Images

Pages carry Open Graph images, so links shared on Facebook or in a text message show the choir, not a blank box.

Mobile and Accessibility

Accessibility scores 100 on mobile and desktop. A choir's audience spans every age, so these details were checked page by page, not left to the score:

Motion You Can Stop: The homepage photo band has a visible pause button, and it does not rotate at all for visitors whose device asks for reduced motion.
Links That Look Like Links: Links inside sentences are underlined at rest, so they do not rely on color alone.
Accurate Link Names: The header logo’s accessible name includes its tagline, so what a screen reader announces matches what is on screen.
Photos Sized for Phones: Every photo is resized at build time and served as AVIF or WebP with a JPEG fallback, so a phone downloads the size it needs, not the original.
Photo Metadata Removed: Location and camera data were stripped from every published photo before launch.

AI Discoverability

People now ask AI assistants things like “what concerts are on in Wilmington this fall.” The site gives them a clean answer:

Structured Events: Event markup on the event pages states the date, and for the gala the venue and ticket link, in a form an assistant can read directly instead of guessing from page text.
One Clear Identity: The same name and address appear in the visible pages and in the PerformingGroup data on every page.
Always Current: Because the event data comes from the Sheet, it updates when the board updates a date. An assistant never finds last season’s concert described as upcoming.

Technology Stack

ComponentTechnology
FrameworkNext.js static export with Tailwind CSS
HostingCloudflare Pages, on the choir’s own account
Domain / DNSCloudflare (client-owned)
ContentGoogle Sheet and Google Drive folders, read at build time
PublishingSheet-triggered rebuild after five quiet minutes, plus a nightly rebuild
FormsCloudflare Pages Function, sending through Resend
NewsletterSignup form posting directly to Mailchimp
Members’ AreaPassword-protected, with rate-limited sign-in
ImagesResized at build with sharp; AVIF / WebP with JPEG fallback
SEOJSON-LD (PerformingGroup, Event, Offer) + Open Graph
MonitoringGoogle Search Console

Kevin did an amazing job refreshing and streamlining our CoroAllegro web site. He is not only an expert in the mechanics of web site builds, but also has a great designers eye, capturing the essence and feel of our organization. Additionally, he saved us real money on website hosting fees! Kevin was fun to work with and actd as an adjunct arm of our “marketing department”.

John Walker, CoroAllegro

Is Your Website Hard to Keep Current?

CoroAllegro needed a site its volunteers could update themselves before a big night. If the things on your site that change most are the hardest to change, tell me what you are working with.