Federal / Armasuisse / Domain application
Solo-EntwicklungELO Shot Count Reporting
Progressive Web App that digitises shooting range management for the Swiss Armed Forces: recruits report shot counts directly from their smartphone, while management monitors, analyses and reports in real time.
- Angular
- NestJS
- Nx
- TypeORM
- MySQL
- PWA

Context
For years, managing shot counts at military shooting ranges relied on manual processes: paper forms, lists and sometimes isolated spreadsheets. The data then had to be transferred and consolidated by hand. This was error-prone, time-consuming and gave management only a delayed picture of how heavily a range was actually being used. There was no reliable, up-to-date data basis for maintenance planning, ammunition management and reporting to higher authorities.
The need for a digital solution was recognised. On behalf of armasuisse and the Defence Group (ALC-O), ELO Shot Count Reporting was created: a modern application that rethinks the recording and management of shot counts from the ground up.
Challenge
A military project comes with its own constraints. The solution had to be immediately understandable for recruits with no training, run on any device, work reliably even with poor network coverage and meet the federal government's high requirements for security, data protection and traceability. At the same time, range management needed a tool that does not just collect data but turns it into a basis for decisions.
Solution
We developed a Progressive Web App that serves two very different user groups.
For recruits and cadre, reporting is reduced to a few steps: select the range, enter weapon and shot count, submit. The interface is designed mobile-first throughout and can be installed on the device like a native app. Thanks to offline capability, reports are cached locally and synchronised automatically once a connection is available again.
For range management, an administration interface consolidates all reports in one place:
- Dashboards showing utilisation and trends per range, period and unit
- Flexibly filterable reports with export
- Master data such as ranges, weapon types and permissions maintained directly in the application
- Roles and permissions so that every person only sees and edits the data relevant to them
Implementation
To build a scalable and maintainable system, we rely on a clearly structured technology architecture:
- Backend: Node.js with NestJS for a modular, testable and scalable API. Role-based access control and full traceability of every report are built into the architecture.
- Database: TypeORM with MySQL for reliable relational data storage with versioned migrations.
- Frontend: Angular as a Progressive Web App, installable on any device, with offline support and automatic synchronisation. Responsive and built with accessibility in mind.
- Monorepo: Nx brings frontend, backend and shared libraries together in a single repository. Data models and validation rules are shared between client and server, which ensures consistency and significantly speeds up development.
The PWA was developed with a user-centred approach so that recruits can enter their shot counts quickly and effortlessly, while administrators access and analyse data in real time. Security, usability and performance are the focus in order to meet the needs of both the troops and management.
Result
Paper logs and manual transfers are gone entirely. Shot counts are available centrally and ready for analysis the moment they are reported, which improves data quality and gives management an up-to-date basis for maintenance planning, ammunition management and reporting. For recruits, reporting takes seconds and needs no training. This digital transformation delivers greater accuracy, efficiency and accessibility and noticeably improves the entire experience on the shooting range.