Web application to manage your movie library. Track watched, pending, and in-progress movies with automatic TMDB synchronization.
π Read this in: EspaΓ±ol
https://watchlog-vtlx.netlify.app/ - Hosted on Netlify
See all features in action: authentication, adding movies with poster search, rating system, filters, and more.
- Description
- Features
- Requirements
- Installation
- Usage
- Deploy
- Technologies
- Project Structure
- Development
- License
- Resources
- Future Improvements
Web application to manage your movie library. Track watched, pending, and in-progress movies with automatic TMDB synchronization.
WatchLog was born from the need to have a single centralized place to manage all your entertainment content. Tired of using third-party applications or CSVs to record what movies you watched.
Future vision: Expand beyond movies to include TV series and books. A unified space where you own your data and can access it from any device, anytime.
- π― Centralized - All your content in one place
- π Private - Your data, your server, no spying algorithms
- π± Accessible - From mobile, tablet or desktop
- π Open - Open source, you can fork and customize
- π¬ Complete CRUD - Create, read, update and delete movies
- π Secure Authentication - Token-based with database validation
- πΎ Persistence - All data stored in PostgreSQL (Supabase)
- π Global Search - By title or year across your entire library
- π Filter by Status - Pending, Watched, Watching, Favorite
- π Statistics - Visualize movie count by status
- πΌοΈ Automatic Posters - TMDB synchronization
- π» Background Sync - Non-blocking interface for poster sync
- π± Responsive Design - Works on mobile, tablet and desktop
- β‘ Ultra Fast - Instant loading, built with Vite
π Click "Fork" button on GitHub to create your own copy.
Then clone your fork:
git clone https://github.com/YOUR-USERNAME/WatchLog.git
cd WatchLognpm install- Create a free account on Supabase
- Create a new project
- Go to SQL Editor and execute
SUPABASE_SETUP.sqlfrom this repo - Copy your credentials:
VITE_SUPABASE_URL: Settings β API β Project URLVITE_SUPABASE_ANON_KEY: Settings β API β anon key
Create a .env file in the root (never commit this!):
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=your_anon_key
VITE_TMDB_API_KEY=your_tmdb_api_key
VITE_AUTH_TOKEN=your_secret_token_here.env to .gitignore - it's already there, never push this file!
Reference: See .env.example for the structure
- Register on TMDB
- Create an API key (free tier available)
- Add it to
.envasVITE_TMDB_API_KEY
Generate a strong random token (no spaces):
# Linux/Mac
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
# Or use any online generator: https://random.org/strings/Then:
- Add it to
.envasVITE_AUTH_TOKEN - Add it to Supabase: SQL Editor β Insert into
valid_tokenstable
npm run dev- ποΈ View your movies
- π Search by title or year
- π Filter by status
- π View statistics
Enter your token in the app to:
- β Add new movies
- βοΈ Change movie status
- ποΈ Delete movies
- π Auto-sync posters with TMDB
- Push to GitHub
- Connect to Netlify
- Automatic configuration:
- Build:
npm run build - Publish:
dist
- Build:
- Add environment variables in dashboard
- β¨ Automatic deploy on each push
| Layer | Technology | Purpose |
|---|---|---|
| Frontend | React + Vite | Interactive UI |
| Styles | Tailwind CSS | Responsive styling |
| Icons | Lucide React | Modern icons |
| Backend | Supabase | PostgreSQL + REST API |
| External Data | TMDB API | Movie information |
| Auth | Token-based | Security |
watchlog/
βββ src/
β βββ app.jsx # Main component
β βββ config.js # Configuration
β βββ api/
β β βββ supabase.js # REST client
β β βββ tmdb.js # TMDB client
β βββ auth/
β β βββ useAuth.js # Auth hook
β βββ components/
β βββ MovieCard.jsx
β βββ AddMovie.jsx
β βββ Filters.jsx
β βββ Stats.jsx
βββ index.html
βββ package.json
βββ vite.config.js
βββ .env.example
βββ README.md
npm run dev # Development with HMR
npm run build # Optimized build
npm run preview # Build previewUse .env.example as reference for new contributors.
This project is under the MIT license.
You are free to:
- β Use in personal projects
- β Use in commercial projects
- β Modify the code
- β Distribute
Conditions:
- π Include copy of the license
See LICENSE for more details.
- CSV/JSON export functionality
- Advanced filters (by year range, director, etc.)
- Sort options (by rating, date added, etc.)
- Separate
seriestable in database - TMDB TV API integration
- Series card component with episodes/seasons
- Series management (add, edit, delete, rate)
- Search and filter for series
- Separate
bookstable in database - Google Books API or OpenLibrary integration
- Book card component with author/ISBN
- ISBN search capability
- Books management (add, edit, delete, rate)
- Custom lists and collections
- Dark/Light theme toggle
- ...
