App UI: https://legal-transcriber-stephenwiggs.replit.app/
App Development: https://replit.com/@stephenwiggs/LegalTranscriber
Documents: User Guide / Tech Docs
Architecture Overview
Frontend (React + TypeScript)
- React application with TypeScript
- Uses Tanstack Query for data fetching
- WebSocket integration for real-time updates
- Shadcn UI components for interface
Backend (Node.js + Express)
- Express server with TypeScript
- PostgreSQL database with Drizzle ORM
- WebSocket server for real-time updates
- Authentication using Passport.js
- File handling with Multer
Core Components
Database Schema
- Users: Stores user authentication data
- Transcriptions: Manages audio file metadata and status
- TranscriptSegments: Stores individual transcript segments
API Endpoints
- Authentication:
/api/login,/api/register,/api/logout - Transcriptions:
- GET
/api/transcriptions - POST
/api/upload - POST
/api/transcriptions/:id/transcribe - GET
/api/transcriptions/:id/download - DELETE
/api/transcriptions/:id - Segments:
- GET
/api/transcriptions/:id/segments - PUT
/api/segments/:id - DELETE
/api/segments/:id
File Processing
- Audio files stored in
/uploadsdirectory - Supports multiple audio formats
- Uses Deepgram API for transcription
- Implements chunked file streaming
Security
- Session-based authentication
- CSRF protection
- File type validation
- Size limitations
- User data isolation
Integration Points
- Deepgram API for speech-to-text
- WebSocket for real-time updates
- Browser audio API for playback
- File system for audio storage
Performance Considerations
- Streaming audio playback
- Paginated transcript loading
- Optimistic UI updates
- WebSocket reconnection handling
Error Handling
- File upload validation
- Transcription error recovery
- Authentication error handling
- API error responses