Case study / Website system
Highlands Nordic Sno-Park
A from-scratch rebuild of a legacy community website that preserved its original identity while replacing the underlying hosting, deployment, data, forms, email, and map behavior.
01 / Inherited condition
The visible site had history. The infrastructure had become the liability.
The goal was not to impose a fashionable redesign. The original green frame, snow background, header image, Times-style typography, photographs, wording, and compact small-town character were part of the organization.
The replacement needed to preserve that identity while removing dependence on obsolete hosting and undocumented update paths.
02 / Architecture
- Public pages
Static generated HTML with no runtime UI framework or CMS.
- Interactive map
A 5005 by 2992 source map with hand-traced SVG trail routes, keyboard selection, multi-select highlighting, drag, wheel zoom, and zoom-to-fit.
- Operational data
Snow reports, events, newsletter signups, and contact submissions stored in Cloudflare D1.
- Notifications
Contact and newsletter events notify the club through Resend while D1 preserves the record.
- Payments
The organization’s existing PayPal-hosted membership and donation buttons were preserved rather than replaced without need.
03 / Result
The site became cheaper to operate and easier to account for.
- Cost
The migration reduced recurring website operating cost by approximately $225 per year.
- Ownership
Source, content, route behavior, schema migrations, deployment, and operations are recorded in Git.
- Administration
The club can publish reports and events through a deliberately simple workflow instead of maintaining a general-purpose CMS.
- Verification
The repository includes automated tests, asset and link validation, function bundling, GitHub Actions verification, and production deployment from the main branch.
04 / Deliberate limits
Modern infrastructure did not require erasing the organization.
The site does not use a CMS, account system, session system, PayPal SDK, map library, or large client framework. Those were not omitted to make a stack sound minimal. They were excluded because the operating problem did not require them.
The public update PIN is a deterrent, not authentication. That boundary is documented directly rather than marketed as security.