Source for melikyan.dev, Arsen Melikyan's personal blog about web development, debugging, cybersecurity, and software engineering.
The site is built with Astro, Starlight, and starlight-blog. It is generated as a static site and deployed to GitHub Pages.
Node.js 22.12 or newer and npm are required.
npm ci
npm run devThe development server is available at http://localhost:4321.
| Command | Description |
|---|---|
npm ci |
Install the locked dependency versions |
npm run dev |
Start the local development server |
npm run build |
Type-check and build the production site |
npm run preview |
Preview the production build locally |
npm run format |
Format the project with Prettier |
npm run format-check |
Check formatting without modifying files |
npm run astro -- ... |
Run Astro CLI commands |
.
├── public/ # Static assets copied as-is
├── src/
│ ├── assets/ # Images processed by Astro
│ ├── components/ # Site and Starlight component overrides
│ ├── content/
│ │ ├── docs/ # Homepage and blog posts
│ │ └── i18n/ # Starlight UI translations
│ ├── pages/ # Standalone Astro pages
│ └── styles/ # Global styles and Tailwind theme
├── astro.config.mjs # Astro, Starlight, and plugin configuration
└── src/content.config.ts # Content loaders and schemas
Blog posts live in src/content/docs/blog/. Assets specific to a post live in a matching src/assets/<post-slug>/ directory.
The deploy.yml workflow builds and deploys the site to GitHub Pages whenever changes are pushed to the astro branch. The workflow can also be run manually from the Actions tab.
The repository's default pull request target is master; production deployment happens from astro.