Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
8215c3e
Migrate blog from Gatsby to Astro
claude Oct 29, 2025
b20a085
Add Firebase branch preview deployments for Astro
claude Oct 29, 2025
054eba6
phase 1
aravindputrevu Dec 30, 2025
ea7a0e7
phase 2
aravindputrevu Dec 30, 2025
884f617
additional image changes
aravindputrevu Dec 30, 2025
eda91a0
Clean up legacy Gatsby files after Astro migration
aravindputrevu Dec 30, 2025
a39d70a
Redesign navigation, footer, and pages with brutalist styling
aravindputrevu Jan 1, 2026
bd91d7f
Remove dead code: backup CSS files and redundant jsconfig.json
aravindputrevu Jan 2, 2026
ec420fd
Remove dist/ from version control
aravindputrevu Jan 2, 2026
36b8cd1
Remove unused React and MDX dependencies
aravindputrevu Jan 2, 2026
e407c12
Fix dark mode toggle requiring multiple clicks
aravindputrevu Jan 2, 2026
0837e7d
Fix tags not changing color in dark mode
aravindputrevu Jan 2, 2026
541ce0c
Remove unused Partytown library files
aravindputrevu Jan 2, 2026
5446be3
Remove unused image assets
aravindputrevu Jan 2, 2026
a094bc7
Improve Lighthouse scores: accessibility and SEO
aravindputrevu Jan 2, 2026
2f4da51
Improve navbar styling and add font preconnect hints
aravindputrevu Jan 2, 2026
e3acdce
deleting legacy action file
aravindputrevu Jan 2, 2026
ebac9a0
Update contact email and cleanup
aravindputrevu Jan 2, 2026
7882dea
Add .claude/ to gitignore
aravindputrevu Jan 2, 2026
663a111
Update README for Astro migration
aravindputrevu Jan 2, 2026
d8754b8
Address CodeRabbit suggestions
claude Jan 3, 2026
814d9c3
Update intro text on homepage to reflect current focus and experience
aravindputrevu Jan 3, 2026
c675d25
Sync package-lock.json with package.json
aravindputrevu Jan 3, 2026
5560a02
Update Substack link in footer to point to new URL
aravindputrevu Jan 3, 2026
8e2eeff
Add Plausible analytics integration
aravindputrevu Jan 3, 2026
033d8d9
Add RSS feed and fix Twitter/YouTube embeds
aravindputrevu Jan 3, 2026
d7228da
Add social share meta tags and fix font preconnect
aravindputrevu Jan 3, 2026
564ad8f
Add is:inline to dark mode script and expose toggle API
aravindputrevu Jan 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions .eslintignore

This file was deleted.

13 changes: 0 additions & 13 deletions .eslintrc.js

This file was deleted.

39 changes: 0 additions & 39 deletions .github/workflows/action.yml

This file was deleted.

48 changes: 48 additions & 0 deletions .github/workflows/firebase-hosting-branch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Deploy preview to Firebase Hosting for feature branches
name: Deploy Branch Preview

on:
push:
branches:
- '**'
- '!main'

jobs:
build_and_preview:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Build Astro site
run: npm run build

- name: Deploy to Firebase Hosting Preview Channel
uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: '${{ secrets.GITHUB_TOKEN }}'
firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_TEST_713FA }}'
projectId: test-713fa
target: aravind-dev
expires: 7d
channelId: ${{ github.ref_name }}
env:
FIREBASE_CLI_EXPERIMENTS: webframeworks

- name: Comment preview URL
uses: actions/github-script@v7
with:
script: |
const branchName = context.ref.replace('refs/heads/', '');
const previewUrl = `https://aravind-dev--${branchName.replace(/\//g, '-')}-${context.sha.substring(0, 7)}.web.app`;
console.log(`Preview URL: ${previewUrl}`);
console.log(`Branch: ${branchName}`);
29 changes: 21 additions & 8 deletions .github/workflows/firebase-hosting-merge.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,32 @@
# This file was auto-generated by the Firebase CLI
# https://github.com/firebase/firebase-tools
# Deploy to Firebase Hosting on merge to main branch
name: Deploy to Production

name: Deploy to Firebase Hosting on merge
'on':
on:
push:
branches:
- main

jobs:
build_and_deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: npm install
- run: npm run build
- uses: FirebaseExtended/action-hosting-deploy@v0
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Build Astro site
run: npm run build

- name: Deploy to Firebase Hosting
uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: '${{ secrets.GITHUB_TOKEN }}'
firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_TEST_713FA }}'
Expand Down
40 changes: 27 additions & 13 deletions .github/workflows/firebase-hosting-pull-request.yml
Original file line number Diff line number Diff line change
@@ -1,23 +1,37 @@
# This file was auto-generated by the Firebase CLI
# https://github.com/firebase/firebase-tools
# Deploy preview to Firebase Hosting for Pull Requests
name: Deploy Preview

on:
pull_request:
types: [opened, synchronize, reopened]

name: Deploy to Firebase Hosting on commit
'on': push
jobs:
build_and_preview:
if: '${{ github.event.pull_request.head.repo.full_name == github.repository }}'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: |
sudo npm install gatsby-cli
gatsby -v
npm install
gatsby clean
gatsby build
- uses: FirebaseExtended/action-hosting-deploy@v0
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Build Astro site
run: npm run build

- name: Deploy to Firebase Hosting Preview Channel
uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: '${{ secrets.GITHUB_TOKEN }}'
firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_TEST_713FA }}'
projectId: test-713fa
target: aravind-dev
expires: 7d
env:
FIREBASE_CLI_PREVIEWS: hostingchannels
FIREBASE_CLI_EXPERIMENTS: webframeworks
10 changes: 8 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,12 @@ typings/
# dotenv environment variable files
.env*

# gatsby files
# gatsby files (legacy)
.cache/
public

# astro files
dist/
.astro/

# Mac files
.DS_Store
Expand All @@ -70,3 +73,6 @@ yarn-error.log

# firebase
.firebase/hosting.cHVibGlj.cache

# Claude Code settings
.claude/
70 changes: 60 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,73 @@
# aravind.dev

Source code for [aravind.dev](https://aravind.dev) blog.
This is the [Original Theme Source](https://github.com/taniarascia/taniarascia.com).
Personal website and blog built with [Astro](https://astro.build).

# Prerequisites
## Tech Stack

- Node
- Gatsby
- **Framework:** Astro 4
- **Styling:** Vanilla CSS (Brutalist theme)
- **Content:** Markdown + Astro components
- **Deployment:** Firebase Hosting
- **CI/CD:** GitHub Actions

# Building the project
## Quick Start

Below command installs all the necessary modules from the
```bash
# Install dependencies
npm install

# Start dev server (http://localhost:4321)
npm run dev

# Build for production
npm run build

# Preview production build
npm run preview
```
npm install

## Project Structure

```
src/
├── components/astro/ # Reusable components (Nav, Footer)
├── content/
│ ├── posts/ # Blog posts (markdown)
│ └── guides/ # Technical guides (markdown)
├── layouts/ # Page layouts
├── pages/ # Routes (index, blog, about, archive)
└── style.css # Global styles

public/
├── images/ # Static images
└── thumbnails/ # Post thumbnails
```
gatsby develop

## Content

Blog posts and guides are written in Markdown with frontmatter:

```markdown
---
title: 'Post Title'
date: '2024-01-01'
tags: ['tag1', 'tag2']
thumbnail: '../thumbnails/image.png'
---

Content here...
```

Please read more about each [plugin](https://www.gatsbyjs.com/plugins/) and about [gatsby](https://www.gatsbyjs.com/docs/quick-start/) further.
## Deployment

Push to `main` triggers automatic deployment to Firebase Hosting via GitHub Actions.

**Branch previews:** Push to any branch to get a preview deployment.

## Local Development

The site uses a brutalist design with light/dark mode support. Dark mode styles are in `public/dark.css` and loaded dynamically.

## License

Content is copyrighted. Code is available for reference.
Comment on lines 1 to +73
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fantastic documentation update! 📚

This README is super helpful and accurately reflects the Astro migration. Love the clear structure with Tech Stack, Quick Start, and Project Structure sections. Really makes it easy for someone to jump in!

One tiny thing: Line 31's code fence is missing a language identifier (markdownlint is complaining about it). No big deal, but it helps with syntax highlighting!

🔎 Quick fix
-```
+```plaintext
 src/
 ├── components/astro/   # Reusable components (Nav, Footer)
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

31-31: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
In README.md around lines 1 to 73 (specifically the code block showing the
Project Structure starting at line ~31), the opening triple-backtick fence has
no language identifier which triggers markdownlint; update the opening fence to
include a language (e.g., replace ``` with ```plaintext) so the code block is
labeled and the linter warning is resolved.

18 changes: 18 additions & 0 deletions astro.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { defineConfig } from 'astro/config';
import sitemap from '@astrojs/sitemap';

// https://astro.build/config
export default defineConfig({
site: 'https://www.aravind.dev',
integrations: [
sitemap(),
],
markdown: {
shikiConfig: {
theme: 'nord',
wrap: true
},
remarkPlugins: [],
rehypePlugins: [],
},
});
Binary file removed content/images/code-flat.png
Binary file not shown.
42 changes: 0 additions & 42 deletions content/pages/about.md

This file was deleted.

Binary file removed content/thumbnails/community.png
Binary file not shown.
Binary file removed content/thumbnails/gatsby.png
Binary file not shown.
Binary file removed content/thumbnails/github.png
Binary file not shown.
Binary file removed content/thumbnails/google-cloud.png
Binary file not shown.
Binary file removed content/thumbnails/original-tag.png
Binary file not shown.
Binary file removed content/thumbnails/python.png
Binary file not shown.
10 changes: 3 additions & 7 deletions firebase.json
Original file line number Diff line number Diff line change
@@ -1,17 +1,13 @@
{
"hosting": {
"public": "public",
"public": "dist",
"target": "aravind-dev",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
"cleanUrls": true,
"trailingSlash": false
}
}
Loading