{"id":19932619,"url":"https://github.com/rifatkasikci/remotek","last_synced_at":"2026-04-11T09:02:59.532Z","repository":{"id":257083474,"uuid":"857260605","full_name":"rifatKasikci/RemoteK","owner":"rifatKasikci","description":"Control computers through mobile app.","archived":false,"fork":false,"pushed_at":"2024-09-14T07:31:34.000Z","size":486,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-12T01:37:25.770Z","etag":null,"topics":["electron","nestjs","rabbitmq","react-native","remote-control"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rifatKasikci.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-14T07:15:18.000Z","updated_at":"2024-09-15T05:24:14.000Z","dependencies_parsed_at":"2024-09-14T19:34:29.262Z","dependency_job_id":"959e570f-df04-42a3-8a83-930dc619ad4d","html_url":"https://github.com/rifatKasikci/RemoteK","commit_stats":null,"previous_names":["rifatkasikci/remotek"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rifatKasikci%2FRemoteK","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rifatKasikci%2FRemoteK/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rifatKasikci%2FRemoteK/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rifatKasikci%2FRemoteK/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rifatKasikci","download_url":"https://codeload.github.com/rifatKasikci/RemoteK/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241361396,"owners_count":19950379,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["electron","nestjs","rabbitmq","react-native","remote-control"],"created_at":"2024-11-12T23:11:02.145Z","updated_at":"2025-12-31T01:06:58.071Z","avatar_url":"https://github.com/rifatKasikci.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RemoteK\n\nRemoteK is a powerful cross-platform solution that enables users to remotely control and manage their computers, including shutdown and restart commands, through a mobile app. This project leverages Electron, React Native, and NestJS to create a seamless integration between mobile and desktop environments.\n\n## Table of Contents\n- [Overview](#overview)\n- [Features](#features)\n- [Technologies Used](#technologies-used)\n- [Architecture](#architecture)\n- [Setup \u0026 Installation](#setup--installation)\n  - [Backend (NestJS)](#backend-nestjs)\n  - [Desktop Client (Electron)](#desktop-client-electron)\n  - [Mobile App (React Native)](#mobile-app-react-native)\n- [Usage](#usage)\n  - [Starting the Services](#starting-the-services)\n  - [Executing Remote Commands](#executing-remote-commands)\n  - [Canceling Remote Commands](#canceling-remote-commands)\n- [Configuration](#configuration)\n- [Troubleshooting](#troubleshooting)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Overview\nRemoteK allows users to send commands (shutdown, restart, etc.) from a mobile app to their computer using a message queue system. The desktop app, built using Electron, listens for these commands and executes them on the user's system. The backend, built on NestJS, handles authentication, command validation, and manages communication between the mobile app and the desktop client. The mobile app, built using React Native, provides an intuitive interface for sending commands.\n\n## Features\n- **Cross-platform Desktop Control**: Supports shutdown and restart commands on Windows, macOS, and Linux.\n- **Mobile Command Center**: Easily manage your computer remotely using the mobile app.\n- **Countdown Timer**: The desktop app displays a countdown, allowing users to cancel the command before it’s executed.\n- **Secure Communication**: JWT-based authentication for secure communication between the app and the backend.\n- **RabbitMQ Integration**: Uses RabbitMQ for reliable and scalable message delivery.\n- **React Native Mobile Interface**: User-friendly mobile interface to control the desktop app.\n\n## Technologies Used\n- **Electron.js**: Cross-platform desktop app framework.\n- **NestJS**: Backend framework for handling authentication, command processing, and RabbitMQ integration.\n- **React Native**: Cross-platform mobile app framework for sending commands.\n- **RabbitMQ**: Message queue for communication between the mobile app and desktop client.\n- **JWT (JsonWebToken)**: Secure token-based authentication.\n- **Bootstrap**: Frontend UI framework for the desktop app.\n\n## Architecture\nRemoteK is structured as a multi-service application:\n- **Backend (NestJS)**: Handles user authentication, manages RabbitMQ queues, and serves as the API for the mobile app.\n- **Desktop Client (Electron)**: Listens for messages from the RabbitMQ queue and executes the received commands on the computer.\n- **Mobile App (React Native)**: Allows users to authenticate and send commands to their computer.\n\n## Setup \u0026 Installation\n\n### Backend (NestJS)\n1. Clone the repository:\n    ```bash\n    git clone https://github.com/your-repo/remotek-backend.git\n    cd remotek-backend\n    ```\n2. Install dependencies:\n    ```bash\n    npm install\n    ```\n3. Set up environment variables in a `.env` file:\n    ```bash\n    MONGO_URI=your-mongodb-uri\n    RABBITMQ_URL=your-rabbitmq-url\n    JWT_SECRET=your-jwt-secret\n    ```\n4. Start the NestJS server:\n    ```bash\n    npm run start:dev\n    ```\n\n### Desktop Client (Electron)\n1. Navigate to the Electron client directory:\n    ```bash\n    cd remotek-electron\n    ```\n2. Install dependencies:\n    ```bash\n    npm install\n    ```\n3. Set up environment variables in a `.env` file:\n    ```bash\n    RABBITMQ_URL=your-rabbitmq-url\n    API_URL=your-backend-url\n    ```\n4. Start the Electron app:\n    ```bash\n    npm start\n    ```\n\n### Mobile App (React Native)\n1. Navigate to the React Native app directory:\n    ```bash\n    cd remotek-mobile\n    ```\n2. Install dependencies:\n    ```bash\n    npm install\n    ```\n3. Set up environment variables in a `.env` file:\n    ```bash\n    EXPO_PUBLIC_API_URL=your-backend-url\n    ```\n4. Start the mobile app (for Android):\n    ```bash\n    npm run android\n    ```\n   For iOS:\n    ```bash\n    npm run ios\n    ```\n\n## Usage\n\n### Starting the Services\n- Ensure that RabbitMQ, the backend, desktop client, and mobile app are all running.\n- Log in through the mobile app to get the JWT token and communicate with the backend.\n- The desktop client listens to commands sent through the RabbitMQ queue.\n\n### Executing Remote Commands\n- On the mobile app, select the action (shutdown, restart) to be sent to the desktop client.\n- Once a command is sent, the desktop app receives it and starts the countdown timer.\n\n### Canceling Remote Commands\n- On the desktop client, a countdown will appear allowing the user to cancel the operation.\n- Click \"Cancel Command\" before the timer ends to stop the shutdown or restart process.\n\n## Configuration\nThe project uses `.env` files for configuration. Below is an example of the variables needed:\n\n**Backend**\n```makefile\nRABBITMQ_URL=amqp://localhost\nJWT_SECRET=your_jwt_secret\n```\n\n## Desktop Client (Electron)\n1. **Navigate to the Electron client directory:**\n    ```bash\n    cd remotek-electron\n    ```\n2. **Install dependencies:**\n    ```bash\n    npm install\n    ```\n3. **Set up environment variables in a `.env` file:**\n    ```env\n    RABBITMQ_URL=amqp://localhost\n    ```\n4. **Start the Electron app:**\n    ```bash\n    npm start\n    ```\n\n## Mobile App (React Native)\n1. **Navigate to the React Native app directory:**\n    ```bash\n    cd remotek-mobile\n    ```\n2. **Install dependencies:**\n    ```bash\n    npm install\n    ```\n3. **Set up environment variables in a `.env` file:**\n    ```env\n    API_URL=http://localhost:3000\n    ```\n4. **Start the mobile app (for Android):**\n    ```bash\n    npm run android\n    ```\n   **For iOS:**\n    ```bash\n    npm run ios\n    ```\n\n## Troubleshooting\n- **RabbitMQ Connection Issues**: Ensure RabbitMQ is running and the `RABBITMQ_URL` is set correctly.\n- **Command Not Executing**: Check if the desktop client is connected to the correct RabbitMQ queue and if the command is properly formatted.\n- **Mobile App Not Connecting**: Verify the API URL in the mobile app’s `.env` file is correct.\n\n## Contributing\nWe welcome contributions! Please follow these steps:\n1. **Fork the repository.**\n2. **Create a new branch for your feature or bug fix:**\n    ```bash\n    git checkout -b feature/my-new-feature\n    ```\n3. **Commit your changes:**\n    ```bash\n    git commit -m \"Add some feature\"\n    ```\n4. **Push to the branch:**\n    ```bash\n    git push origin feature/my-new-feature\n    ```\n5. **Submit a pull request.**\n\n## License\nThis project is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frifatkasikci%2Fremotek","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frifatkasikci%2Fremotek","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frifatkasikci%2Fremotek/lists"}