Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/Rowan-Paul/vodcreator. vodcreator.rowanpaulflynn.com
Something went wrong. Try again.
Files
- TypeScript 92%
- JavaScript 4%
- CSS 4%
README.md
VOD Creator #
A web application to generate Twitch VOD download commands for TwitchDownloaderCLI. Built with the T3 Stack (Next.js, TypeScript, tRPC, Tailwind CSS, NextAuth).
Features #
- Add multiple Twitch channels to track
- Fetch latest VODs from Twitch API
- Generate copyable download commands for:
- Video download
- Chat download
- Chat render
- Choose 1080p, 1440p, or custom chat render templates
- Cursor-paginated VOD loading with background refresh and retry states
- Persistent local settings and a bounded recent-VOD cache
- Google OAuth authentication
Tech Stack #
- Next.js 15 - React framework
- React 19 - UI library
- TypeScript - Type safety
- tRPC - Type-safe API
- NextAuth.js - Authentication
- Tailwind CSS v4 - Styling
- shadcn/ui - UI components
Setup #
Prerequisites #
- Node.js 18+ and pnpm
- Google Cloud account
- Twitch Developer account
1. Google OAuth Setup #
- Go to Google Cloud Console
- Create a new project or select an existing one
- Navigate to APIs & Services > Credentials
- Click Create Credentials > OAuth client ID
- Application type: Web application
- Authorized JavaScript origins:
http://localhost:3000(or your production URL) - Authorized redirect URIs:
http://localhost:3000/api/auth/callback/google(or your production URL +/api/auth/callback/google) - Click Create to get your Client ID and Client Secret
2. Twitch API Setup #
- Go to Twitch Developer Console
- Click Register Your Application
- Fill in the form:
- Name: VOD Creator (or any name you prefer)
- OAuth Redirect URLs:
http://localhost:3000(or your production URL) - Category: Integration
- Click Register to get your Client ID and Client Secret
- Click Manage on your application and ensure it has the correct redirect URL
3. Environment Variables #
Create a .env file in the root directory with the following variables:
# Google OAuth
AUTH_GOOGLE_ID="your-google-client-id"
AUTH_GOOGLE_SECRET="your-google-client-secret"
# Twitch API
TWITCH_CLIENT_ID="your-twitch-client-id"
TWITCH_CLIENT_SECRET="your-twitch-client-secret"
# NextAuth
AUTH_SECRET="generate-with: npx auth secret"
4. Install Dependencies #
pnpm install
5. Start Development Server #
pnpm dev
Visit http://localhost:3000 to start using the app.
Usage #
- Sign In: Click "Sign in with Google" and authenticate
- Add Channel: Enter a Twitch username and click "Add Channel"
- Refresh VODs: Click the refresh button to fetch the latest VODs from the channel
- Copy Commands: Click the copy buttons to copy commands to your clipboard:
- Video Download: Downloads the VOD video file
- Chat Download: Downloads the chat JSON file
- Chat Render: Renders the chat as a video file
- Load More: Click "Load More" to fetch additional VODs from Twitch and cache them locally
- Settings: Choose a chat render template, font, and VODs per load
Development #
Available Commands #
# Install dependencies
pnpm install
# Start development server
pnpm dev
# Build for production
pnpm build
# Start production server
pnpm start
# Run type checking
pnpm typecheck
# Run ESLint
pnpm lint
# Fix ESLint issues
pnpm lint:fix
# Format code with Prettier
pnpm format:write
Deployment #
Environment Variables #
Set the following environment variables in your deployment platform:
AUTH_GOOGLE_ID=""
AUTH_GOOGLE_SECRET=""
TWITCH_CLIENT_ID=""
TWITCH_CLIENT_SECRET=""
AUTH_SECRET=""
Update OAuth Redirect URLs #
Before deploying, update your OAuth redirect URLs:
Google OAuth:
- Add your production URL to authorized JavaScript origins
- Add your production URL +
/api/auth/callback/googleto authorized redirect URIs
Twitch API:
- Update OAuth Redirect URLs to your production URL
Deploy to Vercel #
- Push your code to GitHub
- Import project to Vercel
- Add environment variables
- Deploy
Learn More #
To learn more about the T3 Stack, check out these resources:
Troubleshooting #
Twitch API Rate Limiting #
The Twitch API has rate limits (30 requests per minute). If you see rate limit errors, wait a moment before refreshing.
Local Storage Issues #
- Ensure browser local storage is available
- Clear the
vodcreator-storelocal storage key if state gets corrupted
OAuth Callback Issues #
- Verify your redirect URLs match exactly (including http/https)
- Check that your production URL is added to authorized origins/redirects
- Ensure your auth secret is set (
AUTH_SECRET)
License #
MIT