Start Here
AxioCNC is a web-based interface for CNC controllers (Grbl, Marlin, Smoothie, TinyG) built on a Node.js/Express backend with a modern React 18 + TypeScript + Vite frontend. The project prioritizes stability and predictability for long-running CNC jobs, with a focus on preventing costly mistakes through careful UI design and reliable G-code execution.
Tech Stack:
- Backend: Node.js 18+, Express.js, Socket.IO, Winston logging
- Frontend: React 18, TypeScript, Vite, Tailwind CSS, shadcn/ui, Redux Toolkit
- Desktop: Electron (bundles server + web frontend)
- Testing: tap (Test Anything Protocol) for server tests
- Build: pnpm workspaces monorepo, Babel (server), Vite (web)
Who This Is For
This documentation is for open-source contributors who want to:
- Fix bugs or add features
- Understand the codebase architecture
- Set up a local development environment
- Submit pull requests
If you're an AxioCNC user looking for installation guides, usage help, or general documentation, go to axiocnc.com/docs. These dev docs are for contributors, not end users.
Quick Links
- Getting Set Up - Clone, install, run locally
- Contributing - PR process and guidelines
- Architecture - System design and mental model
- API Reference - REST API documentation
- Releases - Versioning and release process
Project Principles
1. Stability First
This code controls dangerous machines of people you will never meet.
Bugs can cause:
- Machine crashes (uncontrolled movement)
- Tool breakage
- Workpiece damage
- Personal injury
Protected code areas require extra care when modifying. See Making Changes Safely.
2. Easy Installation
Customers should be able to install and run AxioCNC with minimal friction:
- Native installers for Linux, Windows, macOS
- Raspberry Pi packages (ARM32/ARM64)
- Single command startup
- Clear error messages
3. Intuitive Workflow
The interface should:
- Follow the workflow of most CNC jobs (setup → run → monitor)
- Allow any workflow possible (flexible, not prescriptive)
- Prevent accidental actions (spaced controls, confirmations)
- Provide clear feedback (status, progress, errors)
What's Next?
- Get Set Up - Install dependencies and run the app locally
- Repository Map - Understand the codebase structure
- Day-1 Workflow - Learn the development loop