Project tour
You unzipped the theme, ran npm install, ran npm run dev, and now you have a folder full of files. This page is the map.
The shape
Section titled “The shape”my-theme/├── astro.config.mjs # Astro + integrations config├── package.json # Dependencies + npm scripts├── tsconfig.json # TypeScript settings├── netlify.toml # Netlify deploy config├── vercel.json # Vercel deploy config├── README.md├── LICENSE.md├── CHANGELOG.md├── public/ # Static assets served at /│ ├── favicon.svg│ ├── og.png│ ├── robots.txt│ └── team/, gallery/, blog/, …└── src/ ├── pages/ # File-based routes ├── layouts/ # Page-level wrappers ├── components/ # The section library ├── content/blog/ # Markdown blog posts ├── content.config.ts # Content collection schema ├── config/ │ ├── site.ts # The config file you'll edit most │ ├── menu.json # (some themes) navigation │ └── social.json # (some themes) social links └── styles/ └── global.css # Design tokens + Tailwind baseWhat each folder is for
Section titled “What each folder is for”src/pages/
Section titled “src/pages/”Astro’s file-based router. Every .astro file here is a URL.
src/pages/index.astro → /src/pages/about.astro → /about/src/pages/blog/index.astro → /blog/src/pages/blog/[slug].astro → /blog/getting-started/ (one per blog post)You’ll edit these to: add a page, rename one, remove a page you don’t need. See Customize → Pages.
src/layouts/
Section titled “src/layouts/”Wrapper components that set up <html>, <head>, fonts, analytics, SEO meta. Every page imports Layout.astro and renders its body inside.
<Layout title="Pricing"> {/* …page content… */}</Layout>You’ll edit these to: add custom head scripts, change the favicon, modify the default OG image generation logic.
src/components/
Section titled “src/components/”The section library — Hero, Pricing, FAQ, Testimonials, Team, Gallery, Carousel, Tabs, and ~20 more. Each is one self-contained .astro file.
You’ll edit these to: change a section’s visual design, add a new section, remove one you don’t use. See Customize → New sections.
src/content/blog/
Section titled “src/content/blog/”Markdown blog posts. Each .md file becomes a URL at /blog/<filename>/ via src/pages/blog/[slug].astro.
You’ll edit these to: write posts. Drop a new .md file in here with frontmatter and it shows up on /blog/. See Writing blog posts.
src/content.config.ts
Section titled “src/content.config.ts”The Zod schema for blog frontmatter. Defines what fields each post must have.
You’ll edit this to: add a new frontmatter field (like tags or featured). See Frontmatter reference.
src/config/
Section titled “src/config/”The control room.
site.ts— the big one. Site name, navigation, brand, SEO, analytics, contact form, newsletter, footer, team, comparison, gallery, carousel, tabs, map. Edit this for most config tasks. Seesite.tsreference.menu.json— (some themes) navigation links, in JSON. If your theme imports from here, edit it; otherwise it’s vestigial.social.json— (some themes) social link URLs, in JSON. Same story.
src/styles/global.css
Section titled “src/styles/global.css”CSS design tokens (brand color, surfaces, fonts, easing curves) plus Tailwind base. The single file that shapes every component’s look.
You’ll edit this to: repaint the theme, change typography, add new utility classes. See Brand colors & fonts.
public/
Section titled “public/”Static assets served as-is at the matching URL. Logo, favicon, OG image, team photos, gallery images.
You’ll edit this to: swap the favicon and OG image, add product screenshots, add team photos.
Build artifacts (gitignored)
Section titled “Build artifacts (gitignored)”After running npm run build:
dist/— the deployable static site. Cloudflare / Vercel / Netlify reads from here.node_modules/— installed dependencies..astro/— Astro’s cache. Safe to delete.
Where to start editing
Section titled “Where to start editing”In rough order of impact:
src/config/site.ts— change site name, nav, brand color, SEO. 80% of customization happens here. → site.ts referencesrc/styles/global.css— change the brand color globally if needed. → Brand colors & fontspublic/— swap the favicon, OG image, and any team / gallery photos. → Images & mediasrc/pages/— delete pages you don’t need (e.g.customers.astroif you don’t have any yet).src/content/blog/— add your first post. → Writing blog postssrc/components/— only when you need to change a section’s visual design.
What you (probably) don’t need to touch
Section titled “What you (probably) don’t need to touch”astro.config.mjs— unless you’re changing the build target or adding a Vercel/Netlify adapter.tsconfig.json— Astro’s defaults are fine.package.json— only editscripts(rarely) ordependencies(when adding a library).netlify.toml/vercel.json— only if you’re tuning deploy-host behavior.
What’s next
Section titled “What’s next”- Install your theme — if you haven’t yet.
site.tsreference — start customizing.- Customize → Pages — add or remove routes.