A web-based Arduino simulator that provides an interactive code editor, compilation and Arduino Preview for Arduino sketches directly in the browser.
- Code Editor: Monaco editor integration for writing Arduino sketches with syntax highlighting
- Compilation: Compile Arduino code directly in the browser
- Serial Monitor: Real-time output display from simulated Arduino execution
- Pause/Resume Simulation: Pause running sketches to inspect state, change pin values, and resume execution
- Arduino Preview: A preview of analog/digital inputs and outputs directly in the Arduino SVG
- Web-based: No installation required, run entirely in the browser
- Modern UI: Built with React and TailwindCSS for a responsive, professional interface
- I/O Registry: You can see what Pins are used in your Program!
- Frontend: React, TypeScript, Vite, TailwindCSS, Radix UI
- Backend: Node.js (TypeScript), Express, WebSocket support
- Editor: Monaco Editor
- Testing: Vitest with React Testing Library
- Build Tools: Vite, esbuild
- Node.js (v18 or higher)
- npm or yarn
- Clone the repository:
git clone https://github.com/MoDevIO/UnoSim.git
cd UnoSim- Install dependencies:
npm install- Start the dev-server:
npm run dev:fullThis will start both the backend server and the frontend development server.
Some integration/load tests in tests/server/* run heavier scenarios and may fail on
low-resource machines or CI runners with limited CPU. To avoid flaky failures when
running the full test-suite locally, you can skip the large load tests by setting
the environment variable SKIP_LOAD_TESTS=1.
Example (local quick-check):
SKIP_LOAD_TESTS=1 npm testIn CI, prefer a dedicated runner with sufficient resources or keep SKIP_LOAD_TESTS
off to ensure full coverage of performance-related tests.
MIT License - See LICENSE for details
This project uses third-party open-source dependencies. See THIRD_PARTY_LICENSES.txt for details.
- Issues & Bugs: Use the GitHub Issues tracker
- Feature Requests: Create an Pull Request
- Questions: Open a discussion or check existing issues
- Mo Tiltmann (MoDevIO) - Couven-Gymnasium, Aachen
- Tom Tiltmann (ttbombadil) - Technische Hochschule, Köln
This repository includes a Dockerfile that builds the project using Node.js v25.2.1.
- Build the image:
docker build -t unowebsim:latest .- Run the container (exposes port 3000):
docker run --rm -p 3000:3000 -e NODE_ENV=production unowebsim:latest- Alternatively use docker-compose:
docker-compose up --buildThe server will be available at http://localhost:3000


