π¬ Boxdbud.io
February 16, 2026 Β· View on GitHub
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.
π Live Application
- No Installation Required: Instant access from any modern web browser.
β¨ Features
- βοΈ 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.
π User Guide
Step 1: Access the Application
Navigate to boxdbud.io.
Step 2: Enter Usernames
- Your Username: Enter your exact Letterboxd username.
Step 3: Compare and View Results
- 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.
π οΈ Development Setup
Interested in contributing? Hereβs how to get the development environment running.
Prerequisites
Installation
- Clone the repository:
git clone https://github.com/your-username/BoxdBuddies.git
cd BoxdBuddies
-
Install dependencies:
npm install -
Start the development server:
npm run devThe application will be available at
http://localhost:5173.
Optional Developer Tools
SonarLint Integration
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.
Project Structure
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
π€ Contributing
We welcome contributions! Please follow these guidelines to help us keep the project organized and maintainable.
Git Workflow
This repository follows a Gitflow-inspired branching strategy:
- Branch from
develop:git checkout develop && git pull && 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 targeting
develop.
Branch Hierarchy:
feature/*,fix/*,chore/*, etc. β PR todevelopdevelopβ Integration branch for day-to-day workrelease/*,hotfix/*β PR tomain(for releases and critical fixes)mainβ Production-ready code
Note: If you accidentally target main, the auto-retarget workflow will redirect your PR to develop.
Code Style
- 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).
Versioning and Releases
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:current
π‘οΈ Security Policy
This project prioritizes security. All API keys are managed via Cloudflare secrets, and no sensitive user data is stored.
Reporting a Vulnerability
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.
Contributor Best Practices
- Never commit API keys, passwords, or other sensitive data.
- Validate all external inputs within your code.
- Keep dependencies updated and run
npm auditregularly.
π License
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.