chore: archive completed OpenSpec change homepage-recent-posts
- Moved homepage-recent-posts to archive with 2025-10-31 date - Created new spec at specs/homepage-recent-posts/ - All validation checks pass 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,89 @@
|
|||||||
|
# homepage-recent-posts Specification
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
TBD - created by archiving change homepage-recent-posts. Update Purpose after archive.
|
||||||
|
## Requirements
|
||||||
|
### Requirement: Display Recent Blog Posts on Homepage
|
||||||
|
The homepage MUST display the 3 most recent blog posts immediately after the user's description content section.
|
||||||
|
|
||||||
|
#### Scenario: Three most recent posts are displayed
|
||||||
|
**Given** the blog section contains 5 published posts
|
||||||
|
**When** a visitor accesses the homepage
|
||||||
|
**Then** exactly 3 most recent posts are displayed
|
||||||
|
**And** posts are ordered by publication date (newest first)
|
||||||
|
|
||||||
|
#### Scenario: Fewer than three posts exist
|
||||||
|
**Given** the blog section contains only 2 published posts
|
||||||
|
**When** a visitor accesses the homepage
|
||||||
|
**Then** all 2 posts are displayed
|
||||||
|
**And** no error or empty slots are shown
|
||||||
|
|
||||||
|
#### Scenario: No blog posts exist
|
||||||
|
**Given** the blog section contains no published posts
|
||||||
|
**When** a visitor accesses the homepage
|
||||||
|
**Then** the recent posts section is not displayed
|
||||||
|
**And** the homepage layout remains intact
|
||||||
|
|
||||||
|
### Requirement: Post Display Format
|
||||||
|
Each displayed blog post MUST show the post title as a clickable link and the publication date.
|
||||||
|
|
||||||
|
#### Scenario: Post title is clickable
|
||||||
|
**Given** a blog post is displayed on the homepage
|
||||||
|
**When** a visitor clicks the post title
|
||||||
|
**Then** they are navigated to the full blog post page
|
||||||
|
**And** the language context is preserved (German homepage → German post, English homepage → English post)
|
||||||
|
|
||||||
|
#### Scenario: Publication date is formatted correctly
|
||||||
|
**Given** a blog post with date "2025-10-30" is displayed
|
||||||
|
**When** viewing the German homepage
|
||||||
|
**Then** the date is formatted as "30. October 2025"
|
||||||
|
**When** viewing the English homepage
|
||||||
|
**Then** the date is formatted as "October 30, 2025"
|
||||||
|
|
||||||
|
### Requirement: Multilingual Support
|
||||||
|
The recent posts section MUST respect the site's multilingual configuration and display language-appropriate content.
|
||||||
|
|
||||||
|
#### Scenario: German homepage shows German posts
|
||||||
|
**Given** the visitor accesses the German homepage (/de/)
|
||||||
|
**When** the recent posts section is rendered
|
||||||
|
**Then** only German blog posts are displayed
|
||||||
|
**And** the section heading is in German (e.g., "Neueste Beiträge")
|
||||||
|
|
||||||
|
#### Scenario: English homepage shows English posts
|
||||||
|
**Given** the visitor accesses the English homepage (/en/)
|
||||||
|
**When** the recent posts section is rendered
|
||||||
|
**Then** only English blog posts are displayed
|
||||||
|
**And** the section heading is in English (e.g., "Recent Posts")
|
||||||
|
|
||||||
|
### Requirement: Visual Design and Layout
|
||||||
|
The recent posts section MUST maintain consistency with the existing site design and remain responsive.
|
||||||
|
|
||||||
|
#### Scenario: Section styling matches site design
|
||||||
|
**Given** the recent posts section is displayed
|
||||||
|
**Then** it uses Bootstrap classes consistent with the rest of the site
|
||||||
|
**And** spacing and typography match existing content sections
|
||||||
|
**And** the section is visually distinct from the description section above
|
||||||
|
|
||||||
|
#### Scenario: Responsive layout on mobile devices
|
||||||
|
**Given** the homepage is viewed on a mobile device (< 768px width)
|
||||||
|
**When** the recent posts section is displayed
|
||||||
|
**Then** the layout remains readable and properly formatted
|
||||||
|
**And** no horizontal scrolling is required
|
||||||
|
**And** links are easily tappable
|
||||||
|
|
||||||
|
### Requirement: Performance and Build
|
||||||
|
The implementation MUST not negatively impact Hugo build performance or site load times.
|
||||||
|
|
||||||
|
#### Scenario: Hugo build completes successfully
|
||||||
|
**Given** the homepage template includes recent posts query
|
||||||
|
**When** running `hugo build`
|
||||||
|
**Then** the build completes without errors or warnings
|
||||||
|
**And** the homepage HTML is generated correctly for both languages
|
||||||
|
|
||||||
|
#### Scenario: Site performance remains optimal
|
||||||
|
**Given** the homepage includes recent posts section
|
||||||
|
**When** measuring page load performance
|
||||||
|
**Then** Lighthouse performance score remains >90
|
||||||
|
**And** no additional HTTP requests are made
|
||||||
|
**And** HTML file size increase is minimal (< 2KB)
|
||||||
|
|
||||||
Reference in New Issue
Block a user