A progressive web app for tracking Oscar-nominated films, making predictions, and sharing picks with friends.
- Check off films as you watch them across all 21 Oscar categories
- See nomination counts for each film
- Progress indicator shows how many you've seen
- Pick your winners for each category
- Single-select mode ensures one prediction per category
- Track your prediction progress separately from watched films
- Choose your personal favorites (what should win)
- Import from your predictions with one tap
- Heart icons distinguish favorites from predictions
- Share your predictions via URL - no account needed
- View friends' picks side-by-side with yours
- Works great for Oscar party competitions
- Elegant gold and black awards-show aesthetic
- Streaming service icons (Netflix, Max, Apple TV+, etc.)
- Responsive design works on mobile, tablet, and desktop
- Sticky "Browse by Category" button during onboarding
iOS Safari:
- Open the site in Safari
- Tap the Share button
- Select "Add to Home Screen"
Android Chrome:
- Open the site in Chrome
- Tap the menu (three dots)
- Select "Add to Home screen" or "Install app"
Desktop:
- Open the site in Chrome/Edge
- Click the install icon in the address bar
- Or use the browser menu to install
Serve the files with any static server:
# Using Python
python3 -m http.server 3000
# Using Node
npx serve
# Using PHP
php -S localhost:3000This project uses Playwright for E2E testing:
# Run all tests
npx playwright test
# Run with visible browser
npx playwright test --headed
# Run specific test file
npx playwright test tests/predictions.spec.js- Create a new repository on GitHub
- Push this code to the repository
- Go to Settings > Pages
- Set source to "Deploy from a branch" and select
main/root - Your site will be available at
https://username.github.io/repo-name
The deploy workflow automatically versions each build.
oscar-tracker/
├── index.html # Main HTML with PWA meta tags
├── style.css # Styles with CSS variables
├── app.js # App logic and localStorage
├── sw.js # Service worker for offline
├── manifest.json # Web app manifest
├── icons/ # App and streaming service icons
├── splash/ # iOS splash screens
├── tests/ # Playwright E2E tests
└── docs/ # Documentation and screenshots
All data is stored locally on your device using localStorage. Nothing is ever sent to a server. When you share predictions, the data is encoded in the URL itself.
- Vanilla HTML/CSS/JavaScript (no build step)
- Service Worker for offline caching
- localStorage for data persistence
- CSS custom properties for theming
- Google Fonts (Playfair Display + Libre Franklin)
- Playwright for testing
MIT