Personal site for Akshay Bhalotia
View
·
Report Bug
·
Request Feature
- About the Project
- Getting Started
- Versioning
- Roadmap
- Contributing
- Support
- Credits
- License
- Acknowledgments
- About Authors
axy.one is Akshay Bhalotia's personal site — a place for musings, work, and
posts at axy.one. It's a statically generated
Jekyll site with a custom, monospace design built on
Tailwind CSS v4 and set in GitHub's Monaspace.
There's no theme gem — every layout, style, and include lives in this repo. It's
dark by default, light on toggle, and fully functional with JavaScript disabled.
For a deeper look, see CLAUDE.md (build pipeline, content model,
routing, conventions) and DESIGN.md (the design system).
- Jekyll (Ruby) — static site generator
- Tailwind CSS v4 via
@tailwindcss/cli - Monaspace (Neon + Radon) via
@fontsource/* - lucide-static + Font Awesome — icons (inlined SVG)
- Netlify — hosting & deploy previews
- Jekyll plugins:
jekyll-feed(RSS),jekyll-seo-tag(meta/OG/JSON-LD),jekyll-sitemap - ❤️ + 🚬
This is a two-toolchain build: Ruby/Bundler runs Jekyll; npm vendors the fonts and icons and compiles the CSS. Generated assets (CSS, fonts, icons) are gitignored and rebuilt on every build. To get a local copy running, follow the steps below.
-
Ruby — pinned in
.ruby-version(currently3.4.9). Version managers (rvm, rbenv, chruby) and Netlify pick it up automatically. -
Node — pinned in
.nvmrc(currently26). With nvm,nvm install/nvm usereads the pin. -
OpenSSL 3.x — required to build Ruby 3.x from source. On macOS:
brew install openssl@3
If you install Ruby with rvm and the build fails on the
opensslextension (it defaults to the EOL openssl@1.1), point it at OpenSSL 3 explicitly:rvm install "$(cat .ruby-version)" --with-openssl-dir="$(brew --prefix openssl@3)"
-
Clone the repo
git clone https://github.com/akshaybhalotia/axy.one.git cd axy.one -
Install both toolchains' dependencies
bundle install && npm install
npm run build runs the whole pipeline: vendor fonts + icons from npm → compile
Tailwind → jekyll build. A bare jekyll build uses stale/missing generated
assets, so always go through the npm scripts. _config.yml is not reloaded by
jekyll serve — restart the server after editing it.
npm run dev # vendor + Tailwind --watch + jekyll serve → http://localhost:4000There's no unit-test suite — this is a static site. CI runs the production build plus Lighthouse (accessibility is a hard gate; SEO tracked) on every pull request; run the build check locally with:
JEKYLL_ENV=production npm run buildJEKYLL_ENV=production npm run build # outputs the static site into _site/Netlify builds and serves _site/ on every push. To
preview the production build locally:
npx serve _siteVersioning follows SemVer and is automated by
release-please: each feat/fix
merged to main opens a release PR that bumps the version and updates the changelog,
and merging it tags the release + publishes a GitHub Release. See the
tags and
releases.
See CHANGELOG.md.
See the open issues for what's planned.
This is a personal site, but fixes and suggestions are welcome — typos, broken links, accessibility issues, or build problems especially. Any contributions you make are greatly appreciated.
Please follow the contribution guidelines and the code of conduct while contributing. Sincere thanks to all contributors! 😄
Contributions, issues, and feature requests are welcome! Give a ⭐️ if you like this project!
- @vikxlp — design feedback
This work — the axy.one source and its content — is licensed under a
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
(CC BY-NC-SA 4.0) — see the
LICENSE file for details.
- Jekyll and Tailwind CSS
- Monaspace by GitHub Next — the typeface
- Lucide and Font Awesome — icons
- Fontsource — self-hosted font packages
- Netlify — hosting
- Contributor Covenant — the code of conduct
- readme-template — this README's structure
axy.one is created & maintained by Akshay Bhalotia. You can find me on
Telegram — @akshaybhalotia — or write to me at
contact [at] axy.one.