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
/uploads
directory - 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