A powerful, feature-rich screen recording solution with REST API integration
Features β’ Installation β’ Usage β’ API Documentation β’ Building
- Multi-Screen Support - Record from single or multiple monitors simultaneously
- Flexible Source Selection - Capture entire screens, specific windows, or custom areas
- Audio Recording - System audio and microphone input with real-time mixing
- Quality Presets - High (1080p), Medium (720p), and Low (480p) options
- Sleek React UI - Beautiful, responsive interface built with Tailwind CSS
- Real-time Status - Live recording indicators and progress monitoring
- Recording Library - Manage, preview, and organize your recordings
- System Tray Integration - Quick access from Windows taskbar
- REST API - Full programmatic control via HTTP endpoints
- Admin Protection - Password-secured administrative actions
- Production Logging - Comprehensive file-based logging system
- Auto-save - Automatic recording preservation with MP4 conversion
- FFmpeg Integration - Hardware-accelerated video encoding
- Auto-stop Timer - Configurable maximum recording duration
- Crash Recovery - Resilient error handling and recovery
- Local Timezone Support - Accurate timestamps in your local time
- Windows 10/11 (64-bit)
- Node.js 18+ (Download)
- Git (optional)
# Clone the repository
git clone https://github.com/yourusername/electarec.git
cd electarec
# Install dependencies
npm install# Start development server with hot reload
npm run devThis launches:
- βοΈ Vite dev server on
http://localhost:5173 - π₯οΈ Electron window with hot reload
- π Express API server on
http://localhost:3390
- Launch ElectaRec - Double-click the application icon
- Select Screen - Choose which screen(s) to record
- Configure Settings - Set quality, audio options, and output location
- Start Recording - Click the record button or use keyboard shortcuts
- Stop & Save - Recordings are automatically converted to MP4
Protected actions require admin password (default: admin123):
- Change admin password
- Modify server port
- Exit application (via File menu)
Right-click the tray icon for quick actions:
- πΉ Start/Stop Recording
- π Open Recordings Folder
- π View Logs
- βοΈ Open Settings
- β Exit Application
ElectaRec provides a powerful REST API for automation and integration.
http://localhost:3390/api
Admin endpoints require password in request body:
{
"adminPassword": "admin123"
}GET /api/statusResponse:
{
"isRecording": false,
"recordingId": null,
"currentSource": null,
"duration": 0,
"serverTime": "2025-10-22T17:30:00.000Z"
}GET /api/screensResponse:
{
"screens": [
{
"id": "screen:0:0",
"name": "Screen 1",
"primary": true,
"bounds": { "x": 0, "y": 0, "width": 1920, "height": 1080 }
}
]
}POST /api/start-recording
Content-Type: application/json
{
"source": "screen",
"screenId": "screen:0:0",
"audioEnabled": true,
"quality": "high"
}Parameters:
source:"screen"|"window"|"all"(required)screenId: Screen identifier or"all"for multi-screen (optional)audioEnabled: Enable audio recording (default:false)quality:"high"|"medium"|"low"(default:"medium")
Response:
{
"success": true,
"recordingId": "rec_20251022_173000",
"message": "Recording started"
}POST /api/stop-recording
Content-Type: application/json
{
"recordingId": "rec_20251022_173000"
}Response:
{
"success": true,
"recordingId": "rec_20251022_173000",
"filePath": "D:\\Recordings\\recording_2025-10-22_17-30-00.mp4",
"duration": 120.5,
"fileSize": 15728640
}POST /api/stop-all-recordingsResponse:
{
"success": true,
"stopped": ["rec_20251022_173000", "rec_20251022_173000::screen:1:0"],
"message": "All recordings stopped"
}GET /api/recordingsResponse:
{
"recordings": [
{
"id": "rec_20251022_173000",
"filename": "recording_2025-10-22_17-30-00.mp4",
"path": "D:\\Recordings\\recording_2025-10-22_17-30-00.mp4",
"size": 15728640,
"created": "2025-10-22T17:30:00.000Z",
"duration": 120
}
],
"count": 1
}DELETE /api/recordings/:filenameResponse:
{
"success": true,
"message": "Recording deleted"
}POST /api/config
Content-Type: application/json
{
"adminPassword": "admin123",
"recording": {
"maxDuration": 900,
"selectedScreenId": "all"
},
"paths": {
"recordings": "D:\\Recordings"
}
}POST /api/change-password
Content-Type: application/json
{
"currentPassword": "admin123",
"newPassword": "newSecurePassword"
}# Build renderer only
npm run build# Create Windows installer
npm run distOutput: dist/ElectaRec Setup 1.0.4.exe
The app uses electron-builder with NSIS installer:
{
"productName": "ElectaRec",
"appId": "com.electarec.app",
"win": {
"target": "nsis",
"icon": "build/icons/icon.ico"
}
}electarec/
βββ src/
β βββ main/ # Electron main process
β β βββ main.js # Application entry point
β β βββ preload.js # Preload script for IPC
β β βββ services/ # Core services
β β β βββ RecordingService.js # Recording logic
β β β βββ FFmpegService.js # Video processing
β β β βββ FileService.js # File management
β β βββ utils/ # Utilities
β β βββ logger.js # Production logging
β β βββ config.js # Configuration
β β βββ configManager.js # Config persistence
β βββ renderer/ # React frontend
β βββ src/
β β βββ App.jsx # Main React component
β β βββ main.jsx # React entry point
β βββ index.html # HTML template
βββ build/
β βββ icons/ # Application icons
βββ dist/ # Build output
βββ logs/ # Development logs
βββ package.json # Dependencies & scripts
βββ README.md # This file
Development:
D:\Projects\electarec\config.json
Production:
C:\Users\[Username]\AppData\Roaming\electarec\config.json
{
"server": {
"port": 3390,
"host": "127.0.0.1"
},
"recording": {
"maxDuration": 900,
"autoStopEnabled": true,
"selectedScreenId": "all"
},
"quality": {
"high": { "width": 1920, "height": 1080, "fps": 30 },
"medium": { "width": 1280, "height": 720, "fps": 30 },
"low": { "width": 854, "height": 480, "fps": 30 }
},
"paths": {
"recordings": "D:\\Recordings",
"temp": "C:\\Users\\User\\AppData\\Local\\Temp\\electarec-temp"
}
}ElectaRec includes comprehensive logging for debugging.
Development:
D:\Projects\electarec\logs\
Production:
C:\Users\[Username]\AppData\Roaming\electarec\logs\
app-YYYY-MM-DD.log- General application logserror-YYYY-MM-DD.log- Error logs only
Click the π Logs button in the footer or use the system tray menu.
If recordings fail to convert:
- Check logs for FFmpeg errors
- Verify FFmpeg path in production:
resources\app.asar.unpacked\node_modules\@ffmpeg-installer\ - Ensure sufficient disk space
If port 3390 is in use:
- Open config file
- Change
server.portto another port (e.g., 3391) - Restart application
- No audio: Check Windows audio permissions
- Black screen: Update graphics drivers
- Choppy video: Lower quality preset or close background apps
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Nijat Aliyev (@developer.nijat)
- Electron - Cross-platform desktop apps
- React - UI library
- FFmpeg - Video processing
- Tailwind CSS - Styling framework
- Vite - Build tool
Made with β€οΈ for content creators and developers