Horizon is a free, open-source photography website template built on the Astro framework by Cosmic Themes, designed to give photographers a static portfolio site with testimonials and deployable to modern hosting platforms.
What is Horizon?
Horizon is a free photography theme for Astro created by Cosmic Themes, distributed as a GitHub repository. It is a static site starter that takes content defined in structured data files (portfolio items, testimonials, navigation) and generates a complete photography website with a hero section, portfolio pages, and a 404 page. The theme runs on Astro, supports static deployment to Netlify, Vercel, or Cloudflare, and includes a netlify.toml configuration file for smooth Netlify deploys.
Key Features
- Astro framework — Pages are written as .astro or .md files in src/pages, and each file automatically becomes a route; standard Astro CLI commands (dev, build, preview) are fully documented.
- Tailwind CSS styling — The repository metadata identifies Tailwind CSS as the styling system, with global styles in src/styles/global.css.
- Portfolio with dynamic routing — A portfolio section includes both an index page and a dynamic slug route (src/pages/portfolio/[...slug].astro) so each portfolio item gets its own URL.
- Data-driven content — Portfolio entries and testimonials live in separate directories under src/data, letting you add or remove photograph projects by editing JSON-like TypeScript data files.
- Reusable components — Includes a Hero component (src/components/Hero/Hero.astro) and a shared BaseLayout.astro used across all pages.
- Navigation configuration — Main site navigation is defined in a single config file at src/config/navData.json.ts.
- Deployment ready — The template ships with a netlify.toml and instructions for deploying to Netlify, Vercel, or Cloudflare after updating the site URL in astro.config.mjs and public/robots.txt.
Who is it for?
- Professional photographers — Use Horizon to launch an online portfolio that showcases work through portfolio pages and client testimonials without paying for a proprietary theme.
- Freelance web developers — Build fast, lightweight photography sites for clients by forking the repo, swapping in data files, and deploying to static hosting.
- Astro learners — Study a real Astro project structure showing pages, layouts, components, and data imports, plus integration with Tailwind CSS.
How does Horizon work?
Getting started is a six-step process: fork the repository and clone it locally, run npm install to install dependencies, start the dev server with npm run dev, customize styling and content following the linked docs, update the site URL in astro.config.mjs and public/robots.txt, then commit changes and deploy to Netlify, Vercel, Cloudflare, or another provider.
Pricing
Horizon is free and open source under the GPL-3.0 License. If you purchase All Access from Cosmic Themes, you receive a no-attribution-required license for the theme.
FAQ
Is Horizon free?
Yes, Horizon is distributed as open source under the GPL-3.0 License. You can fork, modify, and deploy it for free. For a one-time All Access purchase, Cosmic Themes offers an alternative no-attribution license.
What is Horizon built with?
Horizon is built with Astro as its static site generator and uses Tailwind CSS for styling, per the repository description. It uses .astro components and data files organized in src/data for content.
Can I use Horizon for a commercial photography business?
The GPL-3.0 license permits commercial use. If you want to avoid the copyleft obligations of GPL, you can buy All Access from Cosmic Themes, which grants a separate license without the attribution requirement.
How do I change the content?
Content is edited in the src/data directory: portfolio items in src/data/portfolios, testimonials in src/data/testimonials, and navigation in src/config/navData.json.ts. Styles can be modified in src/styles/global.css.
How do I deploy Horizon?
After updating the site URL in astro.config.mjs and public/robots.txt, run npm run build to generate a static site in ./dist. You can then deploy that output to Netlify (a netlify.toml is included), Vercel, Cloudflare, or any other static hosting provider.








