Cyber-themed movie database built with Next.js (Pages Router), Redux, Arwes UI, and TMDb APIs.
- Runtime: Next.js
16.2.2+ React19.2.4 - State: Redux
5+ React Redux9 - Networking: Axios
1.14.0 - PWA:
next-pwa5.6.0 - Tooling: Bun, ESLint 10 flat config, Prettier 3, Bun test
Install dependencies:
bun installStart local dev server:
bun run devBuild for production:
bun run buildStart production server:
bun run startLint:
bun run lintTest:
bun testFormat check:
bun run format- Upgraded dependencies with Bun and resolved compatibility blockers.
- Explicitly run Next in webpack mode (
next dev/build --webpack) becausenext-pwauses webpack plugin hooks. - Migrated linting to ESLint flat config (
eslint.config.mjs) and removed legacy.eslintrc.json. - Added baseline Bun tests in
utils/utils.test.js. - Moved global Google Font links from
_appto_documentfor better loading behavior. - Added API response cache headers in
pages/api/[...slug].js. - Fixed utility bugs:
handleizenow correctly trims leading and trailing dashes.getRandomImagenow correctly maps to00..09.useLazyListDatanow stops re-expanding after first trigger.
- Improved request behavior:
- Replaced Axios cancel tokens with
AbortControllersignals. - Added stable
useCallbackservice methods and corrected effect dependency arrays. - Fixed person page ref typo (
re->ref) and unsafe optional spread usage. - Fixed search page request loop by removing unstable router dependency usage.
- Fixed search router hydration/state synchronization race causing URL/input/result mismatch.
- Fixed search page empty-query behavior to keep
/searchopen instead of redirecting to home. - Fixed search clear behavior to reset URL to
/search(removing stale?query=...params). - Fixed person page "Movies and Shows" card links to resolve media type correctly (
/movie/...or/tv/...instead of/undefined/...). - Fixed search result date rendering to use
first_air_datefallback for TV results. - Added default
nameattribute for search inputs to resolve browser form-field accessibility issues.
- Replaced Axios cancel tokens with
- Lint currently reports
@next/next/no-img-elementwarnings in multiple files. This is non-blocking. Converting image surfaces tonext/imageis a separate optimization track.