An open API service indexing awesome lists of open source software.

https://github.com/nicolaebp/moveit

MoveIt is a modern, lightweight desktop application that prevents your computer from going to sleep by intelligently moving your mouse cursor at specified intervals. Perfect for presentations, video calls, monitoring dashboards, or any situation where you need your computer to stay active.
https://github.com/nicolaebp/moveit

electron electron-builder electron-updater javascript mousemove-simulator react reactjs tailwind vitest yubikey zustand

Last synced: 2 months ago
JSON representation

MoveIt is a modern, lightweight desktop application that prevents your computer from going to sleep by intelligently moving your mouse cursor at specified intervals. Perfect for presentations, video calls, monitoring dashboards, or any situation where you need your computer to stay active.

Awesome Lists containing this project

README

          

# ๐Ÿ–ฑ๏ธ MoveIt

**Keep your computer active with intelligent mouse movement**

[![Version](https://img.shields.io/badge/version-1.0.0-blue.svg)](https://github.com/NicolaeBP/MoveIt)
[![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Windows-lightgrey.svg)](https://github.com/NicolaeBP/MoveIt)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
[![Electron](https://img.shields.io/badge/Electron-38-blue.svg)](https://electronjs.org/)
[![React](https://img.shields.io/badge/React-19-blue.svg)](https://reactjs.org/)

---

## ๐ŸŽฏ For Users

### What is MoveIt?

MoveIt is a modern, lightweight desktop application that prevents your computer from going to sleep by intelligently moving your mouse cursor at specified intervals. Perfect for presentations, video calls, monitoring dashboards, or any situation where you need your computer to stay active.

### โœจ Key Features

- ๐Ÿ–ฑ๏ธ **Intelligent Mouse Movement** - Minimal, barely noticeable cursor movements
- โฐ **Flexible Scheduling** - Set custom schedules for different days and times
- ๐ŸŒ **Multi-Language Support** - Available in 12 languages
- ๐ŸŽจ **Modern UI** - Clean, intuitive interface with dark/light themes
- ๐Ÿ“Š **System Tray Integration** - Runs quietly in the background
- ๐Ÿ”’ **Privacy-First** - All processing happens locally, no data collection
- โšก **Lightweight** - Minimal system resource usage
- ๐Ÿ–ฅ๏ธ **Cross-Platform** - Works on macOS and Windows

### ๐Ÿ“ธ Screenshots

*Screenshots and demo GIFs will be added soon*

### ๐Ÿš€ Installation

#### Download Options

1. **GitHub Releases** *(Recommended)*
- Download the latest version from [Releases](https://github.com/NicolaeBP/MoveIt/releases)
- Choose the appropriate file for your platform:
- `MoveIt Setup.exe` for Windows
- `MoveIt.dmg` for macOS

2. **Build from Source**
- See the [Developer Setup](#-developer-setup) section below

#### Installation Steps

**macOS:**
1. Download `MoveIt.dmg`
2. Open the DMG file
3. Drag MoveIt to Applications folder
4. Launch MoveIt from Applications
5. Grant accessibility permissions when prompted

**Windows:**
1. Download `MoveIt Setup.exe`
2. Run the installer
3. Follow the setup wizard
4. Launch MoveIt from Start Menu or Desktop

### ๐ŸŽฎ How to Use

1. **Launch MoveIt** - The app opens with a clean, minimal interface
2. **Set Interval** - Choose how often to move the mouse (1-60 minutes)
3. **Configure Schedule** *(Optional)* - Set specific days and times for movement
4. **Start/Stop** - Click the blue/red button to start or stop mouse movement
5. **System Tray** - Minimize to tray for background operation

### ๐Ÿ”ง First-Time Setup

**Accessibility Permissions (macOS):**
- MoveIt needs accessibility permissions to control your mouse
- When prompted, click "Open Settings" to grant permissions
- Add MoveIt to the list of allowed applications

**Windows:**
- No special permissions required - works out of the box

### โ“ FAQ

**Q: Will this interfere with my normal computer usage?**
A: No! MoveIt uses minimal 1-pixel movements that are barely noticeable and won't interfere with your work.

**Q: Does MoveIt collect any data?**
A: Absolutely not. MoveIt runs entirely on your local machine and doesn't send any data anywhere.

**Q: Can I use this during video calls?**
A: Yes! The movements are so small they won't be noticed by others on video calls.

**Q: Why does macOS ask for accessibility permissions?**
A: macOS requires explicit permission for apps to control mouse movement. This is a security feature.

**Q: How much system resources does it use?**
A: Very minimal - typically less than 50MB RAM and negligible CPU usage.

---

## ๐Ÿ‘จโ€๐Ÿ’ป For Developers

### ๐Ÿ› ๏ธ Tech Stack

- **Frontend:** React 19 + TypeScript
- **Backend:** Electron 38 (Node.js)
- **Styling:** Tailwind CSS v4
- **State Management:** Zustand
- **Mouse Control:** @nut-tree-fork/nut-js
- **Internationalization:** React Intl
- **Build System:** Vite + electron-builder
- **Code Quality:** ESLint + Prettier + Husky

### ๐Ÿ“‹ Prerequisites

- **Node.js** 18 or higher
- **npm** or **yarn**
- **Git**

**Platform-specific:**
- **macOS:** Xcode Command Line Tools
- **Windows:** Visual Studio Build Tools (for native modules)

### ๐Ÿš€ Developer Setup

```bash
# Clone the repository
git clone https://github.com/NicolaeBP/MoveIt.git
cd MoveIt

# Install dependencies
npm install

# Start development server
npm run dev
```

This will:
1. Build the Electron main process
2. Start the Vite dev server
3. Launch the app with hot reloading
4. Open React DevTools

### ๐Ÿ“ Project Structure

```
MoveIt/
โ”œโ”€โ”€ src/ # React frontend source
โ”‚ โ”œโ”€โ”€ components/ # React components
โ”‚ โ”œโ”€โ”€ store/ # Zustand stores
โ”‚ โ”œโ”€โ”€ i18n/ # Internationalization
โ”‚ โ”œโ”€โ”€ hooks/ # Custom hooks
โ”‚ โ””โ”€โ”€ utils/ # Utility functions
โ”œโ”€โ”€ electron/ # Electron main process
โ”‚ โ”œโ”€โ”€ main.ts # Main process entry
โ”‚ โ”œโ”€โ”€ preload.ts # Preload script
โ”‚ โ””โ”€โ”€ constants.ts # App constants
โ”œโ”€โ”€ shared/ # Shared types and utilities
โ”œโ”€โ”€ assets/ # App icons and resources
โ”œโ”€โ”€ scripts/ # Build and utility scripts
โ””โ”€โ”€ dist/ # Build output
```

### ๐Ÿ”ง Available Scripts

```bash
# Development
npm run dev # Start development environment
npm run dev:vite # Start only Vite dev server
npm run dev:electron # Start only Electron

# Building
npm run build:vite # Build React app
npm run build:electron # Build Electron main process
npm run build:mac # Build macOS app
npm run build:win # Build Windows app
npm run build:all # Build for all platforms

# Code Quality
npm run lint # Run ESLint
npm run lint:fix # Fix ESLint issues
npm run type-check # TypeScript type checking
npm run format # Format code with Prettier

# Testing
npm test # Run tests (when implemented)
```

### ๐Ÿ—๏ธ Build Process

The build process uses electron-builder with platform-specific configurations:

**macOS:**
- Creates `.dmg` installer
- Code signing with developer certificate
- Notarization for Gatekeeper
- Universal binary (Intel + Apple Silicon)

**Windows:**
- Creates `.exe` installer with NSIS
- Code signing (when certificates are configured)
- Supports both x64 and ia32 architectures

#### Windows Code Signing Setup

For signed Windows builds, you'll need to set up the SSL.com CodeSignTool:

1. **Download CodeSignTool** from [SSL.com](https://www.ssl.com/guide/esigner-codesigntool-command-guide/)
2. **Extract** to `tools/CodeSignTool/` in the project root
3. **Configure credentials** in `.env.local`:
```bash
WINDOWS_SIGN_USER_NAME=your_username
WINDOWS_SIGN_USER_PASSWORD=your_password
WINDOWS_SIGN_CREDENTIAL_ID=your_credential_id
WINDOWS_SIGN_USER_TOTP=your_totp_secret
```

**Project structure after setup:**
```
MoveIt/
โ”œโ”€โ”€ tools/
โ”‚ โ””โ”€โ”€ CodeSignTool/
โ”‚ โ”œโ”€โ”€ CodeSignTool.sh
โ”‚ โ”œโ”€โ”€ CodeSignTool.bat
โ”‚ โ””โ”€โ”€ jar/
โ”‚ โ””โ”€โ”€ code_sign_tool-1.3.2.jar
```

**Unsigned builds (for testing):**
```bash
npm run build:win:nosign # Skips code signing
```

### ๐Ÿงช Testing

```bash
# Run type checking
npm run type-check

# Run linting
npm run lint

# Format code
npm run format
```

*Note: Unit and integration tests will be added in future releases.*

### ๐Ÿค Contributing

We welcome contributions! Please follow these steps:

1. **Fork** the repository
2. **Create** a feature branch (`git checkout -b feature/amazing-feature`)
3. **Make** your changes
4. **Run** quality checks (`npm run lint && npm run type-check`)
5. **Commit** your changes (`git commit -m 'Add amazing feature'`)
6. **Push** to the branch (`git push origin feature/amazing-feature`)
7. **Open** a Pull Request

#### Development Guidelines

- Follow the existing code style
- Add TypeScript types for all new code
- Use semantic commit messages
- Update documentation as needed
- Test on both macOS and Windows if possible

#### Code Style

- Use TypeScript for all new code
- Follow the ESLint configuration
- Use functional React components with hooks
- Prefer named exports over default exports
- Keep components small and focused

### ๐Ÿ“ฆ Release Process

1. Update version in `package.json`
2. Update `CHANGELOG.md`
3. Create a git tag: `git tag v1.0.0`
4. Push tags: `git push --tags`
5. GitHub Actions will automatically build and create a release

### ๐ŸชŸ Windows Store Release Workflow

MoveIt can be distributed through the Microsoft Store in addition to direct downloads.

#### Prerequisites

1. **Microsoft Partner Center Account**
- **Cost:** $19 USD one-time registration fee (individual)
- **Register:** https://partner.microsoft.com/dashboard
- **What you get:** Access to submit apps to Microsoft Store

2. **Get Publisher ID**
- After registration, go to Account Settings โ†’ Certificates
- Copy your Publisher ID (format: `CN=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX`)

#### Build Windows Store Package

**Important:** Windows Store packages (AppX) can only be built on Windows. We use GitHub Actions for this.

1. **Update Publisher ID in `package.json`**
```json
"appx": {
"publisher": "CN=YOUR_ACTUAL_PUBLISHER_ID"
}
```

2. **Trigger GitHub Actions Workflow**
- Go to: https://github.com/NicolaeBP/MoveIt/actions/workflows/build-windows-store.yml
- Click **"Run workflow"**
- Enter version number (e.g., `1.0.4`)
- Click **"Run workflow"**

3. **Download AppX Package**
- Wait for workflow to complete (~5-10 minutes)
- Download artifact: `windows-store-package-X.X.X`
- Extract to find `.appx` file

#### Submit to Microsoft Store

1. **Create App Listing**
- Go to Partner Center โ†’ Apps and games โ†’ New app
- Reserve app name: "MoveIt"
- Fill in basic information

2. **Upload Package**
- Create new submission
- Upload `.appx` file from GitHub Actions
- Can upload directly via web (no special tools needed)

3. **Complete Store Listing**
- **Screenshots:** Min 1, recommended 3-4 (PNG/JPG)
- **Description:** Professional productivity tool for mouse automation
- **Keywords:** mouse, automation, productivity, utility, remote work
- **Privacy Policy URL:** https://nicolaebp.github.io/MoveIt/PRIVACY_POLICY
- **Support URL:** https://github.com/NicolaeBP/MoveIt
- **Category:** Productivity or Utilities

4. **Submit for Review**
- Review timeline: 1-3 days (typically faster than Mac App Store)
- Email notification when approved/rejected

#### Important Notes

- โš ๏ธ **AppX packages must be built on Windows** (GitHub Actions handles this)
- โš ๏ธ **Mouse automation may face policy review** - Frame as productivity tool
- โš ๏ธ **Sandboxing concerns** - Test package before submission if possible
- โœ… **Keep GitHub releases** - Primary distribution method regardless

#### Cost Comparison

| Store | Registration Fee | Renewal |
|-------|-----------------|---------|
| Microsoft Store | $19 one-time | None |
| Mac App Store | $99/year | Annual |

### ๐ŸŒ Internationalization

Adding a new language:

1. Create a new locale file in `src/i18n/locales/`
2. Add the locale to `src/i18n/config.ts`
3. Update the language selector component

Supported languages: English, Spanish, French, German, Italian, Portuguese, Romanian, Russian, Chinese, Japanese, Korean.

### ๐Ÿ“ Architecture Notes

- **Main Process:** Handles system integration, mouse control, and IPC
- **Renderer Process:** React UI with modern state management
- **IPC Communication:** Type-safe channels between processes
- **State Management:** Zustand stores for UI state
- **Scheduling:** Custom scheduler with timezone support

### ๐Ÿ› Debugging

**Development Tools:**
- React DevTools (opens automatically in dev mode)
- Electron DevTools (Cmd/Ctrl + Shift + I)
- VS Code debugger configuration included

**Common Issues:**
- **Mouse not moving:** Check accessibility permissions on macOS
- **Build failures:** Ensure all native dependencies are installed
- **Hot reloading not working:** Restart the dev server

### ๐Ÿ“„ License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

### ๐Ÿ™ Acknowledgments

- [Electron](https://electronjs.org/) - Cross-platform desktop apps
- [React](https://reactjs.org/) - UI framework
- [nut-js](https://github.com/nut-tree/nut.js) - Desktop automation library
- [Tailwind CSS](https://tailwindcss.com/) - Utility-first CSS framework

### ๐Ÿ“ž Support

- **Issues:** [GitHub Issues](https://github.com/NicolaeBP/MoveIt/issues)
- **Discussions:** [GitHub Discussions](https://github.com/NicolaeBP/MoveIt/discussions)
- **Email:** nicolaebalica@bpconsulting.pro

---

**Made with โค๏ธ by [Nicolae Balica](https://github.com/NicolaeBP)**