125fc4772afadac5115550f4675dbd6e595c4feb
Auto-backup i čišćenje sesija/pokušaja su koristili originalni db handle iz main.go, koji posle obnove backupa (VratiBackup) ostaje zatvoren — gorutine bi prestale da rade do restarta. Sada rade preko novog helpera h.SaBazom, koji pod deljenim zaključavanjem prosleđuje trenutnu h.DB, pa vide zamenjenu konekciju. Gorutine su premeštene da startuju posle kreiranja h. time.Sleep je van zaključavanja da ne odlaže obnovu.
NTech
A business application for computer repair shop management, parts inventory tracking, and sales. Built with Go, it runs in the browser and requires no internet connection or external services.
⚠️ The project is under active development. It is not ready for production use.
About the Project
NTech is an internal application built for a specific user — a computer repair shop that, in addition to repairs, manages a parts inventory, sales of components and pre-built configurations, as well as client and supplier records.
The goal is simple: everything the repair shop needs to track is located in one place, without relying on Excel spreadsheets or paper records.
Features
Implemented
- Initial setup on first run (setup wizard)
- Database migration system
- User interface — sidebar navigation, theme system (dark/light), dashboard with statistics
- User login — server-side sessions, account locking
- Two-factor authentication (TOTP) — activation with a QR code, backup codes
- Brute-force protection — IP locking after 5 failed attempts within 15 minutes
- CSRF protection — double-submit cookie pattern, automatic token injection into all forms
- Security HTTP headers (CSP, X-Frame-Options, Referrer-Policy, nosniff...)
- Login attempt logging — history by user, IP, reason, date
- Users and roles — admin panel, user management
- Inventory — items, categories, filtering, critical stock levels
- Service orders — intake, status bar, costs, receipt
- Sales orders — items, calculation, receipt with company and client details
- Procurement — records of purchases from suppliers
- Clients and suppliers — contact database
- Reminders — records with deadlines
- Reports — revenue overview, inventory status
- Settings — company name, address, Tax ID (PIB), logo; theme toggle
- Background images — login page and app, with blur, transparency and glass effect
- Personal theme and background — each user can set their own theme and background image
- Permission matrix (RBAC) — admin panel for setting permissions by role
- Flash messages — one-time feedback after an action
- Automatic SQLite backup — with configurable number of retained copies
- Charts — monthly revenue on reports (Chart.js)
Planned
- Fiscalization and VAT calculation (specification in Project.md)
- PostgreSQL support (for multi-user environments)
- WebAuthn / Passkey login (database schema is already prepared)
- Notifications (email / WhatsApp) — deferred to a later phase
- Barcode scanning via camera — deferred to a later phase
Technologies
| Technology | Role |
|---|---|
| Go | backend language |
| chi | HTTP router |
| html/template | server-side templates |
| Alpine.js | client-side UI logic |
| SQLite + modernc.org/sqlite | main database (pure Go, no CGO) |
| PostgreSQL + pgx/v5 | optional production database |
Running the Application
Requirements
- Go 1.24 or newer
- Git
Steps
# 1. Clone the repository
git clone <repository-url>
cd GoNtech
# 2. Copy the configuration file
cp ntech.env.example ntech.env
# Open ntech.env and set the values (see the table below)
# 3. Load environment variables and run in the development environment
export $(grep -v '^#' ntech.env | xargs)
go run ./cmd/ntech
Description
Servisni informacioni sistem za upravljanje servisom, magacinom i prodajom. Go + SQLite, jedan binarni fajl.
https://demo.vm-net.in.rs
Languages
HTML
47.6%
Go
46.1%
CSS
3.7%
JavaScript
2%
Shell
0.6%