Movies4u.vip Official Site ⚡
– All site visitors (guest users) and registered members (free or premium).
-- Recommendation feedback CREATE TABLE rec_feedback ( user_id BIGINT, title_id BIGINT, feedback ENUM('like','dislike','not_interested') NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (user_id, title_id) ); Guest lists are stored client‑side; on login, the front‑end merges the local list into user_watch_later (deduping by title_id ). | Method | Endpoint | Auth | Description | |--------|----------|------|-------------| | POST | /api/watchlater | JWT (optional) | Body titleId → add. If no token → store in cookie/localStorage. | | DELETE | /api/watchlater/:titleId | JWT (optional) | Remove entry. | | GET | /api/watchlater | JWT (optional) | Return list (merged server + client for guests). | | GET | /api/recommendations?limit=10 | JWT (optional) | Return personalized titles. | | POST | /api/rec/feedback | JWT | Body titleId, feedback – record user reaction. | | POST | /api/notifications/subscribe | JWT | Register Web Push subscription. | | GET | /admin/analytics/watchlater | Admin token | JSON stats. | movies4u.vip official site
-- Watch‑Later list CREATE TABLE user_watch_later ( user_id BIGINT REFERENCES users(id) ON DELETE CASCADE, title_id BIGINT REFERENCES titles(id) ON DELETE CASCADE, added_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (user_id, title_id) ); – All site visitors (guest users) and registered
-- Titles (movies/TV) CREATE TABLE titles ( id BIGINT PRIMARY KEY, title VARCHAR(255) NOT NULL, year INT, runtime_min INT, genre VARCHAR(100), director VARCHAR(255), rating DECIMAL(2,1), license_expires DATE, ... ); If no token → store in cookie/localStorage
Feature Draft – “Smart “Watch‑Later” & Personalized Recommendation Engine” for movies4u.vip Official Site Feature Name – Watch‑Later + Smart Recommendations
All responses follow the standard status, data, error envelope. | # | Criterion | Test Method | |---|-----------|-------------| | AC‑1 | Guest can add a title to Watch‑Later and see it on the mini‑dropdown. | Manual UI test on Chrome/Firefox; verify localStorage entry. | | AC‑2 | After login, any guest‑saved titles appear in the server‑side list without duplication. | Automated Selenium + API verification. | | AC‑3 | Premium user can export Watch‑Later to Google Calendar; the generated event contains title name, runtime, and streaming link. | End‑to‑end test with OAuth flow. | | AC‑4 | Recommendation carousel shows at least 5 items and each card has a “Why?” tooltip that matches the algorithm’s top‑2 contributing factors. | Unit test on recommendation service + UI snapshot. | | AC‑5 | Push notification is sent when a title in the Watch‑Later list becomes available in 4K, and the user receives it on desktop & mobile. | Integration test with Firebase test device. | | AC‑6 | Admin dashboard reflects the correct count of Watch‑Later adds for the past 24 h (±2%). | Compare DB aggregate vs. UI chart. | | AC‑7 | System handles 10 k concurrent Watch‑Later adds with < 100 ms latency (load test). | JMeter/K6 load test. | | AC‑8 | GDPR deletion request removes all Watch‑Later entries for that user within 24 h. | Manual request + DB audit. | 9. Technical Stack & Implementation Plan | Layer | Technology | Reason | |------|-------------|--------| | Front‑end | React 18 + TypeScript, Redux Toolkit (state for Watch‑Later), Styled‑Components, Service Workers for Push | Modern, component‑based, easy to share state across pages. | | Back‑end API | Node.js (Express) + TypeScript, PostgreSQL, Redis (cache) | High concurrency, easy JSON handling, strong ecosystem for ML micro‑services. | | Recommendation Service | Python (FastAPI) + Scikit‑Learn /
