Skip to content

bzhr/bozhidar.me

Repository files navigation

bozhidar.me

Home of my personal web site.

Astro Starter Kit: Basics

npm create astro@latest -- --template basics

Open in StackBlitz Open with CodeSandbox Open in GitHub Codespaces

🧑‍🚀 Seasoned astronaut? Delete this file. Have fun!

just-the-basics

🚀 Project Structure

Inside of your Astro project, you'll see the following folders and files:

/
├── public/
│   └── favicon.svg
├── src/
│   ├── components/
│   │   └── Card.astro
│   ├── layouts/
│   │   └── Layout.astro
│   └── pages/
│       └── index.astro
└── package.json

Astro looks for .astro or .md files in the src/pages/ directory. Each page is exposed as a route based on its file name.

There's nothing special about src/components/, but that's where we like to put any Astro/React/Vue/Svelte/Preact components.

Any static assets, like images, can be placed in the public/ directory.

🧞 Commands

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

👀 Want to learn more?

Feel free to check our documentation or jump into our Discord server.

📬 Newsletter Subscription (Listmonk)

This site includes a newsletter subscribe form rendered on all pages and a Netlify Function that subscribes users to your Listmonk instance.

  • Component: src/components/SubscribeForm.astro
  • Function: netlify/functions/subscribe.js

Configure these environment variables in your Netlify site settings:

  • LISTMONK_URL — e.g. https://listmonk.bozhidar.me
  • Token auth (recommended):
    • LISTMONK_API_USER — API user name
    • LISTMONK_API_TOKEN — token value (or set this as api_user:token if you prefer a single var)
  • Basic auth (fallback, if no token):
    • LISTMONK_USERNAME and LISTMONK_PASSWORD
  • LISTMONK_LIST_ID — Numeric ID of the target Listmonk list (e.g., 2).

Notes:

  • The function posts to POST /api/subscribers?upsert=true with Basic Auth.
  • A simple honeypot field (company) is used to deter bots.
  • For a nicer UX, the form progressively enhances submission via fetch, but also works as a normal HTML form.

About

Home of my personal web site.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published