{"id":48602674,"url":"https://github.com/siddhraj1412/top4theory","last_synced_at":"2026-04-08T22:33:24.628Z","repository":{"id":334421525,"uuid":"1141307266","full_name":"siddhraj1412/top4theory","owner":"siddhraj1412","description":"Top 4 Theory: Discover your Cinema Level (1-10) by analyzing your favourite Top 4 films! 🎬 A free, fun web tool that scores your movie taste based on rating quality, genre diversity, rarity, era variety, and cinephile traits. No login required enter any public username for instant, shareable results. Built with Node.js, Express, Cheerio, TMDB API","archived":false,"fork":false,"pushed_at":"2026-02-01T07:49:30.000Z","size":143,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-01T18:23:11.242Z","etag":null,"topics":["cheerio","cinema","cinephile","expressjs","film","fun-tool","javascript","movie","movie-analysis","nodejs","tmdb-api","vercel","web-app"],"latest_commit_sha":null,"homepage":"https://top4theory.vercel.app","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/siddhraj1412.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-24T16:22:39.000Z","updated_at":"2026-02-01T10:01:01.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/siddhraj1412/top4theory","commit_stats":null,"previous_names":["siddhraj1412/top4theory"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/siddhraj1412/top4theory","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/siddhraj1412%2Ftop4theory","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/siddhraj1412%2Ftop4theory/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/siddhraj1412%2Ftop4theory/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/siddhraj1412%2Ftop4theory/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/siddhraj1412","download_url":"https://codeload.github.com/siddhraj1412/top4theory/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/siddhraj1412%2Ftop4theory/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31577446,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cheerio","cinema","cinephile","expressjs","film","fun-tool","javascript","movie","movie-analysis","nodejs","tmdb-api","vercel","web-app"],"created_at":"2026-04-08T22:33:20.910Z","updated_at":"2026-04-08T22:33:24.623Z","avatar_url":"https://github.com/siddhraj1412.png","language":"HTML","funding_links":["https://buymeacoffee.com/siddhrajthakor"],"categories":[],"sub_categories":[],"readme":"# 🎬 Top 4 Theory\n\n\u003e Discover your Cinema Level based on your Letterboxd Top 4\n\nA free web tool that analyzes your Letterboxd profile's Top 4 favorite films and calculates a \"Cinema Level\" score from 1-10, revealing what your movie taste says about you.\n\n🌐 **Live Demo:** [top4theory.vercel.app](https://top4theory.vercel.app)\n\n![Top 4 Theory Screenshot](https://img.shields.io/badge/Status-Live-brightgreen) ![License](https://img.shields.io/badge/License-MIT-blue)\n\n---\n\n## ✨ Features\n\n- **Instant Analysis** - Just enter any Letterboxd username\n- **10-Level Ranking System** - From \"Casual Viewer\" to \"Cinema Deity\"\n- **5-Factor Scoring Algorithm:**\n  - 📊 Rating Quality (TMDB scores)\n  - 🎭 Genre Diversity\n  - 💎 Rarity \u0026 Obscurity\n  - 📅 Era Diversity (classic to modern)\n  - 🎬 Cinephile Traits (auteur recognition, foreign films, etc.)\n- **Beautiful UI** - Letterboxd-inspired dark theme\n- **No Login Required** - Works with any public Letterboxd profile\n- **Shareable Results** - Show off your Cinema Level\n\n---\n\n## 🏆 The 10 Cinema Levels\n\n| Level | Title                   | Description                              |\n| ----- | ----------------------- | ---------------------------------------- |\n| 1     | The Casual Viewer       | You watch movies to pass the time        |\n| 2     | The Popcorn Enthusiast  | You enjoy the movie-going experience     |\n| 3     | The Avid Watcher        | You have solid taste and watch regularly |\n| 4     | The Eclectic Explorer   | You appreciate variety across genres     |\n| 5     | The Dedicated Cinephile | You dig deeper than most viewers         |\n| 6     | The Refined Curator     | Your taste is sharp and intentional      |\n| 7     | The Cinema Connoisseur  | You have excellent, well-rounded taste   |\n| 8     | The Elite Cinephile     | Your picks show deep film appreciation   |\n| 9     | The Master Curator      | You see cinema on another level          |\n| 10    | The Cinema Deity        | Your taste is legendary. Absolute peak.  |\n\n---\n\n## 🛠️ Tech Stack\n\n- **Backend:** Node.js, Express.js\n- **Scraping:** Cheerio\n- **Movie Data:** TMDB API\n- **Frontend:** Vanilla HTML, CSS, JavaScript\n- **Hosting:** Vercel\n- **Database:** PostgreSQL (optional caching)\n\n---\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- Node.js (v16+)\n- TMDB API Key ([Get one free](https://www.themoviedb.org/settings/api))\n\n### Installation\n\n1. **Clone the repository**\n\n   ```bash\n   git clone https://github.com/siddhraj1412/top4theory.git\n   cd top4theory\n   ```\n\n2. **Install dependencies**\n\n   ```bash\n   npm install\n   ```\n\n3. **Set up environment variables**\n\n   Create a `.env` file in the root directory:\n\n   ```env\n   TMDB_API_KEY=your_tmdb_api_key_here\n   PORT=3000\n   ```\n\n4. **Run the server**\n\n   ```bash\n   npm start\n   ```\n\n5. **Open in browser**\n   ```\n   http://localhost:3000\n   ```\n\n---\n\n## 📁 Project Structure\n\n```\ntop4theory/\n├── server.js              # Express server entry point\n├── package.json\n├── .env                   # Environment variables (not in repo)\n├── config/\n│   ├── db.js              # Database configuration\n│   └── schema.sql         # Database schema\n├── routes/\n│   └── api.js             # API endpoints\n├── services/\n│   ├── letterboxdScraper.js   # Letterboxd profile scraper\n│   └── movieService.js        # TMDB integration \u0026 scoring algorithm\n└── public/\n    ├── index.html         # Main HTML\n    ├── style.css          # Letterboxd-inspired styling\n    └── script.js          # Frontend logic\n```\n\n---\n\n## ⚙️ Scoring Algorithm\n\nThe algorithm evaluates Top 4 picks across 5 equally-weighted factors (20 points each, 100 total):\n\n1. **Rating Quality (20 pts)** - Average TMDB rating of your picks\n2. **Genre Diversity (20 pts)** - Variety of genres across your Top 4\n3. **Rarity Score (20 pts)** - How obscure/underrated your picks are\n4. **Era Diversity (20 pts)** - Mix of classic and modern films\n5. **Cinephile Traits (20 pts)** - Auteur directors, foreign films, B\u0026W, silent era\n\n**Score to Level Mapping:**\n\n- Level 1: 0-9 pts\n- Level 2: 10-19 pts\n- Level 3: 20-29 pts\n- ...\n- Level 10: 90-100 pts\n\n---\n\n## 🌐 Deployment (Vercel)\n\n1. Push code to GitHub\n2. Import project to [Vercel](https://vercel.com)\n3. Add environment variable:\n   - `TMDB_API_KEY` = your API key\n4. Deploy!\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! Feel free to:\n\n- Report bugs\n- Suggest new features\n- Submit pull requests\n\n---\n\n## 📜 License\n\nThis project is open source under the [MIT License](LICENSE).\n\n---\n\n## 🙏 Acknowledgments\n\n- [Letterboxd](https://letterboxd.com) - The social network for film lovers\n- [TMDB](https://www.themoviedb.org) - Movie database API\n- Inspired by the Letterboxd community's love for Top 4s\n\n---\n\n## 📬 Contact\n\n**Creator:** [@SiddhrajThakor](https://letterboxd.com/SiddhrajThakor/)\n\nGot feedback? [Send it here](https://forms.gle/2arhuQwDaCs94Rn59)\n\nLike the project? [Buy me a coffee ☕](https://buymeacoffee.com/siddhrajthakor)\n\n---\n\n\u003cp align=\"center\"\u003e\n  Made with ❤️ for film lovers everywhere\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsiddhraj1412%2Ftop4theory","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsiddhraj1412%2Ftop4theory","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsiddhraj1412%2Ftop4theory/lists"}