-
Notifications
You must be signed in to change notification settings - Fork 37
Open
Feature
5 / 65 of 6 issues completed
Copy link
Labels
enhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is needed
Description
Overview
Hackers' Pub is currently transitioning from a Fresh + Preact stack (web/) to a modern SolidStart + Solid.js + GraphQL + Relay stack (web-next/). While basic pages like profiles and some settings have been implemented in web-next, the majority of functionality still resides in the legacy web implementation.
This EPIC tracks the complete migration of all pages and functionality from web/ to web-next/ while maintaining URL compatibility and feature parity.
Goals
- Migrate all existing pages from Fresh to SolidStart
- Maintain complete URL compatibility
- Achieve feature parity with the legacy implementation
- Implement proper GraphQL + Relay integration for all data fetching
- Maintain internationalization support using Lingui
- Ensure all functionality works seamlessly in the new stack
Migration Status
β Already Implemented
- User profiles (
/@username) - Profile sub-pages (articles, notes, shares, followers)
- Basic settings pages
- Authentication (sign in/up)
- Home page
- Static pages (CoC, markdown guide)
- Notifications page
π In Progress
- Following page (
/@username/following)
β Needs Migration
Core Content Pages
- Post/Article Detail Pages
/@username/[idOrYear]/[slug]/indexβ Post detail view/@username/[idOrYear]/[slug]/editβ Post editing/@username/[idOrYear]/[slug]/reactionsβ Post reactions/@username/[idOrYear]/[slug]/sharesβ Post shares/@username/[idOrYear]/[slug]/quotesβ Post quotes/@username/[idOrYear]/indexβ Year/ID based post listing
Draft Management
- Draft System
/@username/draftsβ Draft listing/@username/drafts/[draftId]β Draft detail/edit- Draft creation and publishing workflow
Social Features
- User Interactions
- Follow/Unfollow functionality
- Block/Unblock functionality
- Post reactions (like, dislike, etc.)
- Post sharing and unsharing
- Quote posts functionality
Search & Discovery
- Search System
/searchβ Global search page/tags/[tag]β Tag-based content discovery: web-next: Implement/tags/[tag]Β #140- Search functionality integration
Administrative
- Admin Panel
/adminβ Admin dashboard/admin/invitationsβ Invitation management
Settings (Extended)
- Advanced Settings
/@username/settings/inviteβ Invite management: web-next: Invitations in the settingsΒ #145/@username/settings/languageβ Language preferences/@username/settings/passkeysβ Passkey authentication: web-next: migrate passkey featureΒ #141- Passkey management interface
- Passkey creation/verification
- Passkey revocation
Invitation System
- Invite Management
/@username/inviteβ Invite generation/@username/invite/[id]β Specific invite management- Invite deletion functionality
Open Graph Images
- OG Image Generation
/@username/ogβ User profile OG images- User avatar integration
- Bio text rendering with markup support
- Multi-language text support
/@username/[idOrYear]/[slug]/ogimageβ Article/Post OG images- Article title and content preview
- Author information display
- Multi-language content support
- Language-specific OG images (
?l=langparameter)
- OG Image Infrastructure
- Satori HTML-to-SVG conversion
- Resvg SVG-to-PNG rendering
- Multi-language font loading (Noto Sans family)
- Content-based caching with SHA-256 hashing
- Drive/storage integration for image persistence
- GraphQL integration for OG image URLs
GraphQL Integration
- REST API β GraphQL Migration
- Post/Article Data: Replace
/api/posts/*endpoints with GraphQL queries/mutations- Post lookup by IRI (ActivityPub integration)
- Post media handling
- Poll/voting system
- Article content retrieval
- User Interactions: Replace
/api/mentionwith GraphQL- User mention autocomplete/typeahead
- Actor search functionality
- Content Processing: Replace
/api/previewwith GraphQL- Markup preview rendering
- Real-time content processing
- Post/Article Data: Replace
Backend Services (Non-GraphQL)
- RSS/Atom Feeds
/@username/feed.xmlβ User RSS feeds/@username/feed.xml?articlesβ Article-only feeds- Feed generation with proper caching
- SEO Services
/robots.txtβ Search engine crawler rules/sitemaps.xmlβ Automatic sitemap generation- SEO metadata optimization
Specialized Pages
- Community Features
- Invitation Tree (
/tree)- Display hierarchical invitation relationships
- Show user avatars, names, and usernames in tree structure
- Include invitation count for each user
- Support privacy setting to hide from invitation tree
- Implement tree visualization with proper CSS styling
- Handle users who opted out of the tree display
- Sort users chronologically by account creation
- GraphQL schema for invitation relationships
- Mutation for toggling
hideFromInvitationTreesetting
- Multi-language post support (
/@username/[idOrYear]/[slug]/[lang])
- Invitation Tree (
Technical Requirements
GraphQL Schema
- Define comprehensive GraphQL schema for all entities
- Implement Relay-compatible pagination
- Add proper authentication/authorization
- Support for real-time updates where applicable
Data Migration
- Ensure all existing data remains accessible
- Maintain backward compatibility for URLs
- Preserve SEO rankings and external links
Performance & UX
- Implement proper loading states
- Add error boundaries and error handling
- Ensure mobile responsiveness
- Maintain or improve page load performance
Testing
- Unit tests for all new components
- Integration tests for critical user flows
- E2E tests for complete user journeys
- Accessibility testing compliance
Success Criteria
- Functional Parity: All features available in
web/are replicated inweb-next/ - URL Compatibility: All existing URLs continue to work without redirects
- Performance: Page load times are equal to or better than legacy implementation
- Accessibility: Maintains or improves accessibility standards
- SEO: No degradation in search engine rankings
- User Experience: Seamless transition for existing users
Timeline
This migration should be completed in phases, with each major feature area tackled as a separate milestone. Priority should be given to:
- Phase 1: Core content pages (posts, articles)
- Phase 2: Social features and interactions
- Phase 3: Administrative and advanced features
- Phase 4: GraphQL integration and backend services
- Phase 5: SEO, feeds, and optimization
Definition of Done
- All URLs from legacy
web/implementation work inweb-next/ - Feature parity achieved across all pages
- GraphQL schema supports all data requirements
- Internationalization works for all migrated pages
- Performance benchmarks meet or exceed legacy implementation
- All tests pass (unit, integration, E2E)
- Documentation updated for new stack
- Legacy
web/directory can be safely removed
Reactions are currently unavailable
Sub-issues
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is needed