Skip to content

mertssmnoglu/mertsismanoglu.com

Repository files navigation

Mert Şişmanoğlu Personal Website

Built with Astro License: MIT License: CC BY-SA 4.0

Based on the Astro blog template, this SEO-optimized personal blog website is built with Astro. It serves as the blog for Mert Şişmanoğlu, featuring blog posts written in Markdown and MDX.

Tech Stack

  • Framework: Astro
  • Styling: Tailwind CSS
  • Content: Markdown/MDX
  • Language: TypeScript
  • Package Manager: pnpm
  • Code Quality: Biome
  • Deployment: GitHub Pages
  • Analytics: Cloudflare Web Analytics (users can opt-out)

Prerequisites

Before you begin, ensure you have the following installed:

  • Node.js: Version 24 (LTS) or higher
  • pnpm: Package manager (recommended over npm/yarn)

You can check your Node.js version:

node --version

If you need to install Node.js 24, you can use nvm:

nvm install 24
nvm use 24

To install pnpm:

npm install -g pnpm@latest-10

Getting Started

  1. Clone the repository

    git clone https://github.com/mertssmnoglu/mertssmnoglu.github.io.git
    cd mertssmnoglu.github.io
  2. Install dependencies

    pnpm install
  3. Start the development server

    pnpm dev
  4. Open your browser Navigate to http://localhost:4321 to see the website.

Available Scripts

Command Description
pnpm dev Start development server at localhost:4321
pnpm start Start the production server locally
pnpm build Build the production site to ./dist/
pnpm preview Preview your build locally before deploying
pnpm lint Run Biome linter to check code quality
pnpm lint-fix Run Biome linter and fix issues automatically
pnpm format Format code with Biome
pnpm format-check Check code formatting without making changes
pnpm prepare Set up Husky git hooks
pnpm blog:new Create a new blog post interactively

Writing Blog Posts

Blog posts are stored in src/content/blog/ and written in Markdown or MDX format.

Creating a New Post

Kickstart a new blog post with the pnpm blog:new command:

pnpm blog:new \
   --title "My New Post" \
   --description "A brief description of my new post"

or

pnpm blog:new

The command will:

  • Prompt for title and description (if not provided via CLI)
  • Automatically assign today's date as publication date
  • Generate a slug from the title
  • Create a new .md file in src/content/blog/ with pre-defined frontmatter
  • and table of contents

Alternatively, you can manually create a blog post:

  1. Create a new .md or .mdx file in src/content/blog/
  2. Add frontmatter at the top of the file:
---
title: "Your Post Title"
description: "A brief description of your post"
pubDate: "2025-01-15"
heroImage: "/blog-placeholder-1.jpg"
license: "CC-BY-SA-4.0"
categories: ["category-a", "category-b"]
---

Your content goes here...

Frontmatter Fields

  • title: The title of your blog post
  • description: A brief description for SEO and previews
  • pubDate: Publication date in YYYY-MM-DD format
  • heroImage: Path to hero image (optional)
  • updatedDate: Last updated date in YYYY-MM-DD format (optional)
  • license: License key for the post (optional, defaults to CC-BY-SA-4.0).

    Available keys are defined in src/data/licenses.ts:

    • CC-BY-SA-4.0 (default)
    • CC-BY-4.0
    • CC-BY-NC-4.0
    • CC-BY-NC-SA-4.0
    • CC0-1.0
    • MIT
  • categories: Array of category strings for filtering (optional).

    Example: ['automation', 'cli']

Contributing

  1. Fork the repository
  2. Create a feature branch: git switch -c feature/my-feature
  3. Commit your changes: git commit -m 'Add some feature'
  4. Push to the branch: git push origin feature/my-feature
  5. Open a Pull Request

License

Source code is licensed under the MIT License. See the LICENSE file for details.

Documentation and content are licensed under CC BY-SA 4.0 by default. See the LICENSE-CONTENT file for details, and refer to blog post frontmatter for specific licenses on individual posts.

Releases

No releases published

Packages

 
 
 

Contributors