Greendale Trail Association
A non profit site
At a Glance
- Status
- Shipped
- Role
- Solo Dev
- Timeline
- 2 months
- SEO 90+
- $0 hosting
- PR previews
- React/ Typescript
- Next.js
- Vercel
Problem and Constraints
- A nonprofit needed a credible, discoverable site to inform prospective participants about events and how to join—without ongoing engineering cost. Constraints inccludes the following: $0 hosting, Lighthouse SEO/Perf/A11y targets, and strong Google discoverability for local trail/event searches.
Success Criteria
- Discoverability
- Ranks for branded search ("Greendale Trail Association") and appears for at least 2 local intent queries (trail/events) within 4–8 weeks.
- Lighthouse targets
- SEO ≥ 90, Performance ≥ 90, Accessibility ≥ 90 on mobile and desktop for the main pages.
- Core Web Vitals
- LCP < 2.5s, INP < 200ms, CLS < 0.1 on key pages (or measured as 'Good' in field data when available).
- Cost
- $0 ongoing hosting cost (free tier) and no paid third-party services required to operate the MVP.
- Usability
- A first-time visitor can find event info and how to join in ≤ 2 clicks from the homepage.
- Reliability
- No broken links/navigation paths; deploy includes automated link checking and a basic smoke test checklist.
- Delivery workflow
- Every change is reviewable via preview deployments; production deploy is reproducible and rollback is a revert away.
- Maintainability
- Content updates are documented (where to edit, how to preview, how to deploy) so updates are low-friction even months later.
Scope
- mvp:
- static informational site (mission, events, how to join, contact info).:
- non-goals:
- paid CMS/database; dynamic backend.:
- next:
- add a contact form only if the org accepts the tradeoffs (spam handling + possible service cost).:
Architecture
Key Decisions
- Static-first architecture (Next.js SSG) to maximize SEO/performance and minimize operational overhead.
- Hosted on Vercel using preview deployments for review and safe iteration before production.
- Content stored in-repo (no CMS) to keep costs at $0 and reduce integration/security surface area.
- Events handled as an optional external data source (Facebook Graph API) with caching/fallback to avoid a DB/API layer in the MVP.
Risks & Mitigations
Risk: Third-party dependency for events (rate limits, API changes, token expiration, outages).
Mitigation: Cache responses with a TTL, render a graceful fallback (static events/message) on failure, and isolate the integration behind a small adapter module.
Risk: Content updates require developer involvement and deployments, slowing iteration for non-technical stakeholders.
Mitigation: Provide a lightweight content workflow (simple markdown/JSON files + documented steps) and use preview deployments for quick review/approval.
Risk: Performance/SEO regressions as features accumulate over time.
Mitigation: Add Lighthouse CI in the pipeline with budgets (e.g., Performance/SEO/A11y thresholds) and basic link checking to catch regressions before merge.
Risk: Free-tier hosting limits (bandwidth/build minutes) could be exceeded if traffic spikes.
Mitigation: Optimize images (responsive sizes, WebP), minimize JS, and have a documented upgrade path (paid tier or alternate static hosting) if thresholds are reached.
Tradeoffs
Decision: Ship a static Next.js site (SSG) on Vercel free tier instead of a dynamic backend
Why: Meets $0 hosting + low-maintenance constraints while maximizing SEO/performance and keeping deployments simple.
Cost: Content changes require a deploy workflow; advanced features that need server state are harder until a backend is added.
Decision: Keep content in-repo instead of adding a CMS
Why: Avoids ongoing cost and operational overhead (accounts, permissions, integrations) while staying fast and reliable.
Cost: Non-technical updates are less self-serve; content edits can bottleneck on a developer.
Decision: Treat events as an optional integration (FB Graph API + caching) rather than building a DB/API layer
Why: Reduces manual updates without introducing database complexity for a low-traffic site.
Cost: Adds third-party dependency risk (rate limits/changes/outages) and requires fallback behavior.
Decision: Defer the contact form until the org accepts the tradeoffs
Why: A form adds spam, moderation, and potential paid services; MVP focus is credibility and discoverability.
Cost: Higher friction for users contacting the org; fewer structured inquiries.
Decision: Optimize for Lighthouse targets over heavier visuals/animations
Why: Fast, accessible pages improve mobile UX and search discoverability for an informational site.
Cost: Design options are constrained to keep page weight and bundle size low.
Shipping & Quality
- Deployment
- preview → prod, rollback plan
- Measurement
- lighthouse, analytics
- Reliability
- link checks, budgets
Impact
- Met performance and SEO targets; improved the org’s online credibility and made event info easier to share (stakeholder feedback).
Retro and Improvements
- Add Lighthouse CI
- A clearer issue-tracking workflow to improve predictability and iteration speed.