A faithful web-based simulator for the Electronica EL400 (a.k.a. MagXact MX-100M) digital readout (DRO) system.
This project recreates the behavior and interface of the EL400/MX-100M DRO with modern web technologies, focusing on accessibility and accurate reproduction of the original hardware's functionality.
- Framework: Next.js 15 with App Router
- Language: TypeScript (strict mode)
- Styling: Tailwind CSS 4
- State Management: Zustand
- Animations: Framer Motion
- UI Components: Radix UI primitives
- Testing: Vitest (unit), Playwright (E2E), Storybook (components)
- Accessibility: axe-core integration
- Node.js 18+
- npm or yarn
# Install dependencies
npm install
# Start development server
npm run dev
# Run tests
npm test
# Run E2E tests
npm run test:e2e
# Start Storybook
npm run storybook
Open http://localhost:3000 to view the simulator.
src/
├── app/ # Next.js app router pages
├── components/ # React components
├── hooks/ # Custom React hooks
├── types/ # TypeScript type definitions
├── utils/ # Utility functions
└── test/ # Test setup and utilities
docs/
├── manuals/ # DRO operation manuals (PDFs)
└── specifications/ # Derived behavior specs
e2e/ # Playwright E2E tests
.storybook/ # Storybook configuration
npm run dev
- Start development server with Turbopacknpm run build
- Build for productionnpm run lint
- Run ESLintnpm test
- Run unit tests with Vitestnpm run test:ui
- Run tests with UInpm run test:e2e
- Run Playwright E2E testsnpm run storybook
- Start Storybook server
- Unit Tests: Component logic and utilities
- Integration Tests: Component interactions
- E2E Tests: Full DRO workflows and user journeys
- Visual Tests: Storybook for component documentation
- Accessibility Tests: Automated a11y testing
The simulator behavior is based on official manuals:
- Follow existing code conventions
- Write tests for new features
- Ensure accessibility compliance
- Update documentation as needed
MIT License - see LICENSE file for details