Future Enhancements Roadmap
Future Enhancements Roadmap
Overview
This document tracks potential enhancements, refactoring opportunities, and feature requests for the Matt Blogs IT blog. Items are prioritized by impact and effort required.
Last Updated: January 2025 Status: 7.5/10 - Production ready with optimization opportunities
๐ด High Priority (Critical Impact)
1. Image Optimization Infrastructure โ COMPLETED
Status: โ Implemented (January 2025) Priority: Critical Effort: Medium (1-2 weeks)
Implemented Solutions:
- โ
Batch optimization script (
)1
scripts/optimize-images.sh
- โ Pre-commit hook for local validation
- โ GitHub Actions workflow for PR validation
- โ
Comprehensive documentation (
)1
IMAGE_OPTIMIZATION.md
Results:
- Automated prevention of large image commits
- PR comments with optimization guidance
- Blocked merges for images >500KB
- Expected 55-60% reduction in image sizes after batch optimization
Next Steps:
- Run
on existing images1
./scripts/optimize-images.sh
- Monitor PR image optimization compliance
- Review and optimize GIF files manually
2. Code Duplication Refactoring
Status: ๐ถ Planned Priority: High Effort: Medium (1-2 weeks) Impact: Improved maintainability, reduced bugs
Issues Identified:
- Category iteration logic duplicated in 3 locations
- Archive year calculation duplicated in 3 files
- Mobile navigation logic split between HTML and JavaScript
Proposed Solutions:
Extract Reusable Components
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<!-- _includes/category-list.html -->
<a href="/category/administrator/">
Administrator (29)
</a>
<a href="/category/athletics/">
Athletics (1)
</a>
<a href="/category/developer/">
Developer (5)
</a>
<a href="/category/microsoft/">
Microsoft (65)
</a>
<a href="/category/out-of-band/">
Out of Band (35)
</a>
<a href="/category/review/">
Review (1)
</a>
<a href="/category/user/">
User (13)
</a>
<a href="/category/vmware/">
VMware (2)
</a>
<!-- _includes/archive-years.html -->
<a href="/archive//"></a>
<!-- _includes/mobile-menu.html -->
<nav class="combined-menu" id="mobile-menu">
<!-- Mobile menu structure -->
</nav>
Files to Update:
- Remove duplicated logic1
_layouts/default.html
- Use new includes1
_includes/sidebar.html
- Reference shared components1
_pages/category.md
Estimated Time: 2-3 hours Testing Required: Full site regression test
3. CSS Consolidation
Status: ๐ถ Planned Priority: High Effort: Low (15-30 minutes) Impact: Reduced HTTP requests, improved LCP
Current State:
- 58.5 KB1
main.css
- 6.5 KB1
analytics.css
- Total: 65 KB (under 100KB limit โ )
Proposed Changes:
- Merge
into1
analytics.css
1
main.css
- Remove separate stylesheet link in
1
_layouts/default.html
- Test production build
Benefits:
- HTTP requests: 2 โ 1
- Better CSS minification
- Simplified asset pipeline
Command:
1
2
3
cat assets/css/analytics.css >> assets/css/main.css
rm assets/css/analytics.css
# Update _layouts/default.html
Estimated Time: 15 minutes Risk: Low
๐ Medium Priority (Significant Impact)
4. JavaScript Initialization Cleanup
Status: ๐ถ Planned Priority: Medium Effort: Low (15-30 minutes) Impact: Reduced complexity, cleaner code
Issue: has 4 redundant initialization strategies1
theme-switcher.js
Current Code (Lines 137-153):
1
2
3
4
5
6
7
8
9
10
11
document.addEventListener('DOMContentLoaded', initThemeSwitcher);
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initThemeSwitcher);
} else {
setTimeout(initThemeSwitcher, 10);
}
window.addEventListener('load', () => {
if (!document.documentElement.hasAttribute('data-theme-initialized')) {
initThemeSwitcher();
}
});
Proposed Solution:
1
2
3
4
5
6
// Single, clean initialization
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initThemeSwitcher);
} else {
initThemeSwitcher();
}
File:
Estimated Time: 15 minutes
Testing: Verify theme switching works on page load1
assets/js/theme-switcher.js
5. Lazy Loading Implementation
Status: ๐ถ Planned Priority: Medium Effort: Low (1-2 hours) Impact: Faster initial page load, improved LCP
Proposed Changes:
Update all image templates to include:
1
2
3
4
<img src=""
alt=""
loading="lazy"
decoding="async">
Files to Update:
templates (any with image rendering)1
_includes/
1
_layouts/post.html
- Documentation in CLAUDE.md
Benefits:
- Below-fold images donโt block initial load
- Reduced bandwidth for users who donโt scroll
- Better Core Web Vitals scores
Estimated Time: 1 hour Testing: Verify images still load correctly
6. Conditional JavaScript Loading Enhancement
Status: ๐ถ Planned Priority: Medium Effort: Low (15 minutes) Impact: Reduced JavaScript on post/about pages
Current Implementation:
- โ
- Only on1
pagination.js
page1
/posts/
- โ
- Only on pages with images1
modal.js
- โ
- Loads on all pages1
collapsible.js
Proposed Change:
1
File:
Estimated Time: 15 minutes
Impact: ~5KB less JavaScript on post pages1
_layouts/default.html
7. Template Complexity Reduction
Status: ๐ถ Planned Priority: Medium Effort: Medium (1-2 hours) Impact: Improved maintainability
Issue: is 173 lines and handles multiple concerns1
_layouts/default.html
Proposed Refactoring:
- Extract mobile menu to
1
_includes/mobile-menu.html
- Extract breadcrumbs to
1
_includes/breadcrumbs.html
- Simplify main layout structure
Benefits:
- Easier to maintain and debug
- Better separation of concerns
- More testable components
Estimated Time: 1-2 hours Testing: Full site regression
๐ก Low Priority (Nice to Have)
8. Progressive Web App (PWA) Features
Status: ๐ก Proposed Priority: Low Effort: High (1-2 weeks) Impact: Offline support, app-like experience
Features:
- Service worker for offline caching
- Manifest file for install prompt
- Background sync for analytics
- Offline fallback page
Implementation:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// sw.js - Service Worker
const CACHE_NAME = 'mattblogsit-v1';
const urlsToCache = [
'/',
'/assets/css/main.css',
'/assets/js/theme-switcher.js',
'/offline.html'
];
self.addEventListener('install', (event) => {
event.waitUntil(
caches.open(CACHE_NAME)
.then((cache) => cache.addAll(urlsToCache))
);
});
Estimated Time: 1-2 weeks Benefits: Works offline, installable, faster repeat visits
9. Critical CSS Implementation
Status: ๐ก Proposed Priority: Low Effort: Medium (2-3 hours) Impact: Faster initial render
Approach:
- Extract above-the-fold CSS
- Inline critical CSS in
1
<head>
- Defer non-critical CSS loading
Tools:
- Critical - Extract critical CSS
- Jekyll plugin or build step
Example:
1
2
3
4
5
6
7
8
<head>
<style>
/* Inlined critical CSS */
:root { --bg-primary: #ffffff; ... }
body { font-family: -apple-system; ... }
</style>
<link rel="preload" href="/assets/css/main.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
</head>
Estimated Time: 2-3 hours Impact: Improved First Contentful Paint (FCP)
10. Enhanced Search Functionality
Status: ๐ก Proposed Priority: Low Effort: Medium (3-4 hours) Impact: Better user experience
Current: Basic client-side search Proposed: Enhanced search with:
- Search suggestions/autocomplete
- Category/tag filtering
- Date range filtering
- Better relevance scoring
Options:
- Lunr.js (client-side, no backend)
- Algolia (hosted, fast, free tier)
- Pagefind (static search index)
Recommendation: Algolia for best UX
Estimated Time: 3-4 hours Cost: Free tier (10k requests/month)
11. Responsive Image Implementation
Status: ๐ก Proposed Priority: Low Effort: Medium (2-3 hours) Impact: Optimized images per device
Approach:
1
2
3
4
5
6
7
8
9
10
11
12
13
<picture>
<source media="(max-width: 480px)"
srcset="-400.webp"
type="image/webp">
<source media="(max-width: 1024px)"
srcset="-800.webp"
type="image/webp">
<source srcset="-1200.webp"
type="image/webp">
<img src="-800.jpg"
alt=""
loading="lazy">
</picture>
Requires:
- Batch script to generate multiple sizes
- Update image optimization workflow
- Template updates
Estimated Time: 2-3 hours Impact: Smaller images on mobile devices
๐ฎ Future Considerations
Platform Migration Analysis
Trigger Points:
- Build times exceed 5 minutes
- Need for user authentication
- E-commerce requirements
- Team shifts to JavaScript-first development
Alternatives Researched:
| Platform | Best For | Effort | Cost |
|---|---|---|---|
| Hugo | Large sites (>500 posts), speed | Medium | Free |
| Eleventy | JavaScript teams, flexibility | Low-Medium | Free |
| Astro | Modern web apps, interactivity | High | Free |
| Next.js | Full web applications | Very High | Variable |
| Ghost | Professional blogs, monetization | Medium | $9-29/mo |
| Hashnode | Developer community blogs | Low | Free |
Current Recommendation: Stay with Jekyll
Reasons:
- Free GitHub Pages hosting
- Solid codebase (7.5/10 grade)
- Optimization opportunities address current issues
- Well-documented and stable
- Low maintenance overhead
Reconsider when:
- Site grows beyond 500 posts
- Build times become bottleneck
- Need advanced features not possible with static sites
๐ Enhancement Checklist
Immediate (This Week)
- Run image optimization script on all existing images
- Setup git hooks for image validation
- Monitor PR image checks
Short Term (This Month)
- Extract category/archive reusable components
- Merge CSS files (analytics.css โ main.css)
- Simplify theme-switcher.js initialization
- Add lazy loading to all images
- Conditional loading for collapsible.js
Medium Term (This Quarter)
- Extract mobile menu to separate include
- Implement critical CSS
- Add PWA service worker
- Enhanced search with Algolia
Long Term (This Year)
- Responsive image implementation
- Performance monitoring dashboard
- Automated Lighthouse testing in CI/CD
- Review platform alternatives (annual)
๐ฏ Success Metrics
Performance Targets
- Lighthouse Score: 85 โ 95+
- Image Size: 45MB โ 15-20MB (55-60% reduction)
- LCP: <2.5s (target: <1.5s)
- CLS: <0.1 (maintain)
- FID: <100ms (maintain)
Code Quality Targets
- Code Duplication: Reduce by 30-40%
- Template Complexity: 173 lines โ <100 lines
- HTTP Requests: Reduce CSS requests (2โ1)
- JavaScript Loading: Conditional loading for 100% of scripts
Automation Coverage
- โ Image optimization (pre-commit + CI/CD)
- โ Build validation (PR checks)
- โ Security scanning (automated)
- ๐ถ Performance budgets (planned)
- ๐ถ Lighthouse CI (planned)
๐ Notes
Completed Enhancements
- โ Image optimization automation (January 2025)
- โ PR build validation workflow
- โ Conditional JavaScript loading (partial)
- โ CSS consolidation (analytics.css ready to merge)
Deferred Enhancements
- Platform migration (not needed currently)
- Complex search (current search adequate)
- Advanced PWA features (low priority)
Monitoring & Review
- Quarterly: Review enhancement priorities
- Bi-annual: Lighthouse audits and performance review
- Annual: Platform alternatives assessment
๐ค Contributing
To propose new enhancements:
- Create GitHub issue with
label1
enhancement
- Describe problem/opportunity
- Propose solution with effort estimate
- Tag with priority level
- Discuss in issue comments
For questions about this roadmap:
- Check existing issues
- Review IMAGE_OPTIMIZATION.md for image-related items
- Review CLAUDE.md for development workflow
Document Version: 1.0 Last Review: January 2025 Next Review: April 2025