Skip to content

Developer-Nijat/ElectaRec-Screen-Recording

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎬 ElectaRec

Professional Screen Recording Application

Version License Platform Built with Electron React

A powerful, feature-rich screen recording solution with REST API integration

Features β€’ Installation β€’ Usage β€’ API Documentation β€’ Building


✨ Features

πŸŽ₯ Recording Capabilities

  • 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

🎨 Modern Interface

  • 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

πŸ”Œ Developer Features

  • 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

⚑ Performance & Reliability

  • 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

πŸš€ Quick Start

Prerequisites

  • Windows 10/11 (64-bit)
  • Node.js 18+ (Download)
  • Git (optional)

Installation

# Clone the repository
git clone https://github.com/yourusername/electarec.git
cd electarec

# Install dependencies
npm install

Development Mode

# Start development server with hot reload
npm run dev

This launches:

  • βš›οΈ Vite dev server on http://localhost:5173
  • πŸ–₯️ Electron window with hot reload
  • πŸ”Œ Express API server on http://localhost:3390

πŸ“– Usage

Desktop Application

  1. Launch ElectaRec - Double-click the application icon
  2. Select Screen - Choose which screen(s) to record
  3. Configure Settings - Set quality, audio options, and output location
  4. Start Recording - Click the record button or use keyboard shortcuts
  5. Stop & Save - Recordings are automatically converted to MP4

Admin Features

Protected actions require admin password (default: admin123):

  • Change admin password
  • Modify server port
  • Exit application (via File menu)

System Tray

Right-click the tray icon for quick actions:

  • πŸ“Ή Start/Stop Recording
  • πŸ“‚ Open Recordings Folder
  • πŸ“‹ View Logs
  • βš™οΈ Open Settings
  • ❌ Exit Application

πŸ”Œ API Documentation

ElectaRec provides a powerful REST API for automation and integration.

Base URL

http://localhost:3390/api

Authentication

Admin endpoints require password in request body:

{
  "adminPassword": "admin123"
}

πŸ“‘ Endpoints

Get Server Status

GET /api/status

Response:

{
  "isRecording": false,
  "recordingId": null,
  "currentSource": null,
  "duration": 0,
  "serverTime": "2025-10-22T17:30:00.000Z"
}

List Available Screens

GET /api/screens

Response:

{
  "screens": [
    {
      "id": "screen:0:0",
      "name": "Screen 1",
      "primary": true,
      "bounds": { "x": 0, "y": 0, "width": 1920, "height": 1080 }
    }
  ]
}

Start Recording

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"
}

Stop Recording

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
}

Stop All Recordings

POST /api/stop-all-recordings

Response:

{
  "success": true,
  "stopped": ["rec_20251022_173000", "rec_20251022_173000::screen:1:0"],
  "message": "All recordings stopped"
}

List Recordings

GET /api/recordings

Response:

{
  "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 Recording

DELETE /api/recordings/:filename

Response:

{
  "success": true,
  "message": "Recording deleted"
}

Update Configuration

POST /api/config
Content-Type: application/json

{
  "adminPassword": "admin123",
  "recording": {
    "maxDuration": 900,
    "selectedScreenId": "all"
  },
  "paths": {
    "recordings": "D:\\Recordings"
  }
}

πŸ” Admin Endpoints

Change Admin Password

POST /api/change-password
Content-Type: application/json

{
  "currentPassword": "admin123",
  "newPassword": "newSecurePassword"
}

πŸ› οΈ Building

Development Build

# Build renderer only
npm run build

Production Build

# Create Windows installer
npm run dist

Output: dist/ElectaRec Setup 1.0.4.exe

Build Configuration

The app uses electron-builder with NSIS installer:

{
  "productName": "ElectaRec",
  "appId": "com.electarec.app",
  "win": {
    "target": "nsis",
    "icon": "build/icons/icon.ico"
  }
}

πŸ“ Project Structure

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

βš™οΈ Configuration

Config File Locations

Development:

D:\Projects\electarec\config.json

Production:

C:\Users\[Username]\AppData\Roaming\electarec\config.json

Default Configuration

{
  "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"
  }
}

πŸ“‹ Logging

ElectaRec includes comprehensive logging for debugging.

Log Locations

Development:

D:\Projects\electarec\logs\

Production:

C:\Users\[Username]\AppData\Roaming\electarec\logs\

Log Files

  • app-YYYY-MM-DD.log - General application logs
  • error-YYYY-MM-DD.log - Error logs only

Quick Access

Click the πŸ“‹ Logs button in the footer or use the system tray menu.


πŸ”§ Troubleshooting

FFmpeg Issues

If recordings fail to convert:

  1. Check logs for FFmpeg errors
  2. Verify FFmpeg path in production: resources\app.asar.unpacked\node_modules\@ffmpeg-installer\
  3. Ensure sufficient disk space

Port Conflicts

If port 3390 is in use:

  1. Open config file
  2. Change server.port to another port (e.g., 3391)
  3. Restart application

Recording Issues

  • No audio: Check Windows audio permissions
  • Black screen: Update graphics drivers
  • Choppy video: Lower quality preset or close background apps

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ‘¨β€πŸ’» Author

Nijat Aliyev (@developer.nijat)


πŸ™ Acknowledgments


Made with ❀️ for content creators and developers

⬆ Back to top

About

A powerful, feature-rich screen recording solution with REST API integration

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors