Skip to content

MoDevIO/UnoSim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

413 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UnoSim

Supported OS GitHub commit activity
Tests Test Coverage
Issues Pull Requests

A web-based Arduino simulator that provides an interactive code editor, compilation and Arduino Preview for Arduino sketches directly in the browser.

Preview

UnoSim Interface UnoSim with Example loaded

UnoSim Arduino Preview

Features

  • 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!

Tech Stack

  • 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

Installation (only for Linux/MacOS)

Prerequisites

  • Node.js (v18 or higher)
  • npm or yarn

Setup

  1. Clone the repository:
git clone https://github.com/MoDevIO/UnoSim.git
cd UnoSim
  1. Install dependencies:
npm install
  1. Start the dev-server:
npm run dev:full

This will start both the backend server and the frontend development server.

Notes for running tests (optional)

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 test

In CI, prefer a dedicated runner with sufficient resources or keep SKIP_LOAD_TESTS off to ensure full coverage of performance-related tests.

License

MIT License - See LICENSE for details

This project uses third-party open-source dependencies. See THIRD_PARTY_LICENSES.txt for details.

Contact & Support

Getting Help

  • Issues & Bugs: Use the GitHub Issues tracker
  • Feature Requests: Create an Pull Request
  • Questions: Open a discussion or check existing issues

Project Maintainers

  • Mo Tiltmann (MoDevIO) - Couven-Gymnasium, Aachen
  • Tom Tiltmann (ttbombadil) - Technische Hochschule, Köln

Additional Resources

Docker

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 --build

The server will be available at http://localhost:3000

About

A browser-based simulator for Arduino Uno

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •