A modern web application that allows users to upload audio and video files for transcription using AssemblyAI. The application is built with Next.js, React, Supabase for authentication and database, and is deployed on Vercel.
- User authentication with Supabase
- File uploads with drag-and-drop interface
- Transcription using AssemblyAI's powerful speech-to-text API
- Dashboard to view and manage transcriptions
- Real-time status updates for transcription jobs
- Frontend: Next.js, React, TailwindCSS
- Authentication & Database: Supabase
- Transcription: AssemblyAI API
- Deployment: Vercel
- Node.js 16.x or later
- A Supabase account
- An AssemblyAI API key
-
Clone the repository:
git clone <repository-url> cd transcription-micro-saas
-
Install dependencies:
npm install
-
IMPORTANT: Create a
.env.localfile in the root directory with the following variables:NEXT_PUBLIC_SUPABASE_URL=your-supabase-url NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key SUPABASE_SERVICE_ROLE_KEY=your-supabase-service-role-key ASSEMBLY_API_KEY=your-assemblyai-api-key⚠️ The application will not function properly without these environment variables. You'll see a helpful warning message if any are missing.To get your Supabase credentials:
- Go to your Supabase project dashboard
- Click on the "Settings" icon (gear icon) in the sidebar
- Go to "API" section
- Copy the URL and anon/public key
To get your AssemblyAI API key:
- Sign up or log in to AssemblyAI
- Go to your dashboard
- Copy your API key
-
Create a new Supabase project
-
Create a new table called
transcriptswith the following columns:id(uuid, primary key)user_id(uuid, foreign key to auth.users)title(text)file_name(text)transcript_id(text)status(text)text(text, nullable)created_at(timestamp with time zone, default: now())updated_at(timestamp with time zone, default: now())
-
Set up Row Level Security (RLS) policies for the
transcriptstable:- Enable RLS on the table
- Create a policy that allows users to select only their own transcripts
- Create a policy that allows users to insert only their own transcripts
- Create a policy that allows users to update only their own transcripts
npm run devVisit http://localhost:3000 to see the application.
The application can be easily deployed to Vercel:
- Connect your GitHub repository to Vercel
- Set the environment variables in the Vercel dashboard
- Deploy with the default settings
If you see an error like Missing Supabase environment variables or notice that authentication isn't working:
- Make sure you've created a
.env.localfile with all the required variables - Double-check that your Supabase and AssemblyAI API keys are correct
- Restart your development server after adding or changing environment variables