diff --git a/.gitignore b/.gitignore index b78d298..7fddb09 100644 --- a/.gitignore +++ b/.gitignore @@ -170,4 +170,7 @@ __pycache__/ *.pyc *.pyo *.pyd -.Python \ No newline at end of file +.Python + +# Temporary scripts +temp/ \ No newline at end of file diff --git a/README.md b/README.md index 73a3602..7075e8c 100644 --- a/README.md +++ b/README.md @@ -5,12 +5,14 @@ Little nodejs + mongodb app that I hack together with ChatGPT and Cursor to keep **Disclaimer:** This was a fun, experimental project built with “AI slop” (Cursor), so it may have security issues. For example, `python_video_server` uses the default token‑in‑URL approach to serve video files, which can leave user tokens in logs or browser history. There are ways to improve this, but at this point I’m blinder than Ray Charles. - + ## Features ### User Features - **User accounts**: register, login, JWT authentication +- **Dark mode**: follows system preference by default, with a user toggle (persisted per user) +- **Mobile-friendly UI**: improved responsive navbar + controls for small screens - **Optional registration verification**: via `DOG_NAMES` environment variable (if unset, verification is skipped) - **Multi-year support**: browse movies and stats by Oscar year (admin controls the active year) - **Checklist + progress**: mark movies as watched (with date), progress bar, countdown to Oscars date diff --git a/img/preview.gif b/img/preview.gif new file mode 100644 index 0000000..8423739 Binary files /dev/null and b/img/preview.gif differ diff --git a/img/preview.png b/img/preview.png deleted file mode 100644 index 64713ce..0000000 Binary files a/img/preview.png and /dev/null differ diff --git a/models/User.js b/models/User.js index 14751e3..971a358 100644 --- a/models/User.js +++ b/models/User.js @@ -9,6 +9,8 @@ const userSchema = new mongoose.Schema({ mustChangePassword: { type: Boolean, default: false }, tempPasswordIssuedAt: { type: Date, default: null }, tempPasswordExpiresAt: { type: Date, default: null }, + // Optional. When unset, UI follows system preference. + themePreference: { type: String, enum: ["light", "dark"], default: undefined }, watchedMovies: [{ imdb_id: { type: String, required: false }, watchedDate: { type: Date, default: Date.now } // Store the watched date diff --git a/public/change-password.html b/public/change-password.html index f497085..7a2b011 100644 --- a/public/change-password.html +++ b/public/change-password.html @@ -4,15 +4,37 @@
+