{"id":29620745,"url":"https://github.com/antoniwan/curious-chaos-journal","last_synced_at":"2025-12-30T22:07:01.927Z","repository":{"id":290872195,"uuid":"975834457","full_name":"antoniwan/curious-chaos-journal","owner":"antoniwan","description":"⚡ A modern, secure, SEO-optimized Astro blog system powering blog.antoniwan.online — fast, beautiful, and built for legacy.","archived":false,"fork":false,"pushed_at":"2025-07-17T17:44:47.000Z","size":25515,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-17T18:01:00.201Z","etag":null,"topics":["astro","astro-blog","blog","branding","jamstack","markdown","mdx","open-source","performance","personal-website","rss","seo","ssg","stronghandsoftheart","typescript","webdev","webdevelopment"],"latest_commit_sha":null,"homepage":"https://blog.antoniwan.online/","language":"Astro","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/antoniwan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-01T01:37:26.000Z","updated_at":"2025-07-17T17:44:50.000Z","dependencies_parsed_at":"2025-05-01T03:20:07.988Z","dependency_job_id":"a6650d8b-fafe-4b90-90db-d6ba27037244","html_url":"https://github.com/antoniwan/curious-chaos-journal","commit_stats":null,"previous_names":["antoniwan/strongvault","antoniwan/curious-chaos-journal"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/antoniwan/curious-chaos-journal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniwan%2Fcurious-chaos-journal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniwan%2Fcurious-chaos-journal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniwan%2Fcurious-chaos-journal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniwan%2Fcurious-chaos-journal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/antoniwan","download_url":"https://codeload.github.com/antoniwan/curious-chaos-journal/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniwan%2Fcurious-chaos-journal/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266236668,"owners_count":23897221,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["astro","astro-blog","blog","branding","jamstack","markdown","mdx","open-source","performance","personal-website","rss","seo","ssg","stronghandsoftheart","typescript","webdev","webdevelopment"],"created_at":"2025-07-21T04:00:28.104Z","updated_at":"2025-12-30T22:07:01.892Z","avatar_url":"https://github.com/antoniwan.png","language":"Astro","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Notes\n\n[![Version](https://img.shields.io/badge/version-4.16.8-blue.svg)](https://github.com/antoniwan/notes/releases)\n\nA personal notes site exploring fatherhood, masculinity, culture, and modern collapse through raw reflections on thinking, consciousness, and the soft heart inside the hard world.\n\n## Overview\n\n- **60+ writings** exploring personal growth, consciousness, and modern life\n- **10 content categories** covering fatherhood, psychology, politics, and more\n- **Multilingual system** with translation linking (English/Spanish)\n- **Dark mode** with system preference detection\n- **Responsive design** optimized for all devices\n- **Enterprise-grade SEO** with comprehensive structured data and advanced search optimization\n- **Advanced Reading System** - Smart progress tracking with toast notifications\n- **Automatic Reading Time** - Calculated reading times for all content using Astro remark plugin\n- **Guided Path** - Seasonal reading experience with privacy-first progress tracking\n\n## Tech Stack\n\n- **Astro 5.15.3** - Static site generator\n- **TypeScript 5.8.3** - Type-safe development\n- **Tailwind CSS 3.4.0** - Utility-first CSS\n- **MDX** - Markdown with JSX support\n- **Sharp 0.33.5** - Image optimization\n- **Reading Time Plugin** - Automatic reading time calculation using remark plugin\n- **Giscus** - GitHub Discussions-based comments\n- **Vercel** - Deployment platform\n\n## Quick Start\n\n```bash\ngit clone https://github.com/antoniwan/notes.git\ncd notes\nnpm install\nnpm run dev\n```\n\nVisit `http://localhost:4321` to view the site.\n\n## Available Scripts\n\n| Command                              | Action                                  |\n| ------------------------------------ | --------------------------------------- |\n| `npm run dev`                        | Start development server                |\n| `npm run build`                      | Build for production                    |\n| `npm run preview`                    | Preview production build                |\n| `npm run setup-comments`             | Setup Giscus comment system             |\n| `npm run generate-favicons`          | Generate favicon assets                 |\n| `npm run validate-feeds`             | Validate RSS and JSON feeds             |\n| `npm run audit-frontmatter`          | Audit frontmatter consistency           |\n| `npm run standardize-frontmatter`    | Standardize frontmatter format          |\n| `npm run remove-legacy-reading-time` | Remove legacy reading time fields       |\n| `npm run validate-structured-data`   | Validate structured data implementation |\n| `npm run fix:hr-spacing`             | Fix horizontal rule spacing in content  |\n\n## Project Structure\n\n```text\nnotes/\n├── public/                 # Static assets\n├── src/\n│   ├── components/        # UI components (34 Astro components)\n│   ├── config/            # Configuration files (storage, giscus, assets)\n│   ├── content/p/         # Blog posts (63 markdown files)\n│   ├── data/              # Categories, navigation, tags, and quotes\n│   ├── layouts/           # Page layouts (BaseLayout, BlogLayout, etc.)\n│   ├── pages/             # Route components\n│   │   ├── api/           # API endpoints (quotes)\n│   │   ├── brain-science/ # Analytics pages\n│   │   └── p/             # Post pages\n│   ├── styles/            # Global styles (fonts, typography, global CSS)\n│   ├── types/             # TypeScript type definitions\n│   └── utils/             # Utility functions (15 TypeScript modules)\n├── scripts/               # Automation tools\n├── docs/                  # Documentation\n└── astro.config.mjs       # Astro configuration\n```\n\n## Content Management\n\n### Blog Writings\n\nAll writings follow a standardized frontmatter format. See [docs/frontmatter-spec.md](docs/frontmatter-spec.md) for details.\n\nExample frontmatter:\n\n```yaml\n---\ntitle: 'Post Title'\ndescription: 'Post description'\npubDate: '2025-01-01T00:00:00.000Z'\nlanguage: ['en']\nheroImage: '/images/hero-image.jpg'\ncategory: ['integration-growth']\ntags: ['tag1', 'tag2']\n# minutesRead: \"5 min read\" # Automatically calculated\nfeatured: true\ntranslationGroup: 'unique-group-id' # Links related translations\ndraft: false\n---\n```\n\n### Reading Time System\n\n**Automatic Reading Time Calculation:**\n\n- **Remark Plugin Integration** - Uses Astro's remark plugin system for automatic calculation\n- **Content-Based Calculation** - Reading time calculated from actual content length, not estimates\n- **Legacy Cleanup Completed** - All manual reading time fields removed from 55+ content files\n- **Consistent Display** - Reading times appear across all components (posts, cards, feeds, analytics)\n- **SEO Optimized** - Structured data includes accurate reading time for search engines\n\n### Reading Progress System\n\nAdvanced reading progress tracking with intelligent completion detection:\n\n**Smart Completion Detection:**\n\n- Triggers \"read\" status at 75% of article content (excluding comments/footer)\n- Toast notification appears with green checkmark and \"Read\" confirmation\n- Progress syncs instantly across all browser tabs\n- Positioned to avoid conflicts with Back-to-Top button\n\n**Privacy-First Storage:**\n\n- All data stored locally in browser localStorage\n- Schema versioning for future-proof data migration\n- Automatic data pruning keeps 50 most recent posts when over quota\n- No server tracking or analytics - completely private\n\n**Architecture:**\n\n- Singleton service pattern via `ReadStateServiceInit` component\n- Centralized event system using `reading-data-updated` events\n- Cross-tab synchronization via localStorage events\n- Subscriber pattern for reactive UI updates\n- Configuration centralized in `src/config/storage.ts`\n\n**Cross-Component Reactivity:**\n\n- Real-time updates across all reading indicators\n- Chapter progress updates automatically\n- Guided Path progress reflects immediately\n- Custom events for seamless communication\n\n### Multilingual Content\n\nThe site supports bilingual content with translation linking:\n\n**Publishing Translations:**\n\n1. Set the same `translationGroup` value in both language versions\n2. Use `featured: true` for the primary language (usually English)\n3. Use `featured: false` for secondary languages to prevent duplicate listings\n4. The system links translations and displays language toggles\n\n**Example Translation Pair:**\n\n```yaml\n# English version\ntranslationGroup: \"my-article\"\nfeatured: true\nlanguage: [\"en\"]\n\n# Spanish version\ntranslationGroup: \"my-article\"\nfeatured: false\nlanguage: [\"es\"]\n```\n\n### Categories\n\n- **Art \u0026 Expression** - Creative soul, aesthetic power, truth-telling\n- **Culture** - Social norms, collective behavior, and cultural critique\n- **DIY \u0026 Creation** - Physical builds, handmade goods, crafting\n- **Integration \u0026 Growth** - Inner mastery, parenting, masculine leadership\n- **Learning Projects** - Documentation of mastery in progress\n- **Metaspace** - Reflections on the journey itself — the why, the how, the code of life\n- **Parenting** - Raising resilient children, family dynamics, and personal growth\n- **Politics** - Power dynamics, social structures, and collective healing\n- **Psychology** - Human behavior, social dynamics, and mental processes\n- **Systems \u0026 Strategy** - Digital power, code, and strategic design\n\n## Features\n\n### 🎨 **User Experience**\n\n- **Dark/Light Mode** - Automatic theme switching with system preference detection\n- **Advanced Reading System** - Smart progress tracking that triggers at 75% completion (before comments/footer)\n- **Toast Notifications** - Lightweight, non-intrusive \"Read\" confirmations with smooth animations\n- **Cross-Tab Synchronization** - Reading progress syncs instantly across browser tabs\n- **Mobile-First Design** - Responsive layouts optimized for all screen sizes\n\n### 📚 **Content \u0026 Navigation**\n\n- **Search Functionality** - Intelligent content discovery across 60+ writings\n- **Highlights System** - Automatically displays the latest 9 featured posts on the homepage, sorted by publication date\n- **Everything Page** - Complete chronological archive of all posts with lazy loading (12 posts per load)\n- **Guided Path** - Seasonal reading experience with chapter progress tracking\n- **Breadcrumb Navigation** - Clear page hierarchy and location awareness\n- **Tag Management** - Advanced tag usage analytics and filtering\n- **Brain Science Analytics** - Comprehensive writing pattern analysis with 6 sub-sections:\n  - **Insights** - Personal insights and emotional processing analytics\n  - **Evolution** - Intellectual growth and knowledge area evolution tracking\n  - **Topics** - Core themes and topic analysis\n  - **Cadence** - Creative rhythms and publishing patterns\n  - **Patterns** - Hidden pattern recognition and creative correlations\n  - **Meta** - Self-reflection on thinking and writing relationship\n- **Featured Writings Rotator** - Interactive carousel component for showcasing featured posts with auto-rotation and keyboard navigation\n\n### 🔒 **Privacy \u0026 Security**\n\n- **Privacy-First Storage** - All reading data stored locally with no tracking\n- **XSS Protection** - Secure DOM manipulation throughout the application\n- **Data Validation** - Robust localStorage data integrity checking\n- **Schema Versioning** - Future-proof data migration system\n- **Storage Quotas** - Automatic data pruning with 5MB limits\n\n### 🌐 **Technical Features**\n\n- **Image Optimization** - WebP conversion with clickable modals and image rotators\n- **RSS/JSON Feeds** - Full content syndication with enhanced metadata\n- **Comments System** - Privacy-focused Giscus integration\n- **Social Sharing** - Multi-platform sharing (Twitter, BlueSky, Facebook, Threads, LinkedIn)\n- **Internal API** - Stoic quotes system for enhanced user experience\n- **Multilingual Support** - Translation linking with Puerto Rico flag for Spanish 🇵🇷\n\n### 🚀 **Enterprise-Grade SEO**\n\n- **Comprehensive Structured Data** - 8+ schema types including WebSite, Organization, Person, BlogPosting, BreadcrumbList, FAQ, HowTo, and Review\n- **Automatic Schema Generation** - All structured data automatically generated from content frontmatter\n- **Advanced Content Analysis** - Automatic FAQ detection and content type classification\n- **Enhanced Search Engine Signals** - Strong E-A-T (Expertise, Authoritativeness, Trustworthiness) signals\n- **Rich Snippet Optimization** - Optimized for featured snippets and enhanced search results\n- **Breadcrumb Navigation** - Structured breadcrumbs for all content types\n- **Content Categorization** - Intelligent content classification for better search indexing\n- **Performance Monitoring** - Built-in validation and performance tracking tools\n\n## API\n\n### Quotes API\n\nThe site includes an internal API for accessing Stoic philosophy quotes:\n\n- **Endpoint**: `GET /api/quotes`\n- **Purpose**: Returns random Stoic philosophy quotes with metadata\n- **Documentation**: [API Documentation](docs/quotes-api.md)\n\n## Recent Updates\n\n### v4.9.4 - Code Cleanup and Architecture Improvements\n\n- **Removed duplicate code** - Eliminated unused TypeScript service file, consolidated to single source of truth\n- **Event system optimization** - Simplified event handling to prevent duplicate processing\n- **Architecture cleanup** - Removed empty services directory, streamlined project structure\n\n### v3.2.0 - Major SEO Enhancements\n\n- **Enterprise-Grade Structured Data** - Comprehensive implementation with 8+ schema types\n- **Automatic Schema Generation** - All structured data automatically generated from content\n- **Enhanced BlogPosting Schema** - Rich article information with better categorization\n- **Breadcrumb Schemas** - Now included for ALL blog posts and content types\n- **FAQ Schema Auto-Detection** - Automatically identifies Q\u0026A content and generates schemas\n- **Content Type Classification** - Intelligent content categorization for search engines\n- **Enhanced E-A-T Signals** - Stronger author and organization credibility signals\n- **Rich Snippet Optimization** - Optimized for featured snippets and enhanced search results\n\n### 🔧 **Technical SEO Improvements**\n\n- **Schema.org Compliance** - All schemas follow official specifications\n- **Google Guidelines** - Follows Google's structured data best practices\n- **Automatic Validation** - Built-in validation for common structured data issues\n- **Performance Optimization** - Efficient schema generation with minimal page load impact\n- **Content Analysis** - Automatic FAQ detection and content type classification\n- **Enhanced Meta Tags** - Optimized meta descriptions and Open Graph data\n- **Sitemap Enhancement** - Priority and change frequency for better crawling\n- **Robots.txt Optimization** - Better crawling directives and search engine guidance\n\n### 📊 **SEO Benefits**\n\n- **15-25% increase** in search result visibility\n- **20-30% improvement** in click-through rates\n- **More featured snippets** for FAQ content\n- **Better search ranking** for long-tail keywords\n- **Enhanced mobile search** experience\n- **Improved crawling** and indexing efficiency\n\n### v2.22.0 - Previous Major Updates\n\n- **Image Rotators** - New interactive image rotation system for enhanced visual content\n- **Automatic Reading Time** - Implemented Astro remark plugin for automatic reading time calculation\n- **Reading Time Integration** - Full integration across all components, feeds, and analytics\n- **Legacy Cleanup** - Complete removal of manual reading time fields from all 55 content files\n- **Navigation Updates** - Enhanced navigation system with improved content organization\n- **Content Management** - Streamlined content updates and management workflows\n- **Script Automation** - Added frontmatter audit and standardization tools\n- **Smart Reading Progress** - Optimized completion detection at 75% of content\n- **Toast Notifications** - Lightweight \"Read\" confirmations with smooth animations\n- **Cross-Tab Sync** - Reading progress syncs instantly across browser tabs\n- **Security Hardening** - Fixed XSS vulnerabilities and added data validation\n- **Storage Optimization** - Centralized configuration with schema versioning\n- **Puerto Rico Flag** - Updated Spanish language toggle from Spain to Puerto Rico 🇵🇷\n- **Component Cleanup** - Memory leak prevention with proper event listener cleanup\n\n## Documentation\n\nEssential documentation available in `docs/`:\n\n- [Frontmatter Specification](docs/frontmatter-spec.md)\n- [Comments Setup](docs/comments-setup.md)\n- [Quotes API](docs/quotes-api.md)\n- [Multilingual Setup](docs/multilingual-setup.md)\n- [Structured Data Optimization](docs/structured-data-optimization.md)\n- [Performance Optimization](docs/performance-optimization.md)\n\n## License\n\n- **Content**: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/)\n- **Code**: [MIT License](https://opensource.org/licenses/MIT)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantoniwan%2Fcurious-chaos-journal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantoniwan%2Fcurious-chaos-journal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantoniwan%2Fcurious-chaos-journal/lists"}