One source of truth for your IT inventory.
Hardware and network inventory, employee handovers with printable PDF receipts, licenses, mobile lines, vendor contracts and a full audit trail — on your own server, in one Docker command.

From onboarding to return, four steps.
The paper signature stays with you; the digital source of truth lives in ITACM.
Onboarding
Create the employee, reserve a device and line from stock.
Handover
Hardware, line and software in the basket; print a PDF, sign.
Operations
Dashboard alerts, license renewals and contract links.
Offboard
Return, transfer, scrap or sell — recorded in audit.
Your morning control tower
KPIs, recent handovers, EOL warnings and scheduled onboardings at a glance — expiring licenses and low stock in one attention rail.
- Asset states: In Stock, Assigned, Reserved, Repair, Sold…
- A bell and card when an onboarding is due
- Asset distribution and inventory-value charts
Infrastructure, kept out of personal handover
Firewalls, switches, servers and storage are assigned to a site and a responsible person — with interactive dependency topology and rack maps.
- Per-site topology, uplink arrows, cross-site parents
- Rack / U placement with overlap detection
- Management IP, firmware, warranty, linked licenses
Who did we buy from, when does it renew?
MSPs, ISPs and hardware vendors with contacts and support lines; contracts with cost, term and billing cycle — 60-day renewal alerts and a document archive.
- Multi-currency and renewal countdowns
- Per-provider contract and invoice documents
- Public / Confidential access split
Atomic basket, branded PDF receipt
Pick an employee, add devices and/or lines, confirm. One row-locked transaction creates the handover and a printable receipt with your branding.
- Double assignment is impossible — row locks + transaction
- Multiple receipt designs, editable terms
- Reprints keep the original issuer
Data to decide, a trail to trust
20 preset reports plus a custom builder (source × columns × filters) with Excel-friendly CSV, alongside a system-wide, filterable audit timeline.
- Inventory value, lifecycle, procurement trends
- Who did what — timestamped, with related entities
- Secrets are redacted before storage
From the sidebar to the database, one system.
Every module follows the same chain — view → route → service → table — all behind role-based access.
Dashboard
KPIs, alerts, distribution, activity.
Hardware
QR, cost & warranty, lifecycle, search.
Network & Server
Topology, rack cabinets, location + owner.
Product Catalog
Brands, categories, lifecycle, specs.
Software & Licenses
Seat pools, atomic claim, expiry alerts.
Mobile Lines
SIM and number inventory with history.
Providers & Contracts
Vendors, renewal tracking, documents.
Consumables
Stock movements, low-stock alerts.
Employees
Detail, onboarding and offboarding.
Handover
Atomic basket and printable receipts.
Maintenance
Send to repair, return, scrap — with docs.
Stock Count
Camera-scan physical counts and reconcile.
Reports
20 presets plus builder, CSV and letterhead.
Audit Log
Unified, filterable activity timeline.
IT Users
RBAC — create, role, disable, delete.

Manage from the floor, too.
No separate mobile app — the whole UI is responsive, with bottom navigation, a center QR-scan button and camera barcode/QR reading.
- →Bottom navigation and camera scanner
- →Start a count on the PC, keep scanning on the phone
- →Wide tables turn into cards on the phone
One command to run, your data to keep.
Code is baked into the image — no build step. Everything lives in PostgreSQL, so one backup covers the whole system.
Role-based access
Owner / Admin / Helpdesk / Viewer — enforced on every endpoint, re-checked each request.
Hardened
JWT (pinned algorithm) + bcrypt, magic-byte upload checks, strict CSP, rate limits, 0-CVE tree.
Full audit trail
Every mutation is written to the audit log; secrets are redacted.
Single-dump backup
Everything, including the document archive, is in PostgreSQL. No cloud lock-in, no telemetry.
# clone, generate secrets, boot git clone https://github.com/enesyaks/ITACM.git cd ITACM && docker compose up -d --build # → http://localhost:8000 (onboarding wizard) # full backup (DB + documents): docker compose exec api npm run migrate:export