npm create astro@latest -- --template basics🧑🚀 Seasoned astronaut? Delete this file. Have fun!
Inside of your Astro project, you'll see the following folders and files:
/
├── public/
│ └── favicon.svg
├── src
│ ├── assets
│ │ └── astro.svg
│ ├── components
│ │ └── Welcome.astro
│ ├── layouts
│ │ └── Layout.astro
│ └── pages
│ └── index.astro
└── package.json
To learn more about the folder structure of an Astro project, refer to our guide on project structure.
All commands are run from the root of the project, from a terminal:
| Command | Action |
|---|---|
npm install |
Installs dependencies |
npm run dev |
Starts local dev server at localhost:4321 |
npm run build |
Build your production site to ./dist/ |
npm run preview |
Preview your build locally, before deploying |
npm run astro ... |
Run CLI commands like astro add, astro check |
npm run astro -- --help |
Get help using the Astro CLI |
- Copy
templates/news-post.mdtosrc/content/news/and give it a descriptive filename ending in.md, such as2026-09-29-new-graduate-students.md. - Fill in the title, date (
YYYY-MM-DD), categories, summary, and article text. Keep front matter dates and text in quotation marks. - Put optional images in
public/images/news/and reference them with/images/news/filename.jpg. - Set
draft: falseto publish the story. Set it totruewhile it is still being prepared. - Preview the site with
npm run dev; the story appears under/news/and at/news/<filename-without-.md>/.
See NEWS-GUIDE.md for the complete news-file format and publication rules.
Add a new object to the beginning of the publications array in src/data/publications.ts:
{
"number": 76,
"year": 2026,
"citation": "Author names, “Article title”, <em>Journal Name</em> <strong>volume</strong>, pages (2026).",
"doi": "10.0000/example"
}numberis the publication's chronological site number. Increase it for each new publication; leave gaps or duplicate numbers out.yeardetermines the year heading; publications are displayed newest-first by year and then number.citationmay contain trusted HTML such as<em>,<strong>, and<sub>for journal formatting.doiis optional. If provided, omithttps://doi.org/; the site creates the link automatically.notesis optional trusted HTML for links, podcasts, or other supplementary material.
Add an object to the people array in src/data/people.ts:
{
"id": "first-last",
"name": "First Last",
"category": "graduate",
"photo": "/images/people/first-last.jpg",
"bio": "A short professional biography."
}- Supported categories are
pi,postdoc,graduate, andundergraduate; empty categories are hidden. - Put an optional portrait in
public/images/people/and use a site-relative path inphoto. idshould be a unique, descriptive identifier, ideally matching the person's portrait filename without its extension.- Optional fields include
email,office,phone,website,cv, andcvLabel. Put CV files inpublic/cv/and reference them with/cv/filename.pdf. biomay contain trusted HTML links and paragraph breaks for formatted biographies.- Entries are displayed in file order within their category. Add former members to the
alumnistring array instead.
Feel free to check our documentation or jump into our Discord server.