Built with Astro, with styling using Tailwind CSS and DaisyUI
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.
Actual screenshot captured by the server browser.
All pages & views 2
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Includes modules such as project showcases, a CV timeline, a paginated blog, RSS, and a shop page
Blog and shop content is maintained as Markdown files, with fields configured via frontmatter
Switch DaisyUI themes via the data-theme attribute on the html tag
Automatically generates a sitemap at build time and provides robots.txt for updating the site URL
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.
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
Install dependencies with npm install, and use npm run dev for local development
- 2
Blog posts go in src/pages/blog/, and shop entries go in src/pages/shop/, both maintained as Markdown files
- 3
To switch themes, modify the data-theme attribute on the html tag in BaseLayout.astro
- 4
After building, update the site URL in robots.txt under the public directory to match the automatically generated sitemap
- 5
Blog pagination is incompatible with SSR deployment configurations, so the default static deployment method should be used when deploying
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis 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
https://github.com/chcoomilk/portfolio/blob/main/LICENSEhttps://github.com/chcoomilk/portfolio/blob/main/README.mdThe used social-icons are SVG form [BoxIcons](https://boxicons.com/) pack.
Original README
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

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).
Explore similar templates
Compare previews and descriptions within the same stack and category.

astrowind
AstroWind is a free, open-source Astro starter theme using Astro and Tailwind CSS, released under the MIT license.
Astro · Blog

astro-paper
AstroPaper is a minimal, responsive, accessible, and SEO-friendly Astro blog theme. Articles are stored as Markdown/MDX in src/content/posts/, with subdirectories affecting URLs.
Astro · Blog

fuwari
Fuwari is a static blog template built with Astro and Tailwind CSS for personal blogs. It manages posts as Markdown files in src/content/posts/, with frontmatter for title, date, description, cover, tags, categories, draft status, and language.
Astro · Blog

Firefly
Firefly is a clean personal blog theme forked from Astro and Fuwari, offering four background modes, single/double sidebar and list/grid layouts, Pagefind client-side full-text search, and a six-language UI.
Astro · Blog

astro-theme-cactus
Astro Cactus is an Astro-based blog and portfolio theme that uses Markdown/MDX content collections to manage posts, notes, and tags, with frontmatter type-checked by a schema.
Astro · Portfolio

astrofy
Astrofy is a free and open-source personal portfolio website template built with Astro and TailwindCSS, with built-in blog, CV timeline, project showcase, store, and RSS feed modules.
Astro · Portfolio
