






What is inside
Cipres Solar turns technical solar projects into clear, credible case studies with capacity, panel count, energy generation, CO2 savings and payback metrics. Company data, services and FAQs are separated into typed files so the template is quick to adapt for a real installer.
Projects that carry their numbers
Every installation records capacity, panel count, CO2 saved, energy generated and payback period, and the detail page renders them as real figures.
Zero UI framework
No React, no hydration. Each interactive piece is a small Astro script, so the page ships the JavaScript it uses and nothing else.
Nine typed data files
Services, features, company features, FAQ, process, testimonials, navigation and social links. Editing the site is editing an array.
A lead form built to survive the internet
Honeypot, two-tier rate limiting and server-side validation, with Resend behind a swappable provider interface.
Generated Open Graph cards
Real 1200x630 social cards per page, plus sitemap and robots.txt, so a shared link never resolves to a missing image.
One image pipeline, all local
A single entry point, every source inside the repo, optimised by sharp at build time. Nothing is fetched at render time.
An animated loading screen
A loader with video detection covers the first paint, and the hero animation only starts once it is gone.
Accessible and reduced-motion aware
WCAG-compliant components throughout, and every animation checks the visitor's motion preference before it plays.
Typed content collections. You write a file, and the listing, the detail page, the feed and the sitemap pick it up on the next build.
src/content/projects/*.mdInstallations with category, location, capacity and a stats block. Marking one as featured shows it on the home page.src/content/legals/*.mdTitle and description. The filename becomes the route.src/config/*.data.tsNine typed files — services, features, FAQ, process, testimonials, navigation, social links and the rest.---
title: 'Residential Solar Installation'
category: 'Residential'
location: 'San Francisco, CA'
capacity: '10 kW'
date: 2026-12-01
image: '../../assets/projects/my-project.webp'
description: 'Complete solar installation for modern home'
isFeatured: true
stats:
panelCount: 30
co2Saved: '7 tons/year'
energyGenerated: '14,000 kWh/year'
paybackPeriod: '6 years'
client: 'Smith Family'
---The copy
src/config/labels.tsAll page text and SEO copy in one typed file. Translating the site means translating this file and nothing else.
The typefaces
astro.config.mjsFour families loaded through Astro's font API, hashed and served with fallback metrics so the layout does not jump while they load.
The palette
src/styles/global.cssEleven colour tokens in oklch, plus the type presets. Article body styles live in their own stylesheet next to it.
Both have a free tier, and the contact form needs them: the ZIP ships an .env.template with the variables to fill in.
A README written for this template, not copied between them, inside the ZIP. It covers:
Try any demo before you decide
The demos are the real templates, deployed. No signup, no email in the way.





