From 80cb3357d709b80d332795aee432757b6dcc9aed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dalibor=20Markovi=C4=87?= Date: Mon, 1 Jun 2026 20:12:24 +0200 Subject: [PATCH] Update Readme.md --- Readme.md | 141 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) diff --git a/Readme.md b/Readme.md index 8b13789..293b977 100644 --- a/Readme.md +++ b/Readme.md @@ -1 +1,142 @@ +# NTech +Poslovna aplikacija za upravljanje servisom računara, magacinom delova i prodajom. Napravljena u Go-u, radi u brauzeru, ne zahteva internet vezu ni eksterne servise. + +> ⚠️ Projekat je u aktivnom razvoju. Nije spreman za produkcijsku upotrebu. + +--- + +## O projektu + +NTech je interna aplikacija napravljena za konkretnog korisnika — servis računara koji pored popravki vodi i magacin delova, prodaju komponenti i gotovih konfiguracija, te evidenciju klijenata i dobavljača. + +Cilj je jednostavan: sve što servis treba da prati nalazi se na jednom mestu, bez oslanjanja na tabele u Excelu ili papirnu evidenciju. + +--- + +## Funkcionalnosti + +### Implementirano + +- Inicijalno podešavanje pri prvom pokretanju (setup wizard) +- Sistem migracija baze podataka +- Osnovna struktura baze: artikli, kategorije, klijenti, dobavljači, servisni nalozi, prodajni nalozi, podsetnici + +### U razvoju + +- Korisničko sučelje — sidebar navigacija, sistem tema, dashboard +- Magacin — praćenje stanja delova, lokacija, količina +- Servisni nalozi — prijem, dijagnostika, statusna traka, cene +- Prodajni nalozi — stavke, obračun, evidencija kupaca +- Klijenti i dobavljači — baza kontakata, istorija + +### Planirano + +- Prijava korisnika — sesije, zaključavanje naloga +- Dvofaktorska autentifikacija (TOTP) +- Izveštaji — prodaja, stanje magacina, prihodi +- Podrška za PostgreSQL (za višekorisničko okruženje) +- Obaveštenja (e-pošta / WhatsApp) — odloženo za kasniju fazu +- Skeniranje barkodova putem kamere — odloženo za kasniju fazu + +--- + +## Tehnologije + +| Tehnologija | Uloga | +| ------------------------------------------------------------------------------------ | -------------------------------- | +| [Go](https://go.dev) | backend jezik | +| [chi](https://github.com/go-chi/chi) | HTTP ruter | +| [html/template](https://pkg.go.dev/html/template) | serverski šabloni | +| [HTMX](https://htmx.org) | interaktivnost bez build procesa | +| [TailwindCSS](https://tailwindcss.com) | stilizovanje | +| [Alpine.js](https://alpinejs.dev) | UI logika na strani klijenta | +| [SQLite](https://sqlite.org) + [modernc.org/sqlite](https://gitlab.com/cznic/sqlite) | glavna baza (čisti Go, bez CGO) | +| [PostgreSQL](https://www.postgresql.org) + [pgx/v5](https://github.com/jackc/pgx) | opciona baza za produkciju | + +--- + +## Pokretanje + +### Zahtevi + +- Go 1.22 ili noviji +- Git + +### Koraci + +```bash +# 1. Kloniranje repozitorijuma +git clone +cd GoNtech + +# 2. Kopiranje i popunjavanje .env fajla +cp .env.example .env +# Otvori .env i postavi vrednosti (videti tabelu ispod) + +# 3. Pokretanje u razvojnom okruženju +go run ./cmd/ntech +``` + +Program se otvara na `http://localhost:8080`. + +Pri prvom pokretanju automatski se pokreće setup wizard. + +### Produkcioni build + +```bash +CGO_ENABLED=0 go build -o ntech ./cmd/ntech +./ntech +``` + +Rezultat je jedan statički binarni fajl bez zavisnosti. + +--- + +## Promenljive okruženja + +Kopirati `.env.example` u `.env` i popuniti vrednosti. Fajl `.env` se **ne commituje** u Git. + +| Promenljiva | Podrazumevano | Opis | +| -------------- | ------------- | -------------------------------------------- | +| `NTECH_ENV` | `development` | Okruženje: `development` ili `production` | +| `NTECH_PORT` | `8080` | HTTP port | +| `NTECH_DB` | `sqlite` | Tip baze: `sqlite` ili `postgres` | +| `NTECH_SQLITE` | `ntech.db` | Putanja do SQLite fajla | +| `NTECH_DSN` | — | PostgreSQL connection string | +| `NTECH_SECRET` | — | Ključ za potpisivanje sesija (min. 32 bajta) | + +--- + +## Struktura projekta + +``` +ntech/ +├── cmd/ +│ └── ntech/ # ulazna tačka programa +├── internal/ +│ ├── auth/ # prijava, sesije, 2FA +│ ├── config/ # podešavanja, setup wizard +│ ├── db/ # sloj baze podataka +│ │ ├── sqlite/ # SQLite implementacija +│ │ └── postgres/ # PostgreSQL implementacija +│ ├── handler/ # HTTP handleri +│ ├── middleware/ # autentifikacija, logovanje, ograničavanje zahteva +│ └── model/ # zajednički tipovi podataka +├── web/ +│ ├── static/ # CSS, JavaScript, slike +│ └── templates/ # HTML šabloni +├── migrations/ # SQL migracije (001_opis.sql, 002_opis.sql, ...) +├── .env.example # primer konfiguracije +├── go.mod +└── go.sum +``` + +--- + +## Licenca + +© 2026 Dalibor Marković + +Slobodno korišćenje i modifikovanje za lične i nekomercijalnu svrhe. +Za komercijalnu upotrebu obavezno kontaktirati autora.