Hosting Overview
Deployment Platform
The website is hosted on Netlify, with automatic deployments from the GitHub repository.
Why Netlify?
- Zero-config static hosting
- Automatic HTTPS/SSL certificates
- Global CDN distribution
- Continuous deployment from Git
- Serverless functions support (if needed)
- Built-in form handling
Netlify Configuration
The site is configured vianetlify.toml in the root directory:
[build] Section
[build] Section
publish = ”.”: Deploy the entire root directorycommand: Run the blog indexing script during build
chmod +x blog/update-posts.sh- Make the script executable./blog/update-posts.sh- Generate the blog post index
[build.environment]
[build.environment]
NODE_VERSION = “18”: Ensures consistent Node.js version for builds
Even though this is a static site, Node.js is specified for potential future use of build tools.
[[redirects]]
[[redirects]]
SPA-style routing: All routes serve
index.html with 200 statusThis allows clean URLs like /about instead of /about.htmlBuild Process
The build process is minimal but essential:Trigger Build
Build is triggered by:
- Git push to main branch
- Manual deployment from Netlify dashboard
- GitHub Actions (weekly scheduled builds)
Blog Update Script
Theblog/update-posts.sh script is the core of the build process:
How the Script Works
Loop Through Markdown Files
For each
.md file in blog/posts/:- Extract filename without extension
- Convert hyphens to spaces and capitalize words
- Extract date from filename (if formatted as YYYY-MM-DD)
- Generate JSON object with title, path, and date
Handle JSON Formatting
- Add commas between entries (but not before first entry)
- Properly format JSON with indentation
Example Output
Given a post fileblog/posts/05-10-2025.md, the script generates:
The title extraction could be improved to handle more descriptive filenames like
2025-05-10-my-blog-post.md.GitHub Actions Integration
The repository includes GitHub Actions workflows for automation:Deploy Workflow
Weekly Deploy
Copyright Update
Environment Setup
Local Development
No build step required for local development:All dependencies (Tailwind, Font Awesome) load from CDN, so no npm install required.
Prerequisites
Minimal requirements:- Git: For version control
- Bash: To run the blog update script
- Text editor: For editing HTML/CSS/JS
- Web browser: For testing
- Node.js: If you want to use npm-based servers
- Python: For simple HTTP server
Deployment Workflow
Manual Deployment
Continuous Deployment
Every push tomain branch triggers:
- GitHub Actions: Runs any configured workflows
- Netlify Build:
- Pulls latest code
- Runs build command
- Deploys to CDN
- Live Update: Site is live within 1-2 minutes
Build Time
Typical build takes 10-20 seconds (just running the bash script)
Redirects and Routing
The redirect configuration enables clean URLs:How Routing Works
Direct File Access
Direct File Access
URL:
/about.htmlResult: Serves about.html directlyClean URLs
Clean URLs
URL:
/aboutResult: Netlify serves about.html (automatic .html appending)Blog Posts
Blog Posts
URL:
/blogResult: Serves blog/index.html404 Handling
404 Handling
URL:
/nonexistent-pageResult: Serves index.html with 200 status (SPA-style)Adding New Blog Posts
Streamlined workflow for blog content:The build script runs automatically on Netlify, so you don’t need to commit
posts.json.Performance & Optimization
Build Optimization
- Fast builds: No compilation or transpilation needed
- Incremental updates: Only blog index regenerates
- CDN caching: Netlify’s CDN caches static assets globally
Asset Optimization
Current setup:| Asset Type | Current Approach | Optimization Opportunity |
|---|---|---|
| CSS | Custom CSS + Tailwind CDN | Build custom Tailwind CSS with only used classes |
| JavaScript | Vanilla JS + CDN libraries | Minify custom JS files |
| Images | Hosted on GitHub Pages | Use Netlify Image CDN or optimize images |
| Fonts | System fonts + Font Awesome CDN | Self-host Font Awesome subset |
Caching Strategy
Monitoring & Debugging
Netlify Deploy Logs
Access build logs in Netlify dashboard:- Go to Netlify site dashboard
- Click “Deploys” tab
- Select a deploy
- View full build log
Common Build Issues
Script Permission Error
Script Permission Error
Error:
Permission denied: blog/update-posts.shSolution: Build command includes chmod +x to fix permissionsMissing posts.json
Missing posts.json
Error: Blog page shows “Error loading posts”Solution: Ensure
update-posts.sh ran successfully during buildRedirect Issues
Redirect Issues
Error: Clean URLs not workingSolution: Verify
netlify.toml is in root directory and properly formattedTesting Builds Locally
Simulate the Netlify build:Production Checklist
Before deploying to production:Technical Checks
- Blog index generates correctly
- Responsive design works on all devices
- Forms submit properly (Formspree integration)
- External scripts load (Tailwind, Font Awesome)
Rollback Procedure
If a deployment breaks the site:Netlify Dashboard Rollback
- Go to Netlify site dashboard
- Click “Deploys” tab
- Find last working deploy
- Click “Publish deploy” button
Advanced Configuration
Custom Domain Setup
Environment Variables
If you need environment variables:Currently, no environment variables are needed beyond Node version.
Build Hooks
Create a webhook to trigger builds:- Netlify Dashboard → Site Settings → Build & Deploy → Build Hooks
- Create new hook with a name
- Copy the webhook URL
- Use in external services or scripts:
Next Steps
Project Structure
Understand the file organization
Styling Guide
Learn about CSS and design system

