AstroPortfolioBlogTool Site

portfolio (chcoomilk) — Astro Portfolio Template

By chcoomilk

An Astro-based personal portfolio website template that includes project showcases, a CV timeline, a paginated blog, RSS, and a shop page. It is MIT-licensed and can be deployed to GitHub Pages and other static hosts.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

2 previews
Desktop homepage1 / 2
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 2

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-03View source

What stands out

A quick read of the recorded project description.

01

Built with Astro, with styling using Tailwind CSS and DaisyUI

02

Includes modules such as project showcases, a CV timeline, a paginated blog, RSS, and a shop page

03

Blog and shop content is maintained as Markdown files, with fields configured via frontmatter

04

Switch DaisyUI themes via the data-theme attribute on the html tag

05

Automatically generates a sitemap at build time and provides robots.txt for updating the site URL

06

MIT-licensed and deployable to GitHub Pages, Vercel, Netlify, and other static hosts

Template Details

This is an Astro-based personal portfolio website template. The repository is maintained by chcoomilk, the template originates from manuelernestog's Astro Modern Personal Website, and the current site is deployed via GitHub Pages. The template is built with Astro, and its styling layer relies on Tailwind CSS and DaisyUI. It provides modules such as project showcases, a CV timeline, a paginated blog, RSS subscription, and a shop page.

In terms of page structure, src/pages contains routes such as index, projects, cv, blog, and shop. Blog and shop content is maintained as Markdown files in the corresponding directories, with frontmatter declaring fields such as title, description, date, image, and price. [page].astro handles the paginated lists. Layouts are handled by BaseLayout and PostLayout, and components such as BaseHead, Header, Footer, and SideBar are integrated into the layout system. The sidebar is used to maintain site-wide page links. The theme is switched via the data-theme attribute on the html tag in BaseLayout.astro, and you can use themes provided by DaisyUI or custom themes.

Important limitations to note: the README explicitly states that blog pagination is implemented using dynamic route parameters, and this format is currently incompatible with SSR deployment configurations, so the default static deployment method should be used. The sitemap is generated automatically at build time, and the site URL in robots.txt under the public directory needs to be updated accordingly. Third-party assets such as demo images, fonts, and icons must be checked separately under their respective licenses; the MIT license for the code does not cover these assets.

AstroPortfolioBlogTool site

Is it right for your project?

Use Cases

  • Build a personal portfolio website to showcase projects and personal experience in one place
  • Maintain a personal blog with pagination and RSS subscription
  • Organize and present CV or résumé information with a timeline component
  • Build a simple product showcase page with prices, badges, and checkout links

Suitable For

  • Developers who want to maintain personal site content with Astro and Markdown
  • Personal homepages that need a combination of projects, blog, CV, and shop modules
  • Users planning to deploy the site to GitHub Pages or other static hosting platforms
  • Users who accept using the DaisyUI theme system and are willing to adjust styles themselves

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Install dependencies with npm install, and use npm run dev for local development

  2. 2

    Blog posts go in src/pages/blog/, and shop entries go in src/pages/shop/, both maintained as Markdown files

  3. 3

    To switch themes, modify the data-theme attribute on the html tag in BaseLayout.astro

  4. 4

    After building, update the site URL in robots.txt under the public directory to match the automatically generated sitemap

  5. 5

    Blog pagination is incompatible with SSR deployment configurations, so the default static deployment method should be used when deploying

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not mean that external services or third-party assets are free.

Must comply with when using

  • You are allowed to use, modify, commercialize, and distribute the code of this version for free.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the complete MIT license notice.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • Blog pagination is implemented using dynamic route parameters and is currently incompatible with SSR deployment configurations. The default static deployment method must be used when deploying; SSR cannot be enabled.
  • The sitemap is generated automatically at build time. You need to manually update the site URL in robots.txt under the public directory to match the site domain.
  • The social icons used in the sidebar come from the BoxIcons icon pack, which is third-party material and must be checked separately under its own license; the MIT code license does not cover these assets.
  • Demo images, fonts, icons, and other third-party assets must be checked under their respective licenses and cannot be judged solely by the MIT license for the code.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

The Blog pagination of this template is implemented using dynamic route parameters in its filename and for now this format is incompatible with SSR deploy configs, so please use the default static deploy options for your deployments.

Original README

Please update the `robots.txt` file in the public folder with your site name URL for the Sitemap.

Original README

The used social-icons are SVG form [BoxIcons](https://boxicons.com/) pack.

Original README
https://github.com/chcoomilk/portfolio/blob/main/LICENSEhttps://github.com/chcoomilk/portfolio/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-03. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 88 / 100
Technologies
Astro
Website type
Portfolio · Blog · Tool Site
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-08-03
Screenshot last checked
2026-10-03

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Astro as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Review declaration: [email protected] · 2026-10-04

Inspect the recorded source material

SHA-256: 47e171a11e5c877d92c0cf077ea221fd77329d9595f46c2d82571207d5988b06

2026-10-03T08:41:29.645Z

Source file / repository
# Astro Modern Personal Website

![portfolio](https://github.com/user-attachments/assets/5f244a3c-ce49-4812-881d-ebcdbca45b04)

Modern Personal Website Template with Project Section, CV Section, Paginated Blog, RSS Feed, SEO Friendly, Visual themes and Responsive Desing for Astro framework.

## Demo

View a live demo of the [Astro Modern Personal Website](https://astro-modern-personal-website.netlify.app/)

## Installation

Run the following command in your terminal

```bash
npm install
```

Once the packages are installed you are ready to run astro. Astro comes with a built-in development server that has everything you need for project development. The astro dev command will start the local development server so that you can see your new website in action for the very first time.

```bash
npm run dev
```

## Tech Stack

- [Astro](https://astro.build)
- [tailwindcss](https://tailwindcss.com/)
- [DaisyUI](https://daisyui.com/)

## Project Strucutre

```php
├── src/
│   ├── components/
│   │   ├── cs/
│   │   │   ├── TimeLine
│   │   ├── BaseHead.astro
│   │   ├── Card.astro
│   │   ├── Footer.astro
│   │   ├── Header.astro
│   │   └── HorizontalCard.jsx
│   │   └── SideBar.jsx
│   ├── layouts/
│   │   └── BaseLayout.astro
│   │   └── PostLayout.astro
│   └── pages/
│   │   ├── blog/
│   │   │   ├── [page].astro
│   │   │   ├── post1.md
│   │   │   ├── post2.md
│   │   │   └── post3.md
│   │   └── cv.astro
│   │   └── index.astro
│   │   └── projects.astro
│   │   └── rss.xml.js
│   └── styles/
│       └── global.css
├── public/
│   ├── favicon.svg
│   └── social-image.png
│   └── sprofile.jpg
│   └── social_img.webp
├── astro.config.mjs
├── tailwind.config.cjs
├── package.json
└── tsconfig.json
```

### Components usage

#### Layout Components

The `BaseHead`, `Footer`, `Header` and `SideBar` components are already included in the layout sistem. To change the website content you can edit the content of this componenets.

##### SideBar

In the Sidebar you can change the links to all your website pages.

You can change your avatar shape using [mask classes](https://daisyui.com/components/mask/).

The used social-icons are SVG form [BoxIcons](https://boxicons.com/) pack.

#### TimeLine

The timeline components are used to conform the CV.

```html
<div class="time-line-container">
  <TimeLineElement title="Element Title" subtitle="Subtitle" desc="Description" />
  ...
</div>
```

#### Card & HorizontalCard

```html
   <HorizontalCard
      title="Card Title"
      img="imge_url"
      desc="Description"
      url="Link URL"
      target="Optional link target (_blank default)"
      badge="Optional badge"
      tags={['Array','of','tags']}
    />
```

#### HorizontalCard Shop Item

This compoenet is already included in the Store layout of the template. In case you want to use it in other place this are the props.

```html
<HorizontalShopItem
  title="Item Title"
  img="imge_url"
  desc="Item description"
  pricing="current_price"
  oldPricing="old_price"
  checkoutUrl="external store checkout url"
  badge="Optional badge"
  details="true"
  #
  show
  or
  hide
  details
  btn
  (default
  is
  true)
  url="item details url"
  custom_link="Custom link url"
  custom_link_label="Cutom link btn label"
  target="Optional link target (_self default)"
/>
```

### Layouts

Include `BaseLayout` in each page you add and `PostLayout` to your post pages.

### Pages

#### Blog

Add your `md` blog post in the `/pages/blog/` folder.

##### [page].astro

The `[page].astro` is the route to work with the paginated post list. You can change there the number of items listed for each page and the pagination button labels.

##### Post format

Add code with this format in the top of each post file.

```
---
layout: "../../layouts/PostLayout.astro"
title: "Post Title"
description: "Description"
pubDate: "Post date format(Sep 10 2022)"
heroImage: "Post Hero Image URL"
---
```

#### Shop

Add your `md` item in the `/pages/shop/` folder.

##### [page].astro

The `[page].astro` is the route to work with the paginated item list. You can change there the number of items listed for each page and the pagination button labels. The shop will render all `.md` files you incle inside this folder.

##### Item format

Add code with this format in the top of each item file.

```js
---
layout: "../../layouts/StoreItemLayout.astro"
title: "Demo Item 1"
description: "Item description"
heroImage: "Item img url"
details: true // show or hide details btn
custom_link_label: "Custom btn link label"
custom_link: "Custom btn link"
pubDate: "Sep 15 2022"
pricing: "$15"
oldPricing: "$25.5"
badge: "Featured"
checkoutUrl: "https://checkouturl.com/"
---
```

#### Static pages

The other pages inlcuded in the template are static pages. The `index` page belong to the root page. You can add your pages directly in the `/pages` folder and then add a link to that pages in the `sidebar` component.

Feel free to modify the content included in the pages that the template contains or add the ones you need.

### Theming

For change the template theme change the `data-theme` atribute of the `<html>` tag in `BaseLayout.astro` file.

You can chose among 30 themes available or create your custom theme. See themes available [here](https://daisyui.com/docs/themes/).

## Sitemap

The Sitemap is generated automatically when you build your website in the root of the domain. Please update the `robots.txt` file in the public folder with your site name URL for the Sitemap.

## Deploy

You can deploy your site on your favorite static hosting service such as Vercel, Netlify, GitHub Pages, etc.

The configuration for the deployment varies depending on the platform where you are going to do it. See the [official Astro information](https://docs.astro.build/en/guides/deploy/) to deploy your website.

> **⚠️ CAUTION** </br>
> The Blog pagination of this template is implemented using dynamic route parameters in its filename and for now this format is incompatible with SSR deploy configs, so please use the default static deploy options for your deployments.

## Contributing

Suggestions and pull requests are welcomed! Feel free to open a discussion or an issue for a new feature request or bug.

One of the best ways of contribute is to grab a [bug report o feature suggestion](https://github.com/manuelernestog/astro-modern-personal-website/issues) that has been marked `accepted` and dig in.

Please be wary of working on issues _not_ marked as `accepted`. Just because someone has created an issue doesn't mean we'll accept a pull request for it.

## License

Astro Modern Personal Website is licensed under the MIT license — see the [LICENSE](https://github.com/manuelernestog/astro-modern-personal-website/blob/main/LICENSE) file for details.

## Contributors

<a href="https://github.com/manuelernestog/astro-modern-personal-website/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=manuelernestog/astro-modern-personal-website" />
</a>

Made with [contrib.rocks](https://contrib.rocks).
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.