Skip to content

Viishal-62/Vidscribe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

17 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎬 Vidscribe

Transform your videos into text, timestamps, and social content β€” powered by AI

Next.js TypeScript Convex Clerk


Vidscribe Demo


🎯 What is Vidscribe?

Vidscribe is a free, open-source video and podcast transcription platform that helps content creators:

  • πŸŽ™οΈ Transcribe videos with high accuracy using AssemblyAI
  • ⏱️ Get word-level timestamps β€” click to jump to any moment
  • πŸ—£οΈ Detect speakers β€” perfect for podcasts and interviews
  • πŸ“± Generate social posts β€” AI creates Twitter, LinkedIn & Instagram content
  • 🌐 Multi-language support β€” Hindi & English

πŸ–ΌοΈ Screenshots

Dashboard Upload Transcription
Dashboard Upload Transcription

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        VIDSCRIBE                               β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”‚
β”‚   β”‚ Next.js │────▢│   API   │────▢│     Background      β”‚     β”‚
β”‚   β”‚   App   β”‚     β”‚ Routes  β”‚     β”‚       Jobs          β”‚     β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚     (Inngest)       β”‚     β”‚
β”‚        β”‚                          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚
β”‚        β”‚                                     β”‚                 β”‚
β”‚        β–Ό                                     β–Ό                 β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”                         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”‚
β”‚   β”‚  Clerk  β”‚                         β”‚ AssemblyAIβ”‚           β”‚
β”‚   β”‚  Auth   β”‚                         β”‚   + Geminiβ”‚           β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β”‚
β”‚        β”‚                                     β”‚                 β”‚
β”‚        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                 β”‚
β”‚                       β–Ό                                        β”‚
β”‚              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                  β”‚
β”‚              β”‚    Convex    │◀─── Real-time updates           β”‚
β”‚              β”‚   Database   β”‚                                  β”‚
β”‚              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                  β”‚
β”‚                                                                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

How It Works

1. Upload Video  β†’  2. Store in Convex  β†’  3. Upload to Cloudinary
                                                    β”‚
                                                    β–Ό
4. Complete! ← 5. Save Results ← 6. Transcribe (AssemblyAI)
                                                    β”‚
                                                    β–Ό
                                    7. Generate Social Posts (Gemini AI)

πŸ› οΈ Tech Stack

Layer Technology What it does
Frontend Next.js 16 + React 19 App router, server components
Database Convex Real-time sync, file storage
Auth Clerk User management, webhooks
Transcription AssemblyAI Speech-to-text with timestamps
AI Google Gemini Social media content generation
Jobs Inngest Background processing with retries
Storage Cloudinary Video file CDN
Styling Tailwind + Neubrutalism Bold, modern UI

πŸ“ Project Structure

vidscribe/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ page.tsx                 # Landing page
β”‚   β”œβ”€β”€ dashboard/
β”‚   β”‚   β”œβ”€β”€ page.tsx             # Dashboard home
β”‚   β”‚   β”œβ”€β”€ upload/              # Upload videos
β”‚   β”‚   └── transcriptions/      # View transcriptions
β”‚   └── api/
β”‚       β”œβ”€β”€ inngest/             # Background job webhook
β”‚       └── webhooks/clerk/      # User sync webhook
β”‚
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ ui/                      # UI components
β”‚   └── dashboard/               # Dashboard components
β”‚
β”œβ”€β”€ convex/
β”‚   β”œβ”€β”€ schema.ts                # Database schema
β”‚   β”œβ”€β”€ projects.ts              # Project operations
β”‚   β”œβ”€β”€ transcripts.ts           # Transcript operations
β”‚   └── users.ts                 # User operations
β”‚
β”œβ”€β”€ inngest/
β”‚   └── functions/               # Background jobs
β”‚
└── lib/                         # Utilities

πŸš€ Quick Start

Prerequisites

  • Node.js 18+
  • pnpm (recommended)

1. Clone & Install

git clone https://github.com/your-username/vidscribe.git
cd vidscribe
pnpm install

2. Set Up Environment

Create .env.local:

# Clerk
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_...
CLERK_SECRET_KEY=sk_test_...
CLERK_WEBHOOK_SECRET=whsec_...

# Convex
NEXT_PUBLIC_CONVEX_URL=https://...convex.cloud

# AssemblyAI
ASSEMBLYAI_API_KEY=...

# Cloudinary
CLOUDINARY_CLOUD_NAME=...
CLOUDINARY_API_KEY=...
CLOUDINARY_API_SECRET=...

# Google Gemini
GOOGLE_API_KEY=...

3. Run Development Servers

# Terminal 1 - Next.js + Convex
pnpm dev

# Terminal 2 - Inngest
pnpm dlx inngest-cli@latest dev

4. Open the App

Visit http://localhost:3000 πŸŽ‰


βš™οΈ Service Setup

πŸ” Clerk (Authentication)
  1. Create app at clerk.com
  2. Copy API keys to .env.local
  3. Add webhook: https://your-app.com/api/webhooks/clerk
    • Events: user.created, user.updated, user.deleted
πŸ—„οΈ Convex (Database)
npx convex dev
# Follow prompts to create project
πŸŽ™οΈ AssemblyAI (Transcription)
  1. Sign up at assemblyai.com
  2. Copy API key from dashboard
☁️ Cloudinary (Storage)
  1. Create account at cloudinary.com
  2. Get credentials from Settings β†’ API Keys
πŸ€– Google Gemini (AI)
  1. Visit Google AI Studio
  2. Create and copy API key

🚒 Deployment

Deploy to Vercel

# Install Vercel CLI
pnpm i -g vercel

# Deploy
vercel --prod

Deploy Convex

npx convex deploy

Configure Services

  1. Add all env variables to Vercel
  2. Update Clerk webhook URL to production domain
  3. Set Inngest webhook: https://your-app.com/api/inngest

πŸ“š Documentation

Full documentation available in /docs:


🀝 Contributing

Contributions welcome! Please open an issue or submit a PR.


πŸ“„ License

MIT License β€” free to use and modify.


Built with ❀️ using Next.js, Convex, and AI

Releases

No releases published

Packages

 
 
 

Contributors