CineQuery is a modern, multilingual movie discovery application that allows users to search for films using natural language and receive highly personalized, AI-driven recommendations based on top-rated Kaggle datasets and live the TMDB API.
- Natural Language Querying: Skip rigid filters. Type what you want (e.g., "Spanish romantic comedies from the 1990s") and the built-in NLP engine will translate your intent into complex SQL statements instantly.
- Smart Recommendations: A hybrid recommendation engine analyzes your "Favorite" movies to find semantic genre affinities and suggests hidden gems, leveraging both local datasets and the live TMDB catalog for the latest releases.
- Multilingual Support: Fully localized interface spanning English, Spanish, and French.
- Dynamic Database Compilation: Bootstraps an in-memory SQLite database from a local Kaggle dataset metadata file on startup, avoiding heavy local database management overhead.
- Premium UI/UX: Built with React, Tailwind CSS, and Framer Motion for a sleek, dark-mode glassmorphic aesthetic.
- React.js (Vite)
- Tailwind CSS (for styling and responsive design)
- Context API (for global state management: Themes, i18n, History, Favorites)
- Lucide Icons
- Node.js & Express.js
- better-sqlite3 (for executing dynamic, NLP-generated SQL queries)
- csv-parse
- OpenAI API (used strictly as an NLP translation and semantic affinity engine)
- TMDb (The Movie Database) API (for fetching posters, latest releases, and dynamic fallback data)
- Natural Language to SQL pipeline: Rather than vector-embedding the entire movie catalog, the backend takes advantage of the highly-structured metadata stored in our Kaggle dataset. User queries are translated via an NLP engine into normalized
SELECTstatements, mapping broad requests into precise SQLWHEREclauses. - Hybrid Recommendation Engine: When finding similar movies, the algorithm analyzes the user's favorites array. If a user favorites a brand new movie (e.g., late 2024), the system automatically performs a fallback lookup via the live TMDB API to construct the semantic profile, then queries the local database for historical matches, ensuring zero gaps in the recommendation timeline.
- In-Memory SQLite: Designed for speed and zero-friction deployments. The
.csvdata is parsed and loaded into an in-memory SQL database purely during the Node instance runtime.
- Node.js (v18+ recommended)
- An active TMDb API Key
- An active OpenAI API Key
-
Clone the repository
git clone https://github.com/yourusername/cinequery.git cd cinequery -
Configure Environment Variables Create a
.envfile in theserverdirectory and add your API credentials:TMDB_API_KEY=your_tmdb_api_key_here OPENAI_API_KEY=your_openai_api_key_here
-
Install Dependencies Install backend dependencies:
cd server npm installInstall frontend dependencies:
cd ../client npm install -
Run the Application Start the backend server (runs on port 8000 default):
cd server npm run devStart the frontend client (runs on port 5173 default):
cd ../client npm run dev -
Open in Browser Navigate to
http://localhost:5173to explore CineQuery!
Designed and developed for portfolio showcase.