More vibin
This commit is contained in:
parent
1901daf5ce
commit
c1729a629d
47 changed files with 5754 additions and 41 deletions
172
CLAUDE.md
172
CLAUDE.md
|
|
@ -561,50 +561,158 @@ For ActivityPub federated posts and thumbnails:
|
|||
- [x] Account identifier parsing (acct:user@domain)
|
||||
- [x] Tested with valid and invalid requests
|
||||
|
||||
**ActivityPub Collections**
|
||||
- [ ] GET /users/{username}/inbox - Inbox endpoint
|
||||
- [ ] GET /users/{username}/outbox - Outbox endpoint
|
||||
- [ ] GET /users/{username}/followers - Followers collection
|
||||
- [ ] GET /users/{username}/following - Following collection
|
||||
- [ ] OrderedCollection model classes
|
||||
- [ ] Collection pagination support
|
||||
**ActivityPub Collections** ✅
|
||||
- [x] POST /users/{username}/inbox - Inbox endpoint (accepts activities with 202 Accepted)
|
||||
- [x] GET /users/{username}/outbox - Outbox endpoint (returns empty OrderedCollection)
|
||||
- [x] GET /users/{username}/followers - Followers collection (returns empty OrderedCollection)
|
||||
- [x] GET /users/{username}/following - Following collection (returns empty OrderedCollection)
|
||||
- [x] OrderedCollection model classes
|
||||
- [x] Basic collection structure (TODOs exist for populating with actual data)
|
||||
- [x] All endpoints tested and working
|
||||
|
||||
**Basic Federation**
|
||||
- [ ] Federation service for outbound activities
|
||||
- [ ] HTTP signature signing for outbound requests
|
||||
- [ ] HTTP signature verification for inbound requests
|
||||
- [ ] Create activity - Post new workout
|
||||
- [ ] Follow activity - Remote user follows local user
|
||||
- [ ] Accept activity - Accept follow requests
|
||||
- [ ] Follow entity and repository
|
||||
- [ ] Remote actor entity and repository
|
||||
- [ ] Inbox processor for incoming activities
|
||||
**Basic Federation** ✅
|
||||
- [x] Federation service for outbound activities (FederationService.java)
|
||||
- [x] HTTP signature signing for outbound requests (signRequest method in HttpSignatureValidator)
|
||||
- [x] HTTP signature verification for inbound requests (validate method already existed)
|
||||
- [x] Follow activity - Remote user follows local user (InboxProcessor)
|
||||
- [x] Accept activity - Accept follow requests (FederationService.sendAcceptActivity)
|
||||
- [x] Undo activity - Unfollow support (InboxProcessor)
|
||||
- [x] Follow entity and repository (Follow.java, FollowRepository.java)
|
||||
- [x] Remote actor entity and repository (RemoteActor.java, RemoteActorRepository.java)
|
||||
- [x] Inbox processor for incoming activities (InboxProcessor.java)
|
||||
- [x] Remote actor fetching and caching
|
||||
- [x] Follower inbox collection for activity distribution
|
||||
|
||||
**Public Timeline**
|
||||
- [ ] Timeline service
|
||||
- [ ] GET /api/timeline - Federated timeline
|
||||
- [ ] Merge local and remote activities
|
||||
- [ ] Timeline filtering and pagination
|
||||
- [ ] Activity visibility enforcement
|
||||
**Public Timeline** ✅
|
||||
- [x] Timeline service (TimelineService.java)
|
||||
- [x] Timeline DTOs for response (TimelineActivityDTO.java with ActivityMetricsSummary)
|
||||
- [x] GET /api/timeline/federated - Federated timeline for authenticated user
|
||||
- [x] GET /api/timeline/public - Public timeline (all public activities)
|
||||
- [x] GET /api/timeline/user - User's own timeline
|
||||
- [x] Timeline filtering and pagination (Spring Data Pageable)
|
||||
- [x] Activity visibility enforcement (PUBLIC, FOLLOWERS)
|
||||
- [x] Repository methods for timeline queries (findByUserIdInAndVisibilityInOrderByStartedAtDesc, findByVisibilityOrderByStartedAtDesc)
|
||||
|
||||
**Database Migrations**
|
||||
- [ ] Flyway setup
|
||||
- [ ] Initial schema migration (users table)
|
||||
- [ ] Activities table migration
|
||||
- [ ] Activity metrics table migration
|
||||
- [ ] Follows table migration
|
||||
- [ ] Remote actors table migration
|
||||
- [ ] Indexes for performance (user lookups, activity queries)
|
||||
- [ ] PostGIS spatial indexes
|
||||
**Database Migrations** ✅
|
||||
- [x] Flyway setup and configuration
|
||||
- [x] V1: Enable PostGIS extension
|
||||
- [x] V2: Users table with indexes (username, email, created_at)
|
||||
- [x] V3: Activities table with geospatial support (GIST index on simplified_track, GIN index on track_points_json)
|
||||
- [x] V4: Activity metrics table with one-to-one relationship
|
||||
- [x] V5: Follows table for federation (follower_id, following_actor_uri, status)
|
||||
- [x] V6: Remote actors table for ActivityPub federation cache
|
||||
- [x] All indexes for performance (user lookups, activity queries, spatial queries)
|
||||
- [x] Changed Hibernate ddl-auto from 'update' to 'validate'
|
||||
|
||||
**Frontend Infrastructure** ✅
|
||||
- [x] Choose frontend approach (Thymeleaf + HTMX for server-side rendering with dynamic interactions)
|
||||
- [x] Static asset structure (css/, js/, img/ directories)
|
||||
- [x] HTMX dependency setup (via CDN in layout.html)
|
||||
- [x] Leaflet.js dependency setup (via CDN in layout.html)
|
||||
- [x] Chart.js dependency setup (via CDN in layout.html)
|
||||
- [x] CSS framework setup (Bootstrap 5.3.2 via CDN + Bootstrap Icons)
|
||||
- [x] Base Thymeleaf layout template with navigation (layout.html)
|
||||
- [x] Responsive mobile design foundation (Bootstrap grid + custom CSS)
|
||||
- [x] Custom CSS with FitPub theme (fitpub.css)
|
||||
- [x] Custom JavaScript utilities (fitpub.js with map/chart helpers)
|
||||
- [x] Thymeleaf dependencies added to pom.xml
|
||||
- [x] Home page template (index.html)
|
||||
- [x] Home controller for routing
|
||||
|
||||
**Authentication UI** ✅
|
||||
- [x] User registration page/form (auth/register.html)
|
||||
- [x] Login page/form (auth/login.html)
|
||||
- [x] JWT token storage (localStorage in auth.js)
|
||||
- [x] Authentication state management (FitPubAuth object in auth.js)
|
||||
- [x] Protected route handling (SecurityConfig.java + client-side checks)
|
||||
- [x] Logout functionality (client-side token removal + server endpoint)
|
||||
- [x] Session expiration handling (JWT expiration check + warning)
|
||||
- [x] Login/registration error display (alert components in forms)
|
||||
- [x] Authentication view controller (AuthViewController.java)
|
||||
- [x] Dynamic navigation menu (shows/hides based on auth status)
|
||||
- [x] Form validation with Bootstrap
|
||||
- [x] Loading states for submit buttons
|
||||
- [x] Password confirmation validation
|
||||
- [x] Authenticated API fetch helper (authenticatedFetch in auth.js)
|
||||
|
||||
**Activity Upload & Management UI** ✅
|
||||
- [x] FIT file upload form with drag-and-drop
|
||||
- [x] Upload progress indicator
|
||||
- [x] Activity metadata form (title, description, visibility)
|
||||
- [x] Activity list view (user's own activities)
|
||||
- [x] Activity pagination controls
|
||||
- [x] Activity delete confirmation dialog
|
||||
- [x] Activity edit form
|
||||
- [x] File upload validation and error messages
|
||||
|
||||
**Map Rendering & Visualization** ✅
|
||||
- [x] Leaflet.js map initialization
|
||||
- [x] OpenStreetMap tile layer integration
|
||||
- [x] GeoJSON track rendering on map
|
||||
- [x] Start/finish markers (green/red)
|
||||
- [x] Map bounds auto-fitting to track
|
||||
- [x] Track click handler for point-in-time metrics
|
||||
- [x] Map loading states and error handling
|
||||
- [x] Responsive map sizing
|
||||
|
||||
**Activity Detail Page**
|
||||
- [ ] Activity metadata display (title, description, date, type)
|
||||
- [ ] Interactive map with GPS track
|
||||
- [ ] Activity metrics display (distance, duration, pace, elevation)
|
||||
- [ ] Elevation profile chart (Chart.js)
|
||||
- [ ] Heart rate chart (if available)
|
||||
- [ ] Speed/pace chart
|
||||
- [ ] Activity statistics summary cards
|
||||
- [ ] Visibility indicator (Public/Followers/Private)
|
||||
|
||||
**Timeline & Social Features UI**
|
||||
- [ ] Public timeline page
|
||||
- [ ] Federated timeline page (following feed)
|
||||
- [ ] User timeline page (own activities)
|
||||
- [ ] Timeline activity cards with preview maps
|
||||
- [ ] Activity card metrics summary
|
||||
- [ ] Pagination for timeline
|
||||
- [ ] Empty state messages
|
||||
- [ ] Loading states for timelines
|
||||
|
||||
**User Profile UI**
|
||||
- [ ] Public user profile page
|
||||
- [ ] User profile display (avatar, bio, display name)
|
||||
- [ ] User's activity list on profile
|
||||
- [ ] Follower/following counts
|
||||
- [ ] Profile edit page
|
||||
- [ ] Avatar upload (optional for MVP)
|
||||
- [ ] Profile settings form
|
||||
|
||||
**Navigation & Layout**
|
||||
- [ ] Top navigation bar with logo
|
||||
- [ ] Navigation links (Timeline, My Activities, Upload, Profile)
|
||||
- [ ] User menu dropdown (Profile, Settings, Logout)
|
||||
- [ ] Breadcrumb navigation
|
||||
- [ ] Footer with app info
|
||||
- [ ] Mobile hamburger menu
|
||||
- [ ] Active route highlighting
|
||||
|
||||
**Error Handling & User Feedback**
|
||||
- [ ] Global error boundary/handler
|
||||
- [ ] API error message display
|
||||
- [ ] Success notifications/toasts
|
||||
- [ ] Form validation error display
|
||||
- [ ] 404 Not Found page
|
||||
- [ ] 403 Forbidden page
|
||||
- [ ] Loading spinners/skeletons
|
||||
- [ ] Empty state illustrations
|
||||
|
||||
**Testing & Documentation**
|
||||
- [ ] Integration tests for REST endpoints
|
||||
- [ ] Integration tests for ActivityPub federation
|
||||
- [ ] Integration tests for WebFinger
|
||||
- [ ] Frontend E2E tests (optional: Playwright/Cypress)
|
||||
- [ ] README with setup instructions
|
||||
- [ ] API documentation (Swagger/OpenAPI)
|
||||
- [ ] Database setup guide
|
||||
- [ ] Deployment instructions
|
||||
- [ ] Frontend development guide
|
||||
|
||||
### Phase 2: Social Features
|
||||
- [ ] Likes and comments
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue