A real-time analytics dashboard for Kick streamers. Monitor viewer counts, stream uptime, and channel statistics with automatic 15-second refresh intervals.
- ๐ด Live Status - Real-time online/offline detection
- ๐ฅ Viewer Count - Current viewer metrics
- ๐ Peak Viewers - Session high tracking
- โฑ๏ธ Stream Uptime - Live session duration
- ๐ฏ Category Tracking - Current game/category
- ๐ Stream Title - Live title display
- โป๏ธ Auto-refresh - Updates every 15 seconds
- ๐ฑ Responsive Design - Works on all devices
- Node.js 18+ installed
- A Kick.com account (for API credentials)
- Clone the repository
git clone <your-repo-url>
cd kickstream-monitor- Install dependencies
npm install- Set up environment variables
Create a .env.local file in the root directory:
KICK_CLIENT_ID=your_client_id_here
KICK_CLIENT_SECRET=your_client_secret_here- Run the development server
npm run dev- Open your browser
Navigate to http://localhost:3000
- Go to Kick.com
- Navigate to Settings โ Developer
- Click Create New Application
- Select scopes:
- โ Read user information (including email address)
- โ Read channel information
- Copy your Client ID and Client Secret
- Add them to your
.env.localfile
For more details, visit Kick Developer Documentation
| Layer | Technology |
|---|---|
| Framework | Next.js 14 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS |
| UI Components | Lucide React Icons |
| Date Handling | date-fns |
| Deployment | Vercel |
- Push your code to GitHub
- Go to vercel.com
- Click New Project
- Import your repository
- Add environment variables:
KICK_CLIENT_IDKICK_CLIENT_SECRET
- Click Deploy
# Install Vercel CLI
npm i -g vercel
# Login
vercel login
# Deploy
vercel --prodIn your Vercel project dashboard:
- Go to Settings โ Environment Variables
- Add:
KICK_CLIENT_ID=your_client_idKICK_CLIENT_SECRET=your_client_secret
- Click Save
- Redeploy your project
kickstream-monitor/
โโโ app/
โ โโโ api/
โ โ โโโ proxy-image/
โ โ โ โโโ route.ts # Image proxy endpoint
โ โ โโโ streamer/
โ โ โโโ [username]/
โ โ โโโ route.ts # Streamer data API
โ โโโ components/
โ โ โโโ StreamerDashboard.tsx # Main dashboard component
โ โโโ layout.tsx # Root layout
โ โโโ page.tsx # Home page
โโโ .env.local # Environment variables
โโโ next.config.js # Next.js configuration
โโโ package.json # Dependencies
โโโ tailwind.config.ts # Tailwind configuration
โโโ tsconfig.json # TypeScript configuration
- Enter a Kick streamer username (e.g.,
amateurgamer,nicklee,bakedalaska) - Click Monitor
- View real-time analytics:
- Live/Offline status
- Current viewer count
- Peak viewers for the session
- Stream uptime
- Category/Game
- Stream title
The dashboard auto-refreshes every 15 seconds to keep data current.
# Start development server
npm run dev
# Build for production
npm run build
# Start production server
npm start
# Run linter
npm run lintGET /api/streamer/[username]
Response:
{
"username": "xqc",
"profilePic": "https://...",
"isLive": true,
"viewerCount": 45000,
"title": "Gaming Stream",
"category": "Just Chatting",
"startTime": "2026-01-30T10:00:00Z",
"followersCount": 2500000,
"streamId": 123456
}GET /api/proxy-image?url=[encoded_image_url]
Returns the proxied image to bypass CORS restrictions.
The Kick API may rate limit requests. The app:
- Refreshes every 15 seconds (conservative)
- Uses proxy services to avoid direct blocking
- Implements error handling for failed requests
- API Coverage: Kick's API is limited and may not expose all data
- Viewer Count: May lag slightly behind actual live counts
- Rate Limits: Be mindful of API rate limits with frequent requests
- Unofficial API: This uses Kick's public API which may change
This project is licensed under the MIT License - see the LICENSE file for details.
This project is not affiliated with or endorsed by Kick.com. Use responsibly and in accordance with Kick.com's Terms of Service.
Built with โค๏ธ for the Kick streaming community





