* refactor: extract redundant max-width into utility
Extract redundant max-width into a universal tailwind
utility class. By doing so, the width of the layout
in different pages can be customized easily.
* docs: update docs for modifying `max-w-app` utility
Blog posts can now be structured into subdirectories, which determine their slugs.
Example:
- `/src/data/blog/2025/testing.md` → `/posts/2025/testing`
Directories prefixed with `_` will be excluded from the slug.
Example:
- `/src/data/blog/_examples/tailwind-typography.md` → `/posts/tailwind-typography`
Closes#470, #366
* fix: add an option to disable dynamic OG image generation
Add new `dynamicOgImage` option in the `SITE` object inside
`src/config.ts` file to disable auto og-image generation during build.
Resolves#428
* docs: update guides for `SITE.dynamicOgImage` option
* Add a SITE config parameter for posts in index page
* docs: update blog post for `postPerIndex` config
---------
Co-authored-by: satnaing <satnaingdev@gmail.com>
Add trailing slash to links for improved consistency with RSS links and to avoid unnecessary redirects.
---------
Co-authored-by: satnaing <satnaingdev@gmail.com>
Changes made:
- Removed the recent posts section if there's no post under the recent section.
- Eliminated unnecessary <Hr /> tags when there's no recent post.
- Extracted all-links from the recent section and put it above the footer.
Closes: #204
* Hide posts when PubDateTime is not reached
* refactor: extract filter logic into a file
* docs: update SITE config docs
---------
Co-authored-by: satnaing <satnaingdev@gmail.com>
* feat: add pagination in tag posts
Implement pagination in tag posts. Refactor and extract pagination logic and pagination component.
Closes: #152
* fix: update breadcrumbs for updated tag pagination
Update slugified titles to be unslugified in the tag page. This is for better SEO and better a11y. Url and tag elelemnts will still be slugified.
Closes: #179
* feat: use predictable slug for card transition
* feat: enable view transitions in search card
* refactor: use Card.tsx instead of Card.astro
* refactor: handle card styling in component
* refactor: remove unused class name
---------
Co-authored-by: Sat Naing <satnaingdev@gmail.com>
* Sorted the rss feed from latest to oldest. Which is crucial for RSS readers.
* sorted rss using util func
* refactor: remove redundant draft filter and update import positions
---------
Co-authored-by: Saif71 <>
Co-authored-by: Sat Naing <satnaingdev@gmail.com>