# aamos-ledger-rust En Rust-prototyp för aamos-ledger med följande funktionalitet: ## Funktioner - **Konton (Accounts)** - CRUD för konton med kod, namn och kontotyp - **Verifikat (Journal Entries)** - Bokföringsverifikat med journalrader - **Dubbel bokföring** - Debet/kredit-validering - **Rapporter** - Trial balance (saldoöversikt) - **JWT-autentisering** - Skyddade endpoints ## Teknikstack - **tokio** - Async runtime - **axum** - Web framework - **sqlx** - PostgreSQL-anslutning med compile-time query checking - **serde** - Serialisering - **jsonwebtoken** - JWT-hantering - **tracing** - Logging ## Komma igång ### 1. PostgreSQL ```bash # Skapa databas createdb aamos_ledger ``` ### 2. Miljövariabler ```bash cp .env.example .env # Redigera .env med dina inställningar ``` ### 3. Bygg och kör ```bash cargo run ``` Servern startar på `http://0.0.0.0:3000` ## API Endpoints ### Publika endpoints | Metod | Endpoint | Beskrivning | |-------|----------|-------------| | GET | `/health` | Hälsokontroll | | POST | `/login` | Logga in (username + password) | ### Skyddade endpoints (kräver JWT) | Metod | Endpoint | Beskrivning | |-------|----------|-------------| | GET | `/accounts` | Lista alla konton | | POST | `/accounts` | Skapa nytt konto | | GET | `/accounts/:id` | Hämta konto efter ID | | GET | `/journal-entries` | Lista verifikat | | POST | `/journal-entries` | Skapa nytt verifikat | | GET | `/journal-entries/:id` | Hämta verifikat med rader | | GET | `/trial-balance` | Saldoöversikt | ## Exempelanrop ### Logga in ```bash curl -X POST http://localhost:3000/login \ -H "Content-Type: application/json" \ -d '{"username":"admin","password":"password"}' ``` ### Skapa konto ```bash curl -X POST http://localhost:3000/accounts \ -H "Content-Type: application/json" \ -H "Authorization: Bearer " \ -d '{"code":"7000","name":"Kontorsmaterial","account_type":"Expense"}' ``` ### Skapa verifikat ```bash curl -X POST http://localhost:3000/journal-entries \ -H "Content-Type: application/json" \ -H "Authorization: Bearer " \ -d '{ "entry_number":"V001", "description":"Försäljning kontant", "entry_date":"2025-01-15T00:00:00Z", "lines":[ {"account_id":"","debit":"1000.00","credit":null}, {"account_id":"","debit":null,"credit":"1000.00"} ] }' ``` ### Hämta trial balance ```bash curl http://localhost:3000/trial-balance \ -H "Authorization: Bearer " ``` ## Standardkonton Databasen seedas med svenska BAS-konton: - 1000 Kassa (Tillgång) - 1500 Bankkonto (Tillgång) - 2000 Leverantörsskulder (Skuld) - 2400 Moms skuld (Skuld) - 3000 Försäljning (Intäkt) - 4000 Varukostnad (Kostnad) - 5000 Lönekostnad (Kostnad) - 6000 Hyra (Kostnad)