Find movies all your friends want to watch.
Boxdbud.io connects to Letterboxd, compares multiple watchlists, and shows you the common movies for your next group watch.
- No Installation Required: Instant access from any modern web browser.
- βοΈ Letterboxd Integration: Scrapes complete watchlists with full pagination support.
- π₯ Multi-User Comparison: Compare watchlists between yourself and up to 4 friends.
- π TMDB Enhancement: Enriches movies with posters, ratings, genres, and director info.
- π Genre Display: Shows movie genres as interactive badges on result cards for easy browsing.
- β‘ Intelligent Caching: Utilizes a Cloudflare D1 database for rapid subsequent comparisons.
- π¨ Responsive Design: A clean, Letterboxd-inspired dark theme that works on any screen size.
- π Secure by Design: All external API interactions are handled server-side; no user API keys are required or stored.
Navigate to boxdbud.io.
- Your Username: Enter your exact Letterboxd username.
- Click "Compare Watchlists". The app will scan all watchlists and find common movies.
- Results are sorted to show movies that the most friends have on their watchlists.
- Each movie card displays genres as badges for easy identification and browsing.
- Click any movie poster to view detailed information on Letterboxd.
Interested in contributing? Hereβs how to get the development environment running.
- Clone the repository:
git clone https://github.com/your-username/BoxdBuddies.git
cd BoxdBuddies-
Install dependencies:
npm install
-
Start the development server:
npm run dev
The application will be available at
http://localhost:5173.
SonarLint provides real-time code quality and security feedback in your IDE. To use SonarLint with this project:
-
Install the SonarLint extension for your IDE (VS Code, IntelliJ, etc.)
-
Optional: Connect to SonarCloud (for team-shared rules and analysis):
- Open SonarLint settings in your IDE
- Add a new connection to SonarCloud
- Configure the connection with:
- Connection ID: Your choice (e.g., your GitHub username)
- Project Key:
Wootehfook_BoxdBuddies
- Note: This configuration is personal and should not be committed to the repository
-
Local-only mode: SonarLint works without any connection, using default rules
This setup is entirely optional and personal to each developer. SonarLint connected-mode settings should remain in your personal IDE configuration and should not be committed to the repository.
BoxdBuddies/
βββ src/ # React frontend source
βββ functions/ # Cloudflare Functions (serverless backend)
βββ migrations/ # Cloudflare D1 database schema
βββ public/ # Static assets
βββ .github/ # GitHub workflows and configurations
βββ wrangler.toml # Cloudflare configuration
βββ README.md # This file
We welcome contributions! Please follow these guidelines to help us keep the project organized and maintainable.
- Create a feature branch:
git checkout -b feature/your-feature-name - Make your changes and test them locally.
- Format your code:
npm run lint - Commit your changes using the Conventional Commits format.
- Push to your fork and create a Pull Request.
- TypeScript/React: Adheres to the project's ESLint and Prettier configurations.
- Cloudflare Functions: Follow modern TypeScript and Cloudflare Workers best practices.
- AI Attribution: Any AI-generated code must include a comment with the timestamp and model identity (e.g.,
// AI Generated: GitHub Copilot (GPT-5.2-Codex) - 2025-08-15).
This project follows Semantic Versioning and maintains a CHANGELOG.md following the Keep a Changelog format.
Automated Changelog Updates:
- When a PR is merged to
mainordevelop, the changelog is automatically updated based on the PR title - Use Conventional Commits format in PR titles:
feat:for new features (added to "Added" section)fix:for bug fixes (added to "Fixed" section)chore:,docs:,refactor:, etc. (added to "Changed" section)
Creating a Release:
- Ensure all changes are documented in the
[Unreleased]section of CHANGELOG.md - Go to Actions β "Version Bump and Release" workflow
- Click "Run workflow" and select the version bump type:
patchfor bug fixes (2.1.0 β 2.1.1)minorfor new features (2.1.0 β 2.2.0)majorfor breaking changes (2.1.0 β 3.0.0)
- Optionally add release notes
- The workflow will:
- Update
package.jsonversion - Move unreleased changes to a new version section in CHANGELOG.md
- Create a git tag
- Create a GitHub release with the changelog content
- Update
Check Current Version:
npm run version:currentThis project prioritizes security. All API keys are managed via Cloudflare secrets, and no sensitive user data is stored.
Please do not report security vulnerabilities through public GitHub issues.
- Use the "Report a vulnerability" feature under the "Security" tab in the GitHub repository.
- We aim to acknowledge reports within 48 hours and provide regular updates until resolution.
- Never commit API keys, passwords, or other sensitive data.
- Validate all external inputs within your code.
- Keep dependencies updated and run
npm auditregularly.
BoxdBuddies is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
In short, this means:
- β You can use, modify, and share it for personal projects.
- β You must share the source code of any modifications you distribute.
- β Commercial use is strictly prohibited. You cannot sell it, charge for access, or include it in proprietary software.
See the LICENSE file for full details.