AI-powered call transcription application with speaker diarization and analysis using OpenAI APIs.
Built by Abhishek Jain for Branders
- Accurate Transcription: High-quality transcripts using OpenAI Whisper API
- Speaker Diarization: Identify and separate different speakers in recordings
- AI Analysis: Generate summaries, action items, and insights using GPT-4.1
- Modern UI: Beautiful React frontend with Tailwind CSS
- Real-time Processing: Track upload and processing status
- Secure: JWT authentication and rate limiting
- React 18 with TypeScript
- Vite for development and building
- Tailwind CSS for styling
- React Router for navigation
- React Query for data fetching
- Framer Motion for animations
- Node.js with Express and TypeScript
- Prisma ORM with PostgreSQL/SQLite
- OpenAI API integration
- JWT authentication
- Winston logging
- Multer for file uploads
- OpenAI Whisper API for transcription
- OpenAI GPT-4.1 for analysis
- pyannote.audio for speaker diarization
- Node.js 18+ and npm 9+
- OpenAI API key
- PostgreSQL database (or SQLite for development)
-
Clone the repository:
git clone <repository-url> cd abhiscript
-
Install dependencies:
npm run install:all
-
Set up environment variables:
cp env.example .env
Edit
.envand add your configuration:OPENAI_API_KEY=your_openai_api_key_here DATABASE_URL=postgresql://username:password@localhost:5432/abhiscript_db JWT_SECRET=your_secure_jwt_secret_here
-
Set up the database:
cd backend npx prisma generate npx prisma db push
Start both frontend and backend in development mode:
npm run devThis will start:
- Frontend: http://localhost:3000
- Backend API: http://localhost:3001
Start only the frontend:
npm run dev:frontendStart only the backend:
npm run dev:backendabhiscript/
├── backend/ # Node.js API server
│ ├── src/
│ │ ├── config/ # Configuration files
│ │ ├── controllers/ # Route handlers
│ │ ├── middleware/ # Express middleware
│ │ ├── models/ # Database models
│ │ ├── routes/ # API routes
│ │ ├── services/ # Business logic
│ │ ├── types/ # TypeScript types
│ │ └── utils/ # Utility functions
│ └── package.json
├── frontend/ # React application
│ ├── src/
│ │ ├── components/ # Reusable components
│ │ ├── pages/ # Page components
│ │ ├── hooks/ # Custom React hooks
│ │ ├── services/ # API services
│ │ ├── types/ # TypeScript types
│ │ └── utils/ # Utility functions
│ └── package.json
├── data/ # Data storage
│ ├── recordings/ # Uploaded audio files
│ └── processed/ # Processed files
├── uploads/ # Temporary upload directory
└── shared/ # Shared utilities/types
OPENAI_API_KEY: Your OpenAI API keyDATABASE_URL: Database connection stringJWT_SECRET: Secret for JWT token signing (min 32 characters)
PORT: Backend port (default: 3001)NODE_ENV: Environment (development/production)MAX_FILE_SIZE: Maximum upload size (default: 500MB)LOG_LEVEL: Logging level (default: info)
POST /api/auth/login- User loginPOST /api/auth/register- User registrationPOST /api/auth/logout- User logout
POST /api/upload- Upload audio fileGET /api/upload/status/:id- Check upload status
GET /api/transcripts- List transcriptsGET /api/transcripts/:id- Get transcript detailsDELETE /api/transcripts/:id- Delete transcript
POST /api/analysis/summary/:transcriptId- Generate summaryPOST /api/analysis/action-items/:transcriptId- Extract action itemsPOST /api/analysis/q-and-a/:transcriptId- Q&A interface
Run tests for both frontend and backend:
npm testBuild for production:
npm run buildStart production server:
npm startMIT License - see LICENSE file for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
For questions or issues, please open an issue on GitHub.
AbhiScript is built by Abhishek Jain for Branders to showcase advanced AI-powered transcription capabilities and modern full-stack development practices.