Commit Graph

38 Commits

Author SHA1 Message Date
53df90ab1f feat: MovieDto enrichment, movie detail page, PWA, watchlist, watchlist federation 2026-05-13 00:23:45 +02:00
c6770659c5 feat: extensible search engine with person entities (FTS5/tsvector) 2026-05-12 18:47:06 +02:00
4269eca582 feat: implement movie listing functionality with pagination and search 2026-05-12 13:57:55 +02:00
38d13fbff1 feat: implement TMDb enrichment for movie profiles
- Add SqliteMovieProfileRepository for managing movie profiles in SQLite.
- Create TmdbEnrichmentClient to fetch movie details from TMDb API.
- Implement enrichment event handling with EnrichmentHandler.
- Introduce periodic jobs for cleaning up expired import sessions and checking for stale movie profiles.
- Update application context to include movie profile repository.
- Add API endpoint to retrieve movie profiles.
- Extend domain models with new structures for movie enrichment (Genre, Keyword, CastMember, CrewMember, MovieProfile).
- Modify event system to include MovieEnrichmentRequested event.
- Enhance tests to cover new functionality and ensure stability.
2026-05-12 13:23:41 +02:00
c696a3b780 feat: add endpoint to retrieve user by username 2026-05-12 12:02:30 +02:00
5c918accbc feat: add GET /health endpoint for Docker/k8s liveness probes 2026-05-12 02:05:37 +02:00
f0620f5aa1 feat: discoverability (NodeInfo, hashtags) and moderation (domain/actor blocking)
- NodeInfo at /.well-known/nodeinfo + /nodeinfo/2.0
- Hashtags #MoviesDiary + #MovieTitle on review posts; /tags/{tag} redirect
- Domain blocking: blocked_domains table, admin API + HTML, inbox enforcement
- Per-actor blocking: blocked_actors table, user API + HTML, BlockActivity send/receive
- Delivery filter excludes blocked actors and blocked-domain inboxes
2026-05-12 01:05:46 +02:00
80f620c840 feat: image storage generalization, user profile, and federation polish
- Replace PosterStorage with generic ImageStorage port (IMAGE_STORAGE_BACKEND/PATH env vars)
- Rename poster-storage crate to image-storage; serve at /images/{*key}
- Add bio and avatar_path to User model (migration 0009_user_profile)
- update_profile use case with avatar upload, mime validation, old avatar cleanup
- GET/PUT /api/v1/profile and GET/POST /settings/profile HTML page
- Enrich AP Person actor with summary, icon, url, discoverable fields
- Store remote actor avatar_url (migration 0010_ap_remote_actor_avatar)
- Shared inbox delivery via collect_inboxes deduplication
- Broadcast Update(Person) to followers on UserUpdated event
- Paginated outbox: OrderedCollection + OrderedCollectionPage with cursor
- Announce/boost tracking in ap_announces table (migration 0011_ap_announces)
2026-05-11 22:59:52 +02:00
8a254346f4 inbox rate limiting + poster storage cleanup 2026-05-11 01:07:21 +02:00
b2a2aa4262 movie detail page + importer architecture fix 2026-05-10 23:59:26 +02:00
f2f1317660 importer feature 2026-05-10 21:23:56 +02:00
ebf74a59fd feat: feature flags 2026-05-10 02:26:18 +02:00
9f894ebdf2 feat: feed ux improvements 2026-05-10 00:16:29 +02:00
a078d5315e feat: integrate axum-governor for rate limiting and update dependencies 2026-05-09 22:35:08 +02:00
d89d373a91 feat: implement CSRF protection across forms and routes 2026-05-09 22:09:19 +02:00
e8874f9220 feat: add activity feed and user profile endpoints with corresponding DTOs 2026-05-09 21:40:45 +02:00
fa501706cd feat: add documentation crate and integrate OpenAPI specifications
- Added a new crate `doc` for API documentation.
- Integrated `utoipa` for OpenAPI support in the presentation layer.
- Updated routes to include social features (follow, unfollow, etc.) and diary export.
- Enhanced API request and response structures with new DTOs for social interactions.
- Updated `Cargo.toml` files to include new dependencies and features.
- Modified Dockerfile to copy the new documentation crate.
- Refactored existing handlers and routes to accommodate new API endpoints.
- Updated tests to cover new functionality and ensure proper API behavior.
2026-05-09 21:29:20 +02:00
f66f8745c7 feat: add export diary functionality and update API routes 2026-05-09 20:59:30 +02:00
dcfc17f542 export feature 2026-05-09 20:51:29 +02:00
2120044f1a Refactor ActivityPub integration and add SQLite federation support
- Removed event-publisher dependency from Cargo.lock and Cargo.toml.
- Introduced sqlite-federation crate with necessary dependencies and implementation.
- Updated activitypub crate to use new ActivityPubPort trait for better abstraction.
- Refactored event handling to utilize domain ports instead of direct dependencies.
- Adjusted presentation layer to accommodate new ActivityPub service structure.
- Removed unused test setup for ActivityPub service in favor of NoopActivityPubService.
- Cleaned up SQLite adapter to remove unnecessary dependencies and streamline functionality.
2026-05-09 18:21:16 +02:00
69f6587623 federation improvements 2026-05-09 15:45:08 +02:00
470b29c9e1 federation refinement 2026-05-09 13:53:45 +02:00
df71748897 activity-pub implementation 2026-05-08 21:26:50 +02:00
afb012ffde feat(config): add rate limit configuration to AppConfig and update related usages 2026-05-08 10:11:19 +02:00
a49fbad26c fix: WAL mode + busy_timeout for SQLite, fix rate limiter TOCTOU race 2026-05-04 22:10:19 +02:00
5852af0b05 refactor: use constant for minimum password length and API rate limit 2026-05-04 21:41:07 +02:00
6cb3cf072a fix: security hardening — SameSite=Strict, Secure cookie flag, password min length, generic registration error, auth rate limiting 2026-05-04 21:38:23 +02:00
cdc15d733d feat: add GET /users/{id}/feed.rss per-user RSS feed handler 2026-05-04 20:58:20 +02:00
0b6ac2eb77 feat: wire activity feed, users list, and profile page handlers 2026-05-04 19:12:06 +02:00
6d71da9f1e fix(presentation): use {id} syntax in delete review route 2026-05-04 14:29:24 +02:00
977a8ed8fd feat(presentation): add POST /reviews/:id/delete handler and route 2026-05-04 14:27:43 +02:00
f74a36a16f feat(presentation): add DELETE /api/reviews/:id handler and route 2026-05-04 14:24:48 +02:00
6e50b64245 feat(database): remove unused SQL queries and update Cargo dependencies 2026-05-04 14:00:33 +02:00
8ee54817d7 feat(routes): replace /diary with /, add login/logout/register/reviews/new routes 2026-05-04 13:38:19 +02:00
992a1a2674 feat(rss): implement RSS feed adapter and integrate with application state 2026-05-04 12:03:17 +02:00
1f8b24fec2 feat(auth): implement JWT authentication and user registration
- Added JWT authentication with token generation and validation.
- Introduced user registration functionality with email and password.
- Integrated Argon2 for password hashing.
- Created SQLite user repository for user data persistence.
- Updated application context to include user repository and configuration settings.
- Added environment variable support for JWT secret and registration allowance.
- Enhanced error handling for unauthorized access and validation errors.
- Updated presentation layer to handle login and registration requests.
2026-05-04 10:43:07 +02:00
0d7a0cc712 presentation wiring 2026-05-04 09:30:20 +02:00
d2c8886bb0 feat(presentation): add initial structure with dtos, errors, extractors, handlers, and routes modules 2026-05-04 02:11:33 +02:00