Skip to content

skumalo0115-commits/SmartRecs-AI-Movies

Repository files navigation

🎬 SmartRecs — AI Movie Recommendation Web App

SmartRecs Login Preview

Built SmartRecs AI Movies, an AI-powered full-stack web app that personalizes movie recommendations based on user ratings and preference patterns. The platform includes user authentication, rating workflows, dynamic filtering, rich movie detail modals, and responsive mobile-first UI improvements. This project strengthened my skills in recommender systems, backend engineering, data handling, and shipping production-ready web applications.

✨ Features

  • 🔐 User auth (register/login/logout)
  • ⭐ Rate movies with 1–5 stars
  • 🤖 Hybrid recommendations tailored per user
  • 🎞️ Movie details with genre, year, and trailer modal
  • 🔎 Search + filter on Rate and Recommendations pages
  • 🌙 Clean dark UI

🧠 How recommendations work

  1. Content-based filtering: TF-IDF on genres + cosine similarity.
  2. Collaborative filtering: user-user similarity from ratings matrix.
  3. Hybrid score:
final_score = 0.5 * content_score + 0.5 * collaborative_score

🏗️ Tech stack

  • Backend: Flask
  • ML/Data: pandas, numpy, scikit-learn
  • DB: SQLite
  • Frontend: Jinja templates + Bootstrap + custom CSS
  • Prod server: gunicorn

📁 Project structure

SmartRecs-AI-Movies/
├── app.py
├── recommender.py
├── models.py
├── requirements.txt
├── Procfile
├── railway.toml
├── data/
├── public/
│   └── static/
│       ├── css/style.css
│       └── images/
└── templates/

Deployment

SmartRecs is set up for hosted deployment on Vercel and Railway. The repo intentionally avoids container setup, local server instructions, and editor-specific settings.

Deploy to Railway

Railway is prepared with railway.toml and Procfile.

  1. Push this repository to GitHub.
  2. Open Railway and choose New Project.
  3. Select Deploy from GitHub repo.
  4. Choose this repository.
  5. Add environment variables:
    • SECRET_KEY: any long random string.
    • TMDB_API_KEY: optional, for live TMDB lookups.
    • OMDB_API_KEY: optional, for live OMDB lookups.
  6. Deploy the project.
  7. Open the Railway-generated domain.

Deploy to Vercel

This project is also prepared for Vercel using vercel.json. Vercel detects the Flask app from app.py, and static assets are stored in public/static so they can be served from Vercel's public asset pipeline.

  1. Push this repository to GitHub.
  2. Go to https://vercel.com/new.
  3. Import the GitHub repository.
  4. Set Framework Preset to Flask if Vercel does not auto-detect it.
  5. Keep the root directory as the repository root.
  6. Add environment variables in Vercel Project Settings:
    • SECRET_KEY: any long random string.
    • TMDB_API_KEY: optional, for live TMDB lookups.
    • OMDB_API_KEY: optional, for live OMDB lookups.
  7. Click Deploy.
  8. After deployment, open the generated Vercel URL and confirm the SmartRecs icon appears in the browser tab.

Note: Vercel Functions use a read-only project filesystem. The app uses /tmp for SQLite on Vercel so the demo can run, but /tmp is not permanent storage. Use a hosted database for production user accounts and ratings.


Made with ❤️ + 🍿 by SmartRecs.

About

SmartRecs AI Movies is a full-stack movie recommendation web app that learns your taste from ratings and generates personalized movie picks using collaborative filtering and content-aware metadata.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors