Skip to content

Repository files navigation

Constantinos' Blog 📄

Blog Typescript GitHub

This is the personal blog of Constantinos, built using the AstroPaper theme — a minimal, responsive, accessible and SEO-friendly Astro blog template.

🔥 Features

  • type-safe markdown
  • super fast performance
  • accessible (Keyboard/VoiceOver)
  • responsive (mobile ~ desktops)
  • SEO-friendly
  • light & dark mode
  • fuzzy search
  • draft posts & pagination
  • sitemap & rss feed
  • followed best practices
  • highly customizable
  • dynamic OG image generation for blog posts

🚀 Project Structure

Inside this project, you'll see the following folders and files:

/
├── public/
│   ├── assets/
|   ├── pagefind/ # auto-generated when build
│   └── favicon.svg
│   └── astropaper-og.jpg
│   └── favicon.svg
│   └── toggle-theme.js
├── src/
│   ├── assets/
│   │   └── icons/
│   │   └── images/
│   ├── components/
│   ├── data/
│   │   └── blog/
│   │       └── some-blog-posts.md
│   ├── layouts/
│   └── pages/
│   └── styles/
│   └── utils/
│   └── config.ts
│   └── constants.ts
│   └── content.config.ts
└── astro.config.ts

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

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

All blog posts are stored in src/data/blog directory.

💻 Tech Stack

Main Framework - Astro
Type Checking - TypeScript
Styling - TailwindCSS
Static Search - FuseJS
Icons - Tablers
Code Formatting - Prettier
Linting - ESLint

👨🏻‍💻 Running Locally

Clone the repository and run the following commands:

# install dependencies
pnpm install

# start running the project
pnpm run dev

As an alternative approach, if you have Docker installed, you can use Docker to run this project locally. Here's how:

# Build the Docker image
docker build -t constantinos-blog .

# Run the Docker container
docker run -p 4321:80 constantinos-blog

Google Site Verification (optional)

You can easily add your Google Site Verification HTML tag using an environment variable. This step is optional. If you don't add the following environment variable, the google-site-verification tag won't appear in the HTML <head> section.

# in your environment variable file (.env)
PUBLIC_GOOGLE_SITE_VERIFICATION=your-google-site-verification-value

🧞 Commands

All commands are run from the root of the project, from a terminal:

Note! For Docker commands we must have it installed in your machine.

Command Action
pnpm install Installs dependencies
pnpm run dev Starts local dev server at localhost:4321
pnpm run build Build your production site to ./dist/
pnpm run preview Preview your build locally, before deploying
pnpm run format:check Check code format with Prettier
pnpm run format Format codes with Prettier
pnpm run sync Generates TypeScript types for all Astro modules. Learn more.
pnpm run lint Lint with ESLint
docker compose up -d Run the blog on docker, You can access with the same hostname and port informed on dev command.
docker compose run app npm install You can run any command above into the docker container.
docker build -t constantinos-blog . Build Docker image for the blog.
docker run -p 4321:80 constantinos-blog Run the blog on Docker. The website will be accessible at http://localhost:4321.

Warning! Windows PowerShell users may need to install the concurrently package if they want to run diagnostics during development (astro check --watch & astro dev). For more info, see this issue.

📜 License

Licensed under the MIT License, Copyright © 2025


Built by Constantinos using AstroPaper by Sat Naing 👨🏻‍💻

About

Personal Website based on Gatsby

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages