A "Nanar" database (cf. french article of Nanar) can be utilized through a GraphQL API, for educational purposes.
Since this is a learning project, some of the selected technologies might appear to be more advanced than necessary for its scope.
- Node.js v22 LTS: JS Runtime.
- JavaScript/TypeScript: Programming language.
- NestJS: Back-end framework.
- PostgreSQL: SQL database.
- Prisma: ORM.
- prisma-nestjs-graphql: Generate object types, inputs, args, etc. from prisma schema file
- @paljs/plugins: Generate Prisma select/include objects from GraphQL queries for efficient data fetching.
- Apollo: GraphQL server.
- Puppeteer: Browser API used for scrapping.
- Redis: Cache.
- Axios: Promise based HTTP client.
- Jest: Testing framework.
- pnpm: Package manager.
- SWC: Compiler for JS/TS.
- ESLint/typescript-eslint: Linter.
- Prettier: Code formatter.
- Docker: Container engine.
- Development Containers: Container development.
- Populate the DB with Nanarland reviews data:
- Fetch reviews links.
- Scrape review data.
- Store useful data into DB.
- Automate the scrapping process.
- Link movies to a TMDb id:
- Retrieve movie ID based on name and year.
- Fetch additional movie data from TMDb.
- Handle cases where the movie is not found.
- Prioritize searching by the original name.
- Cache fetched online content in Redis.
- Store movie posters outside the database.
- Enable database interaction through GraphQL:
- Update a review.
- Retrieve a sorted list based on specified arguments.
- Implement access security.
- Implement tests.
- Enable the option to use an alternative database:
- SQLite.