Skip to content
New: Customize your theme with an AI assistant. Read the guide

Margo is an Astro and Tailwind CSS theme for an editorial portfolio: a solo designer, a small design studio, or a photographer. It ships 3 homepages, case studies and photo series, services, pricing, a journal, and the usual inner pages, in English, French, and Arabic with full right-to-left support, in light and dark mode.

Most changes in Margo are edits to plain text files, not code: your projects, text, photos, buttons, menus, prices, and the layout of every section that has more than one. Colors are a few values in one CSS file. When you do want to change code, the theme ships instruction files that tell AI coding tools how it is built.

Margo comes in three editions: Astro, Tina, and Sanity. The design and pages are the same, and they differ in where your content lives and how you edit it. These docs show the files of the Astro edition. See Theme Editions.

What Is Included

  • 3 homepages: a solo designer (/, the main homepage), a small studio (/home-studio/), and a photographer (/home-photo/). The studio and photographer homepages pick their own header and footer layouts
  • Projects: a projects page with filter chips (/projects/), an archive with every project in one ruled list (/archive/), and one page per project in three templates: a case study, a split case study with the facts beside the images, and a photo series. The demo has 6 case studies and 6 photo series
  • Services: an overview and one page per service, with a starting price, what the client receives, the process, the tools, related projects, and questions
  • Pricing and FAQ: a pricing page and a questions page
  • Studio: about, team with one page per member, testimonials, and contact with a form and a booking card
  • Journal: a blog with authors, categories, tags, an author box, related posts, a table of contents, and an RSS feed
  • Legal: privacy policy, terms and conditions, cookie policy, and a 404 page per language
  • Section layouts: 23 section components, 19 of them with more than one look, chosen with one line. /elements/ previews them all
  • Header and footer: three header layouts (pill, bar, overlay) and three footer layouts (wordmark, columns, email), set for the whole site or per page
  • Languages: English, French, and Arabic, with the whole layout mirrored on right-to-left pages. See RTL & Arabic
  • Built in: site search (⌘K), light and dark mode, smooth scrolling, scroll animations and page transitions, cookie consent, SEO (sitemap, robots.txt, structured data, generated Open Graph images), llms.txt and Markdown copies of pages, Ask AI links, contact forms (Formsubmit, Formspree, or Netlify Forms), and a Mailchimp newsletter form

Choose Your Path

Every guide in these docs starts with the plain-language task, then shows the exact file and setting. Pick the path that matches how you like to work:

The Files You Will Edit Most

What you want to changeWhere it lives
Site name, URL, forms, header and footer layouts, switchessrc/config/config.toml
Your email and booking link for the Copy email and Book a call buttons[settings.contactInfo] in src/config/config.toml
Projects and photo seriessrc/content/projects/english/
Servicessrc/content/services/english/
Header and footer linkssrc/config/menu.<language>.json, such as menu.en.json
Colors and type scalesrc/styles/theme.css
Fontssrc/config/fonts.json
Text and images of a sectionsrc/content/sections/english/ (and french/, arabic/)
Footer heading, contact columns, and emailsrc/content/sections/english/footer.md
Text and section settings of one pagesrc/content/<collection>/english/-index.md, or src/content/pages/english/<page>.mdx for single pages
Button labels and other small interface textsrc/i18n/<language>.json, such as en.json

This table shows the files. In the Tina edition you can edit them at /admin/, and in the Sanity edition most of this content is in the Studio. See What Is Editable In Tina and What Is Editable In Sanity.

  • Layout gallery: every layout of the sections that have more than one, and the page header. In your copy, run npm run dev and open http://localhost:4321/elements/ (the contact page itself uses the contact section’s booking layout)
  • Support
Type something to search...