A modern, elegant personal blog website with animated backgrounds and a calming reading experience.
- π¨ Modern, clean design with animated leaf background
- π± Fully responsive (mobile, tablet, desktop)
- π― 6 blog categories: Technology, Science, Philosophy, Poetry, Photo Story, Politics
- π Focused reading experience with progress indicator
- π Fast loading, no dependencies
- π SEO-friendly structure
- π° Free to host and maintain
blog-website/
βββ index.html # Home page with category buttons
βββ category.html # Lists all blogs in a category
βββ blog.html # Individual blog post reader
βββ blogs-data.js # Your blog posts database
βββ README.md # This file
- Open
blogs-data.js - Add a new blog object to the
blogsDataarray:
{
id: 'unique-id-here', // Unique identifier (e.g., 'tech-003')
category: 'technology', // One of: technology, science, philosophy, poetry, photo-story, politics
title: 'Your Blog Title',
punchline: 'A compelling one-liner that hooks readers',
date: 'January 11, 2025',
content: `
<p>Your blog content here in HTML format.</p>
<h2>Section Heading</h2>
<p>More content...</p>
<blockquote>"A memorable quote"</blockquote>
<p>Final thoughts...</p>
`
}- Use
<p>tags for paragraphs - Use
<h2>for main section headings - Use
<h3>for subsection headings - Use
<blockquote>for quotes - Use
<ul>and<li>for bullet lists - Use
<code>for inline code - Use
<em>for emphasis/italics - Use
<strong>for bold text
Pros: Free, reliable, automatic HTTPS, custom domain support, version control Cons: Public repository (your code is visible)
Steps:
- Create a GitHub account at https://github.com
- Create a new repository named
username.github.io(replace username with your GitHub username) - Upload all your files (index.html, category.html, blog.html, blogs-data.js)
- Go to Settings β Pages
- Select "Deploy from a branch" and choose "main" branch
- Your site will be live at
https://username.github.io
Custom Domain (Optional):
- Buy a domain from Namecheap, Google Domains, etc. (~$10-15/year)
- Add a CNAME file with your domain name
- Configure DNS settings in your domain registrar
Pros: Drag-and-drop deployment, automatic HTTPS, fast CDN, continuous deployment Cons: Limited build minutes on free plan (not relevant for static sites)
Steps:
- Sign up at https://netlify.com
- Drag and drop your folder onto Netlify
- Your site goes live instantly at a random URL
- Optionally change the URL or add a custom domain
Pros: Similar to Netlify, excellent performance, easy deployment Cons: None significant for this use case
Steps:
- Sign up at https://vercel.com
- Import your project (upload files or connect GitHub)
- Deploy with one click
- Your site is live
Pros: Fast CDN, unlimited bandwidth, free custom domains Cons: Slightly more technical setup
Steps:
- Sign up at https://pages.cloudflare.com
- Connect your GitHub repository or upload files directly
- Deploy
- Your site is live with Cloudflare's global CDN
Your website is already SEO-friendly with:
β Semantic HTML structure
- Proper heading hierarchy (h1, h2, h3)
- Descriptive page titles
- Meta descriptions
β Fast loading
- No heavy frameworks
- Minimal CSS/JS
- Optimized for performance
β Mobile responsive
- Works on all screen sizes
- Touch-friendly interface
β Clean URLs
- Descriptive page names
- Query parameters for dynamic content
-
Submit to Google Search Console
- Add your site at https://search.google.com/search-console
- Submit your sitemap (optional, can be auto-generated)
-
Add Google Analytics (optional, to track visitors)
<!-- Add before </head> in all HTML files --> <script async src="https://www.googletagmanager.com/gtag/js?id=YOUR-ID"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'YOUR-ID'); </script>
-
Create unique, valuable content
- Write from personal experience
- Provide unique insights
- Update regularly
-
Use descriptive titles and punchlines
- Make them compelling and specific
- Include relevant keywords naturally
-
Internal linking
- Link between related blog posts
- Add "Related Posts" sections
Edit the CSS variables in each HTML file:
:root {
--primary-bg: #fdfcf9;
--text-dark: #1a1a1a;
--text-light: #666;
--accent: #2c5f2d; /* Main accent color */
--hover-accent: #1e4620; /* Darker accent for hovers */
}Replace the Google Fonts link in the <head> section:
<link href="https://fonts.googleapis.com/css2?family=Your+Font&display=swap" rel="stylesheet">Then update the font-family in CSS.
In index.html, adjust these values in the JavaScript:
// Number of leaves
for (let i = 0; i < 15; i++) { // Change 15 to add more/fewer leaves
// Leaf creation frequency
setInterval(createLeaf, 800); // Change 800 (milliseconds) for faster/slower leavesIn your blog content, use:
<img src="path/to/image.jpg" alt="Description of image">For external images:
<img src="https://example.com/image.jpg" alt="Description">- Write new content - Add blog posts to
blogs-data.js - Update old posts - Fix typos, add new information
- Monitor performance - Check Google Search Console for issues
- Backup your content - Keep a local copy of all files
This website requires NO ongoing costs:
- β No hosting fees (using free platforms)
- β No database costs (static content)
- β No plugin subscriptions (vanilla HTML/CSS/JS)
- β No framework updates needed
Optional Costs:
- Custom domain: $10-15/year (optional but recommended for branding)
Works in all modern browsers:
- Chrome/Edge (latest)
- Firefox (latest)
- Safari (latest)
- Mobile browsers
- Load time: < 1 second
- No external dependencies
- Optimized for mobile
- Progressive enhancement
- Static site = minimal attack surface
- HTTPS enabled by default on all recommended platforms
- No user input = no SQL injection or XSS vulnerabilities
- Check that blog ID is unique
- Verify category name matches exactly
- Ensure JavaScript file is loading
- Clear browser cache
- Check for CSS syntax errors
- Verify file paths are correct
- Use relative paths (e.g.,
category.htmlnot/category.html) - Check that all HTML files are in the same directory
- βοΈ Write your first few blog posts
- π Deploy to one of the free hosting platforms
- π± Test on mobile devices
- π Submit to Google Search Console
- π£ Share your blog!
For questions or issues:
- Review this README carefully
- Check browser console for JavaScript errors
- Test in different browsers
- Verify all files are uploaded correctly
This template is free to use and modify for personal or commercial projects.
Happy Blogging! π
Remember: The best blog is one that you actually maintain. Start small, write regularly, and let your unique voice shine through your content.