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.
- 🔐 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
- Content-based filtering: TF-IDF on genres + cosine similarity.
- Collaborative filtering: user-user similarity from ratings matrix.
- Hybrid score:
final_score = 0.5 * content_score + 0.5 * collaborative_score
- Backend: Flask
- ML/Data: pandas, numpy, scikit-learn
- DB: SQLite
- Frontend: Jinja templates + Bootstrap + custom CSS
- Prod server: gunicorn
SmartRecs-AI-Movies/
├── app.py
├── recommender.py
├── models.py
├── requirements.txt
├── Procfile
├── railway.toml
├── data/
├── public/
│ └── static/
│ ├── css/style.css
│ └── images/
└── templates/
SmartRecs is set up for hosted deployment on Vercel and Railway. The repo intentionally avoids container setup, local server instructions, and editor-specific settings.
Railway is prepared with railway.toml and Procfile.
- Push this repository to GitHub.
- Open Railway and choose New Project.
- Select Deploy from GitHub repo.
- Choose this repository.
- 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.
- Deploy the project.
- Open the Railway-generated domain.
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.
- Push this repository to GitHub.
- Go to https://vercel.com/new.
- Import the GitHub repository.
- Set Framework Preset to
Flaskif Vercel does not auto-detect it. - Keep the root directory as the repository root.
- 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.
- Click Deploy.
- 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.
