Content Page #19

Merged
an.di merged 48 commits from adilallo/feature/Blog into main 2025-09-18 15:44:46 +00:00
Owner

Implement Complete Blog and CMS System with Markdown Files

Overview

This PR implements a complete blog and CMS system using markdown files and Next.js static generation, allowing content creators to add blog posts by simply adding markdown files to the repository. The system provides a full-featured blog with automatic related articles, SEO optimization, and seamless integration with the existing design system.

Changes

  • New Blog Infrastructure: Complete /blog route with dynamic [slug] pages for individual articles
  • Content Processing System: lib/content.js with markdown parsing, frontmatter handling, and related articles algorithm
  • New Components:
    • ContentThumbnailTemplate - Blog listing cards with vertical/horizontal variants
    • ContentContainer - Structured content layout with icon cycling
    • ContentBanner - Article headers with background selection
    • RelatedArticles - Responsive carousel with progress bars
    • ConditionalHeader - Dynamic header based on pathname
  • Enhanced Components: AskOrganizer with new "inverse" variant
  • SEO & Metadata: Open Graph, Twitter Cards, structured data (JSON-LD), and comprehensive meta tags
  • Content Management: Template system with _template.md and contributor documentation
  • Testing: Comprehensive test suite with 432 passing tests across unit, integration, and E2E
  • Storybook Integration: All new components documented with stories and variants
  • Code Quality: Linting passes, Prettier formatting applied

Screenshots

How to Test

  1. Run locally: npm run dev and navigate to /blog to see the blog listing
  2. Test individual articles: Click on any blog post thumbnail to view full article
  3. Verify responsive design: Test on mobile, tablet, and desktop breakpoints
  4. Check Storybook: npm run storybook to see all new components and variants
  5. Test content creation: Add a new markdown file to content/blog/ following _template.md
  6. Verify SEO: Check page source for meta tags, Open Graph, and structured data
  7. Test related articles: Verify related articles appear and are clickable
  8. Run tests: npm test -- --run to ensure all 432 tests pass
  9. Check accessibility: Use browser dev tools to verify WCAG compliance

Notes

  • Content Management: Contributors can add new blog posts by creating markdown files in content/blog/
  • Related Articles: Algorithm uses keyword matching from title, description, and content
  • Static Generation: All blog content is statically generated at build time for optimal performance
  • Design System Integration: Uses existing design tokens, spacing, and component patterns
  • Documentation: Complete contributor guide in docs/CONTENT_CREATION_GUIDE.md
  • Future Enhancements: System is ready for search, filtering, and pagination features
  • Performance: Maintains existing app performance with optimized static generation
  • Testing: Comprehensive test coverage ensures reliability and maintainability
# Implement Complete Blog and CMS System with Markdown Files ## Overview This PR implements a complete blog and CMS system using markdown files and Next.js static generation, allowing content creators to add blog posts by simply adding markdown files to the repository. The system provides a full-featured blog with automatic related articles, SEO optimization, and seamless integration with the existing design system. ## Changes - **New Blog Infrastructure**: Complete `/blog` route with dynamic `[slug]` pages for individual articles - **Content Processing System**: `lib/content.js` with markdown parsing, frontmatter handling, and related articles algorithm - **New Components**: - `ContentThumbnailTemplate` - Blog listing cards with vertical/horizontal variants - `ContentContainer` - Structured content layout with icon cycling - `ContentBanner` - Article headers with background selection - `RelatedArticles` - Responsive carousel with progress bars - `ConditionalHeader` - Dynamic header based on pathname - **Enhanced Components**: `AskOrganizer` with new "inverse" variant - **SEO & Metadata**: Open Graph, Twitter Cards, structured data (JSON-LD), and comprehensive meta tags - **Content Management**: Template system with `_template.md` and contributor documentation - **Testing**: Comprehensive test suite with 432 passing tests across unit, integration, and E2E - **Storybook Integration**: All new components documented with stories and variants - **Code Quality**: Linting passes, Prettier formatting applied ## Screenshots <!-- Visual changes include new blog listing page, individual article pages, and component variants in Storybook --> ## How to Test 1. **Run locally**: `npm run dev` and navigate to `/blog` to see the blog listing 2. **Test individual articles**: Click on any blog post thumbnail to view full article 3. **Verify responsive design**: Test on mobile, tablet, and desktop breakpoints 4. **Check Storybook**: `npm run storybook` to see all new components and variants 5. **Test content creation**: Add a new markdown file to `content/blog/` following `_template.md` 6. **Verify SEO**: Check page source for meta tags, Open Graph, and structured data 7. **Test related articles**: Verify related articles appear and are clickable 8. **Run tests**: `npm test -- --run` to ensure all 432 tests pass 9. **Check accessibility**: Use browser dev tools to verify WCAG compliance ## Notes - **Content Management**: Contributors can add new blog posts by creating markdown files in `content/blog/` - **Related Articles**: Algorithm uses keyword matching from title, description, and content - **Static Generation**: All blog content is statically generated at build time for optimal performance - **Design System Integration**: Uses existing design tokens, spacing, and component patterns - **Documentation**: Complete contributor guide in `docs/CONTENT_CREATION_GUIDE.md` - **Future Enhancements**: System is ready for search, filtering, and pagination features - **Performance**: Maintains existing app performance with optimized static generation - **Testing**: Comprehensive test coverage ensures reliability and maintainability
an.di added 23 commits 2025-09-12 20:48:46 +00:00
Run lint and prettier
CI Pipeline / test (20) (pull_request) Failing after 8m5s
CI Pipeline / test (18) (pull_request) Failing after 8m36s
CI Pipeline / e2e (chromium) (pull_request) Successful in 2m32s
CI Pipeline / e2e (webkit) (pull_request) Successful in 3m40s
CI Pipeline / e2e (firefox) (pull_request) Successful in 5m43s
CI Pipeline / performance (pull_request) Failing after 3m18s
CI Pipeline / visual-regression (pull_request) Failing after 3m20s
CI Pipeline / lint (pull_request) Successful in 1m7s
CI Pipeline / storybook (pull_request) Successful in 1m32s
CI Pipeline / build (pull_request) Successful in 1m22s
500d2d0965
an.di added 3 commits 2025-09-12 22:20:12 +00:00
Add blog snapshots
CI Pipeline / test (18) (pull_request) Has been cancelled
CI Pipeline / test (20) (pull_request) Has been cancelled
CI Pipeline / e2e (chromium) (pull_request) Has been cancelled
CI Pipeline / e2e (firefox) (pull_request) Has been cancelled
CI Pipeline / e2e (webkit) (pull_request) Has been cancelled
CI Pipeline / visual-regression (pull_request) Has been cancelled
CI Pipeline / performance (pull_request) Has been cancelled
CI Pipeline / storybook (pull_request) Has been cancelled
CI Pipeline / lint (pull_request) Has been cancelled
CI Pipeline / build (pull_request) Has been cancelled
a276978743
an.di added 1 commit 2025-09-12 22:53:32 +00:00
Update storybook base config
CI Pipeline / test (18) (pull_request) Has been cancelled
CI Pipeline / test (20) (pull_request) Has been cancelled
CI Pipeline / e2e (chromium) (pull_request) Has been cancelled
CI Pipeline / e2e (firefox) (pull_request) Has been cancelled
CI Pipeline / e2e (webkit) (pull_request) Has been cancelled
CI Pipeline / visual-regression (pull_request) Has been cancelled
CI Pipeline / performance (pull_request) Has been cancelled
CI Pipeline / storybook (pull_request) Has been cancelled
CI Pipeline / lint (pull_request) Has been cancelled
CI Pipeline / build (pull_request) Has been cancelled
9150b8a502
an.di added 1 commit 2025-09-12 22:55:19 +00:00
Update ci.yaml
CI Pipeline / test (20) (pull_request) Failing after 5m47s
CI Pipeline / test (18) (pull_request) Failing after 5m59s
CI Pipeline / e2e (chromium) (pull_request) Successful in 2m39s
CI Pipeline / e2e (firefox) (pull_request) Successful in 5m30s
CI Pipeline / e2e (webkit) (pull_request) Successful in 3m11s
CI Pipeline / performance (pull_request) Failing after 2m47s
CI Pipeline / visual-regression (pull_request) Successful in 3m22s
CI Pipeline / lint (pull_request) Failing after 1m15s
CI Pipeline / storybook (pull_request) Successful in 1m39s
CI Pipeline / build (pull_request) Successful in 1m26s
54cddb5041
an.di added 2 commits 2025-09-12 23:36:41 +00:00
Run linter and prettier
CI Pipeline / test (20) (pull_request) Successful in 2m33s
CI Pipeline / test (18) (pull_request) Successful in 2m45s
CI Pipeline / e2e (chromium) (pull_request) Successful in 2m33s
CI Pipeline / e2e (firefox) (pull_request) Successful in 2m42s
CI Pipeline / e2e (webkit) (pull_request) Successful in 3m3s
CI Pipeline / visual-regression (pull_request) Failing after 5m7s
CI Pipeline / performance (pull_request) Successful in 3m8s
CI Pipeline / lint (pull_request) Successful in 1m11s
CI Pipeline / storybook (pull_request) Successful in 2m1s
CI Pipeline / build (pull_request) Successful in 1m25s
26de297ac5
an.di added 3 commits 2025-09-13 22:34:13 +00:00
Lint and prettier
CI Pipeline / test (20) (pull_request) Failing after 1m51s
CI Pipeline / test (18) (pull_request) Failing after 2m6s
CI Pipeline / e2e (chromium) (pull_request) Successful in 3m30s
CI Pipeline / e2e (firefox) (pull_request) Successful in 4m50s
CI Pipeline / e2e (webkit) (pull_request) Successful in 4m17s
CI Pipeline / performance (pull_request) Successful in 2m48s
CI Pipeline / visual-regression (pull_request) Failing after 6m15s
CI Pipeline / storybook (pull_request) Failing after 1m40s
CI Pipeline / lint (pull_request) Successful in 1m12s
CI Pipeline / build (pull_request) Successful in 1m26s
a867fc45d6
an.di added 1 commit 2025-09-13 23:34:29 +00:00
Fix failing tests
CI Pipeline / test (20) (pull_request) Successful in 2m28s
CI Pipeline / test (18) (pull_request) Successful in 2m36s
CI Pipeline / e2e (chromium) (pull_request) Successful in 3m41s
CI Pipeline / e2e (firefox) (pull_request) Successful in 3m55s
CI Pipeline / e2e (webkit) (pull_request) Successful in 4m10s
CI Pipeline / visual-regression (pull_request) Failing after 4m25s
CI Pipeline / storybook (pull_request) Successful in 1m33s
CI Pipeline / performance (pull_request) Successful in 2m31s
CI Pipeline / lint (pull_request) Successful in 1m2s
CI Pipeline / build (pull_request) Successful in 1m28s
e6f29a2d97
an.di added 2 commits 2025-09-14 02:47:42 +00:00
Run Prettier
CI Pipeline / test (18) (pull_request) Successful in 2m50s
CI Pipeline / test (20) (pull_request) Successful in 2m48s
CI Pipeline / e2e (chromium) (pull_request) Successful in 3m42s
CI Pipeline / e2e (firefox) (pull_request) Successful in 4m3s
CI Pipeline / e2e (webkit) (pull_request) Successful in 4m20s
CI Pipeline / visual-regression (pull_request) Failing after 4m43s
CI Pipeline / storybook (pull_request) Failing after 1m37s
CI Pipeline / performance (pull_request) Successful in 2m41s
CI Pipeline / lint (pull_request) Successful in 1m19s
CI Pipeline / build (pull_request) Successful in 1m40s
29c4e6e4bd
an.di added 1 commit 2025-09-14 03:44:29 +00:00
Fix storybook test
CI Pipeline / test (20) (pull_request) Failing after 2m19s
CI Pipeline / test (18) (pull_request) Failing after 2m35s
CI Pipeline / e2e (chromium) (pull_request) Successful in 3m44s
CI Pipeline / e2e (firefox) (pull_request) Successful in 3m49s
CI Pipeline / performance (pull_request) Has been cancelled
CI Pipeline / storybook (pull_request) Has been cancelled
CI Pipeline / lint (pull_request) Has been cancelled
CI Pipeline / build (pull_request) Has been cancelled
CI Pipeline / e2e (webkit) (pull_request) Has been cancelled
CI Pipeline / visual-regression (pull_request) Has been cancelled
eb9a108d86
an.di added 1 commit 2025-09-14 03:53:00 +00:00
Update ContentLockup.integration.test.jsx
CI Pipeline / test (20) (pull_request) Successful in 2m22s
CI Pipeline / test (18) (pull_request) Successful in 2m33s
CI Pipeline / e2e (chromium) (pull_request) Successful in 3m36s
CI Pipeline / e2e (firefox) (pull_request) Successful in 4m39s
CI Pipeline / e2e (webkit) (pull_request) Successful in 3m57s
CI Pipeline / visual-regression (pull_request) Failing after 4m41s
CI Pipeline / performance (pull_request) Successful in 2m30s
CI Pipeline / storybook (pull_request) Successful in 1m22s
CI Pipeline / lint (pull_request) Failing after 1m0s
CI Pipeline / build (pull_request) Successful in 1m16s
337a35d367
an.di added 1 commit 2025-09-14 05:27:01 +00:00
Fix failing tests and lint
CI Pipeline / test (20) (pull_request) Successful in 5m31s
CI Pipeline / test (18) (pull_request) Successful in 5m49s
CI Pipeline / e2e (chromium) (pull_request) Successful in 3m6s
CI Pipeline / e2e (firefox) (pull_request) Successful in 4m15s
CI Pipeline / e2e (webkit) (pull_request) Successful in 3m33s
CI Pipeline / performance (pull_request) Successful in 2m32s
CI Pipeline / visual-regression (pull_request) Failing after 5m43s
CI Pipeline / storybook (pull_request) Successful in 1m21s
CI Pipeline / lint (pull_request) Successful in 1m6s
CI Pipeline / build (pull_request) Successful in 1m20s
df418328c6
an.di added 1 commit 2025-09-14 18:45:05 +00:00
Update CI memory allocation
CI Pipeline / test (20) (pull_request) Failing after 12m6s
CI Pipeline / test (18) (pull_request) Failing after 12m23s
CI Pipeline / performance (pull_request) Has been cancelled
CI Pipeline / storybook (pull_request) Has been cancelled
CI Pipeline / e2e (firefox) (pull_request) Has been cancelled
CI Pipeline / lint (pull_request) Has been cancelled
CI Pipeline / build (pull_request) Has been cancelled
CI Pipeline / e2e (webkit) (pull_request) Has been cancelled
CI Pipeline / e2e (chromium) (pull_request) Successful in 5m49s
CI Pipeline / visual-regression (pull_request) Successful in 4m53s
abd4a7f0f8
an.di added 1 commit 2025-09-14 19:19:57 +00:00
Update timeouts
CI Pipeline / test (20) (pull_request) Failing after 1m2s
CI Pipeline / test (18) (pull_request) Failing after 1m12s
CI Pipeline / e2e (webkit) (pull_request) Has been cancelled
CI Pipeline / visual-regression (pull_request) Has been cancelled
CI Pipeline / performance (pull_request) Has been cancelled
CI Pipeline / storybook (pull_request) Has been cancelled
CI Pipeline / lint (pull_request) Has been cancelled
CI Pipeline / build (pull_request) Has been cancelled
CI Pipeline / e2e (firefox) (pull_request) Has been cancelled
CI Pipeline / e2e (chromium) (pull_request) Has been cancelled
c030187bc8
an.di added 1 commit 2025-09-14 19:22:52 +00:00
Update ci.yaml
CI Pipeline / test (18) (pull_request) Failing after 5m45s
CI Pipeline / test (20) (pull_request) Successful in 6m1s
CI Pipeline / e2e (webkit) (pull_request) Has been cancelled
CI Pipeline / visual-regression (pull_request) Has been cancelled
CI Pipeline / performance (pull_request) Has been cancelled
CI Pipeline / storybook (pull_request) Has been cancelled
CI Pipeline / lint (pull_request) Has been cancelled
CI Pipeline / build (pull_request) Has been cancelled
CI Pipeline / e2e (firefox) (pull_request) Has been cancelled
CI Pipeline / e2e (chromium) (pull_request) Has been cancelled
bfa04ad096
an.di added 1 commit 2025-09-14 19:30:35 +00:00
Fix timeout communication issues
CI Pipeline / test (18) (pull_request) Failing after 5m35s
CI Pipeline / test (20) (pull_request) Successful in 5m58s
CI Pipeline / e2e (chromium) (pull_request) Successful in 2m52s
CI Pipeline / visual-regression (pull_request) Has been cancelled
CI Pipeline / performance (pull_request) Has been cancelled
CI Pipeline / storybook (pull_request) Has been cancelled
CI Pipeline / lint (pull_request) Has been cancelled
CI Pipeline / build (pull_request) Has been cancelled
CI Pipeline / e2e (webkit) (pull_request) Has been cancelled
CI Pipeline / e2e (firefox) (pull_request) Has been cancelled
c6c4425846
an.di added 1 commit 2025-09-14 19:47:09 +00:00
Batch tests
CI Pipeline / test (20) (pull_request) Failing after 1m30s
CI Pipeline / test (18) (pull_request) Failing after 1m36s
CI Pipeline / e2e (webkit) (pull_request) Has been cancelled
CI Pipeline / visual-regression (pull_request) Has been cancelled
CI Pipeline / performance (pull_request) Has been cancelled
CI Pipeline / storybook (pull_request) Has been cancelled
CI Pipeline / lint (pull_request) Has been cancelled
CI Pipeline / build (pull_request) Has been cancelled
CI Pipeline / e2e (chromium) (pull_request) Has been cancelled
CI Pipeline / e2e (firefox) (pull_request) Has been cancelled
9ca35b8c02
an.di added 1 commit 2025-09-14 19:55:06 +00:00
Try splitting up unit and integration tests
CI Pipeline / test (20) (pull_request) Successful in 2m51s
CI Pipeline / test (18) (pull_request) Successful in 3m9s
CI Pipeline / e2e (chromium) (pull_request) Successful in 3m6s
CI Pipeline / e2e (firefox) (pull_request) Successful in 4m13s
CI Pipeline / e2e (webkit) (pull_request) Successful in 3m35s
CI Pipeline / performance (pull_request) Successful in 2m37s
CI Pipeline / storybook (pull_request) Successful in 1m24s
CI Pipeline / lint (pull_request) Successful in 1m9s
CI Pipeline / build (pull_request) Successful in 1m22s
CI Pipeline / visual-regression (pull_request) Successful in 3m51s
2550eaa9b9
an.di added 1 commit 2025-09-14 20:18:54 +00:00
Attempt to fix visual regression test fail on first run
CI Pipeline / test (20) (pull_request) Successful in 2m52s
CI Pipeline / test (18) (pull_request) Successful in 3m20s
CI Pipeline / e2e (chromium) (pull_request) Successful in 2m48s
CI Pipeline / e2e (firefox) (pull_request) Successful in 4m20s
CI Pipeline / e2e (webkit) (pull_request) Successful in 3m36s
CI Pipeline / performance (pull_request) Successful in 2m35s
CI Pipeline / storybook (pull_request) Successful in 1m24s
CI Pipeline / visual-regression (pull_request) Failing after 6m17s
CI Pipeline / lint (pull_request) Successful in 56s
CI Pipeline / build (pull_request) Successful in 1m19s
0e4188a390
an.di added 1 commit 2025-09-14 20:44:38 +00:00
Update ci.yaml
CI Pipeline / test (20) (pull_request) Successful in 3m10s
CI Pipeline / test (18) (pull_request) Successful in 3m36s
CI Pipeline / e2e (chromium) (pull_request) Successful in 2m45s
CI Pipeline / e2e (firefox) (pull_request) Successful in 3m8s
CI Pipeline / visual-regression (pull_request) Failing after 2m3s
CI Pipeline / e2e (webkit) (pull_request) Successful in 4m54s
CI Pipeline / performance (pull_request) Successful in 2m28s
CI Pipeline / storybook (pull_request) Successful in 1m21s
CI Pipeline / lint (pull_request) Successful in 1m1s
CI Pipeline / build (pull_request) Successful in 1m18s
a878fdf72f
an.di added 1 commit 2025-09-14 21:10:11 +00:00
Update ci.yaml
CI Pipeline / test (20) (pull_request) Successful in 2m52s
CI Pipeline / test (18) (pull_request) Successful in 3m14s
CI Pipeline / e2e (chromium) (pull_request) Successful in 3m3s
CI Pipeline / e2e (firefox) (pull_request) Successful in 5m32s
CI Pipeline / e2e (webkit) (pull_request) Successful in 3m35s
CI Pipeline / performance (pull_request) Successful in 2m29s
CI Pipeline / storybook (pull_request) Successful in 1m35s
CI Pipeline / lint (pull_request) Successful in 1m14s
CI Pipeline / visual-regression (pull_request) Successful in 6m6s
CI Pipeline / build (pull_request) Successful in 1m33s
ef5467b6c7
an.di merged commit 4b3a28f6b8 into main 2025-09-18 15:44:46 +00:00
an.di deleted branch adilallo/feature/Blog 2025-09-18 15:46:10 +00:00
an.di self-assigned this 2026-01-27 23:26:49 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: CommunityRule/community-rule#19