



It’s hugely inspired by Hugo’s Ink theme and strives to remain light, while providing the basis for a beautiful, minimal blog.
Features
- Minimal, Crisp, Markdown-Blog Ready always updated to Astro’s latest (currently
2.xrelease) under the hood. - Svelte Ready - In its effort to remain light-weight, performant, and more approachable from Astro’s POV, Svelte is used for interactive components like the theme switcher
- Modular - The structure is highly modular, with components doing just one job, and one job well.
- Astro 2.0 Content Collection + Dynamic Pages - It’s ready with Next.js like dynamic pages, to support a tag-based classification system with paginated results, all configurable
- Dark Mode & Color Codes - It supports dark mode, and 6+ color modes that’s selected using
tailwind.config.js. You can passTHEME_KEYwith thedevorbuildscript/commands ex:THEME_KEY=purpleheart astro build/devto change the color theme being used. All the available themes can be found in tailwind.theme.config.js. To customize the blog section, add any of the Tailwind Typography’sprose-{color}classes as referred here - Netlify CMS - Add/Edit/Update all the posts in the
/blogdirectory by visitingyour-site.netlify.com/adminex: astro-ink.netlify.app/admin with your Netlify credentials. It needs Netlify Identity(https://app.netlify.com/sites/your-site/settings/identity#registration ) and Git Gateway(https://app.netlify.com/sites/your-site/settings/identity#services) enabled. - Future Posts(with Github Actions) - Create posts in the
/src/draftsdirectory with a futuredatein theYYYY-MM-DDformat, and let a specially crafted Github Action take care of auto-publishing it on your specified date. You can configure the check interval in Github Action. - Client-Side Search - Allow your users get to your blog posts quickly with client-side search feat. Lunr.js
- View counter feat. Redis/Upstash Redis - Configure your Redis host, place it’s connection URL in your hosting provider’s console (Vercel, Netlify, etc.) or in a
.envfile(local development), un-comment the connection code here and deploy. Your site’s powered with a dynamic views counter. See .env.example to understand the different environment values you need to configure. - Media Page with YT channel support - Easily show your YT channel content on the media page by just putting your channel id in config file’s
ytChannelIdconstant. Optionally, disable the image thumbnails from your YT channel’s video listing by settingUSE_MEDIA_THUMBNAILtofalse. - Author Cards - Easily add post based or site-wide Author cards, that include a Twitter follow button by setting
USE_AUTHOR_CARDtotrueinside config file. - Themed image overlay - You can optionally enable overlays, that can add a nice themed gradient on top of your post images by setting
USE_POST_IMG_OVERLAYtotrueinside config file.
How to start?
Just clone this template, and start working from your clone. You have all the common NPM commands at your disposal like dev, build, etc. Refer package.json to see a list of all the available commands.
Note: Use npx degit one-aalam/astro-ink to clone the template without any of the git history
Note: This template genrates server (SSR ready) output by default. If you want static builds
- change
outputtostaticfromserverin astro.config.js - remove
adapter: vercel() - remove the views counter API
- set
USE_VIEW_STATStofalseinside config.ts
Note: Before running npm run dev for the very first time -
- create a
.envfile by runningmv .env.example .env(if you’re on a Linux distro or Mac) - set the
SITE_URIvariable asSITE_URI=http://localhost:4321(where 4321 is the port at which your project is running)
Built with Astro Ink
- jamesperkins.dev - Personal site of developer, YouTube instructor James R Perkins
- highlandcows.github.io Nick Jacob’s personal blog
know a site built with Astro Ink? Let me know on Twitter
Wanna learn Astro while building Ink?
This theme was initially built with first an alpha, and then a beta version of the Astro Framework. If you’re just starting with Astro, you can actually learn Astro while building this very theme by following a series of blogs I’ve written that teaches you Astro ground-up!
Head over to aalam.in/blog and know
- How to set Astro up and get it running with essential defaults for styling, prototyping, and incremental deployments
- Managing presentational components and creating Astro pages
- Feeding local as well as remote data to the Astro pages
- Putting interactivity where you absolutely cannot do without it in Astro
- Creating data-driven, dynamic pages and paginated results in Astro
- Author your Astro site’s content with Git-based CMSs