Altair docs
Project structure
Where everything lives, and which files you will actually edit.
Altair is a standard Astro project. Most of the time you will only touch the config file, the content folders and your images.
altair-astro/
├── astro.config.mjs Your domain, the font, code highlighting
├── public/ Files copied as-is: favicon, share image
└── src/
├── site.config.ts Your name, colors, hero, about text, section titles
├── content.config.ts The rules (schemas) your content is checked against
├── content/
│ ├── projects/ One Markdown file per project
│ └── posts/ One Markdown file per blog post
├── data/ Services, experience, testimonials, external articles (YAML)
├── assets/ Portrait, project covers, post covers
├── components/
│ ├── sections/ One component per section of the page
│ ├── SEO.astro Meta tags, share cards, structured data
│ ├── Media.astro Responsive images
│ ├── Rich.astro The *scribble* underline
│ └── SectionHead.astro
├── layouts/Base.astro The HTML shell shared by every page
├── lib/ Helpers for posts and the menu
├── pages/
│ ├── index.astro The home page: puts the sections in order
│ ├── blog/ Blog list and post pages
│ ├── rss.xml.ts RSS feed
│ └── robots.txt.ts robots.txt
└── styles/global.css Color tokens, base styles, buttons, post typography
Files you will edit
| File or folder | What for |
|---|---|
src/site.config.ts |
Almost all text and settings |
src/content/projects/ |
Your work |
src/content/posts/ |
Your blog posts |
src/data/*.yaml |
Services, experience, testimonials, external articles |
src/assets/ |
Your images |
astro.config.mjs |
Your domain, and the font if you change it |
public/ |
Favicon and share image |
Files you rarely need to touch
The components, layouts and pages hold the design. You can change them freely, since you own the code, but you don’t need to for normal use. If you do edit them, each section’s styles sit at the bottom of its own component file, so changes stay local to that section.
How content is checked
src/content.config.ts describes the fields every project, post and list item must have. If something is missing or has the wrong type, npm run dev and npm run build stop with a message that names the file and the field. That way a typo shows up while you are editing, not as a broken page after you publish.