{"id":49037867,"url":"https://github.com/alipsa/accounting","last_synced_at":"2026-05-21T00:01:34.807Z","repository":{"id":351002191,"uuid":"1205222794","full_name":"Alipsa/accounting","owner":"Alipsa","description":"Bokföringsprogram för små företag","archived":false,"fork":false,"pushed_at":"2026-05-19T11:16:12.000Z","size":5141,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-19T12:07:53.600Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Groovy","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Alipsa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-08T18:54:39.000Z","updated_at":"2026-05-19T11:16:19.000Z","dependencies_parsed_at":"2026-05-21T00:01:18.888Z","dependency_job_id":null,"html_url":"https://github.com/Alipsa/accounting","commit_stats":null,"previous_names":["alipsa/accounting"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/Alipsa/accounting","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alipsa%2Faccounting","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alipsa%2Faccounting/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alipsa%2Faccounting/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alipsa%2Faccounting/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Alipsa","download_url":"https://codeload.github.com/Alipsa/accounting/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alipsa%2Faccounting/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33281294,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-20T15:12:43.734Z","status":"ssl_error","status_checked_at":"2026-05-20T15:12:42.300Z","response_time":356,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-19T13:03:16.205Z","updated_at":"2026-05-21T00:01:34.798Z","avatar_url":"https://github.com/Alipsa.png","language":"Groovy","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003cimg src=\"app/src/main/resources/icons/logo128.png\" alt=\"Alipsa Accounting\" width=\"32\" height=\"32\"\u003e Alipsa Accounting\n\n![Groovy 5.0](https://img.shields.io/badge/Groovy-5.0-blue?logo=apachegroovy)\n![Java 21+](https://img.shields.io/badge/Java-21%2B-orange?logo=openjdk)\n![Gradle 9.4](https://img.shields.io/badge/Gradle-9.4-02303A?logo=gradle)\n![License: MIT](https://img.shields.io/badge/License-MIT-green)\n\nDesktopbaserat bokföringsprogram för små svenska företag.\nByggt med Groovy, Swing och en inbäddad H2-databas — inga externa tjänster behövs.\n\nProgrammet hanterar löpande bokföring, moms, rapporter, SIE-utväxling och årsbokslut.\nDet är inte ett komplett affärssystem — fakturering, lönehantering, bankintegration och årsredovisningsflöden ingår inte.\n\n## Funktioner\n\n- **Flerföretagsstöd** — skapa och växla mellan flera företag i samma installation. Varje företag har egen kontoplan, egna räkenskapsår, nummerserier, hashkedjor och rapportarkiv. Data isoleras fullständigt via `company_id` i datamodellen.\n- **Kontoplan** — BAS-baserad kontoplan med import från Excel och automatisk klassificering. Kontoplanen är företagsspecifik — två företag kan ha samma BAS-kontonummer utan konflikt.\n- **Räkenskapsår och perioder** — skapa år, dela in i perioder och lås perioder när de är klara.\n- **Verifikationer** — registrera, bokför och korrigera verifikationer med bilagor.\n- **Moms** — beräkna, rapportera och bokför momsöverföring per period. Stöder månads-, kvartals- och årsmoms.\n- **Rapporter** — generera verifikationslista, huvudbok, provbalans, resultat- och balansrapport, transaktionsrapport och momsrapport som PDF eller CSV. Rapporter arkiveras med checksumma.\n- **SIE4** — importera och exportera bokföringsdata via SIE4 med dubblettskydd, automatisk import/ersätt-logik och integritetskontroll.\n- **Bokslut** — stäng räkenskapsår med bokslutsverifikation och automatisk generering av nästa års ingående balanser.\n- **Arkivering och radering** — arkivera företag som inte längre ska visas i normalflödet, återställ arkiverade företag och radera företag eller räkenskapsår när bevarandekraven tillåter det.\n- **Kraschsäkra filarkiv** — bilagor och rapportarkiv verifieras vid start, och avbrutna bilageoperationer återställs eller rapporteras tydligt.\n- **Revisionskedja** — alla väsentliga händelser loggas i en hashkedja för spårbarhet.\n- **Uppdateringar och avinstallation** — kontrollera uppdateringar från programmet, installera generiska uppdateringsarkiv och använd plattformsspecifika avinstallationsskript med separata bekräftelser för programfiler och användardata.\n\n### Avgränsningar\n\nFöljande funktioner ingår inte i v1.3.0:\n\n- Fakturering och lön\n- Bankintegration\n- Årsredovisningsflöden\n- Anläggningsregister (planerat till v1.4.0)\n\n## Förutsättningar\n\n- Java 21 eller senare\n\n## Kom igång\n\n```bash\ngit clone https://github.com/Alipsa/accounting.git\ncd accounting\n./gradlew run\n```\n\nApplikationen skapar sin H2-databas automatiskt vid första start.\n\n## Bygg och kör\n\n- `./gradlew build` kör full validering med kompilering, tester, Spotless och CodeNarc.\n- `./gradlew test` kör testsviten.\n- `./gradlew run` startar desktopapplikationen.\n- `./gradlew :app:packageCurrentPlatformRelease` bygger releasepaket för aktuell plattform via `jpackage`.\n- `./gradlew :app:verifyCurrentPlatformRelease` paketerar aktuell plattform och verifierar att launchern kan starta applikationen i ett isolerat hemkatalogsläge.\n\n## Utveckling\n\n### Projektstruktur\n\n```\napp/src/main/groovy/se/alipsa/accounting/\n├── domain/          # domänmodeller\n├── service/         # databas- och affärslogik\n├── ui/              # Swing-paneler och dialoger\n└── support/         # hjälpklasser\n\napp/src/main/resources/\n├── db/migrations/   # SQL-migrationer\n└── reports/         # FreeMarker-mallar för PDF-rapporter\n\napp/src/test/groovy/\n├── unit/            # enhetstester\n├── integration/     # integrationstester\n└── acceptance/      # acceptanstester\n\nreq/                 # kravdokumentation och färdplan\n```\n\n### Kommandon för utvecklare\n\n```bash\n./gradlew build          # kompilering, tester, Spotless och CodeNarc\n./gradlew test           # kör enbart tester\n./gradlew spotlessApply  # auto-formatera kod\n./gradlew spotlessCheck  # kontrollera formatering utan att ändra\n./gradlew codenarcMain   # statisk analys på produktionskod\n```\n\nKör alla kommandon från rotmappen.\n\n### Teknikstack\n\n| Komponent     | Teknologi                               |\n|---------------|-----------------------------------------|\n| Språk         | Groovy (`@CompileStatic`)               |\n| UI            | Swing med flatlaf look and feel         |\n| Databas       | H2 (inbäddad)                           |\n| PDF-rapporter | Alipsa Journo (FreeMarker + HTML → PDF) |\n| SIE-parsning  | Alipsa SieParser                        |\n| Bygg          | Gradle 9.4                              |\n| Kodstil       | Spotless + CodeNarc                     |\n| Tester        | JUnit 6 + groovier-junit                |\n\n## Drift och säkerhet\n\n- Applikationen använder endast embedded H2 i fil-läge.\n- Databasen, bilagor, rapportarkiv, loggar, backups och exporterad dokumentation lagras under applikationskatalogen i användarens profil.\n- Startup-verifiering kontrollerar driftkonfiguration och integritet för hashkedjor, bilagor och rapportarkiv.\n- Känsliga operationer som rapportexport, SIE-export, backup och årsstängning blockerar på kritiska integritetsfel.\n- Bokföringsdata, bilagor och rapportarkiv omfattas av sju års bevarandespärr.\n- Borttagning av räkenskapsår och företag visar förhandsgranskning eller blockerande fel innan data tas bort.\n\n## Backup och restore\n\n- Backupformatet är ZIP med:\n  - H2 `SCRIPT`-dump\n  - `manifest.txt` med schema-version och checksummor\n  - bilagearkiv\n  - rapportarkiv\n- Restore verifierar manifest och checksummor innan data och filarkiv återskapas.\n- Backup och restore kan köras från fliken `System`.\n\n## Dokumentation\n\n- Fliken `System` visar diagnostik, backup/restore och inbyggd systemdokumentation.\n- Hjälpmenyn öppnar användarmanualen från `app/src/main/resources/docs/user-manual.md`.\n\n## AI/MCP och LLM-klienter\n\nAlipsa Accounting kan köras i två lägen:\n\n- **Desktopläge** — standardläget med Swing-gränssnittet.\n- **MCP-läge** — ett headless stdio-läge för LLM-klienter som kan prata Model Context Protocol.\n\nMCP-läget startas med `--mode=mcp` och använder samma lokala H2-databas, samma valideringar och samma affärsregler som desktopappen. Servern exponerar verktyg för bland annat företag, räkenskapsår, konton, verifikationer, rapporter, moms, bokslut samt SIE-import och SIE-export. Den skriver JSON-RPC-svar på stdout; loggar och fel skrivs inte till stdout.\n\nExempel vid utveckling:\n\n```bash\n./gradlew run --args='--mode=mcp'\n```\n\nExempel från en installerad eller uppackad distribution:\n\n```bash\n# Linux/macOS\n/path/to/AlipsaAccounting --mode=mcp\n\n# Windows\nC:\\path\\to\\AlipsaAccounting.exe --mode=mcp\n```\n\nEn LLM CLI, till exempel Claude Code eller Codex, behöver normalt två saker:\n\n1. **MCP-serverkonfiguration** som pekar på Alipsa Accounting-kommandot med argumentet `--mode=mcp`.\n2. **Skill-instruktioner** från `skill/accounting-mcp.md`, som beskriver bokföringsarbetsflöden, bekräftelsekrav och säkerhetsregler för LLM:en.\n\nMCP-servern ger klienten verktygen. Skill-filen styr hur LLM:en bör använda verktygen. Skill-filen installeras inte automatiskt av Claude Code eller Codex; se releaseavsnittet nedan för hur den länkas eller kopieras till respektive klients skill-katalog.\n\n## Release\n\n### Nedladdningar\n\nVarje release publiceras på [GitHub Releases](https://github.com/Alipsa/accounting/releases) med tre användardistributioner och ett generiskt uppdateringsarkiv:\n\n| Fil                                       | Plattform                                                             |\n|-------------------------------------------|-----------------------------------------------------------------------|\n| `alipsa-accounting-\u003cversion\u003e-linux.zip`   | Linux — app-image, install-/avinstallationsskript och `skill/accounting-mcp.md` |\n| `alipsa-accounting-\u003cversion\u003e-windows.zip` | Windows — exe-installerare, cleanup-skript och `skill/accounting-mcp.md`        |\n| `alipsa-accounting-\u003cversion\u003e-macos.zip`   | macOS — `AlipsaAccounting.app`, avinstallationsskript och `skill/accounting-mcp.md` |\n| `app-\u003cversion\u003e.zip`                       | Generiskt arkiv som används av den inbyggda automatiska uppdateraren  |\n\nVarje distributionsfil åtföljs av två verifieringsfiler:\n\n- **`.sha256`** — SHA-256-kontrollsumma. Verifiera att nedladdningen är intakt:\n  ```\n  sha256sum -c alipsa-accounting-\u003cversion\u003e-linux.zip.sha256\n  ```\n- **`.asc`** — GPG-signatur. Verifiera att filen är publicerad av releaseansvarig:\n  ```\n  gpg --verify alipsa-accounting-\u003cversion\u003e-linux.zip.asc alipsa-accounting-\u003cversion\u003e-linux.zip\n  ```\n\nFör vanliga användare räcker det att ladda ner distributionsfilen. Verifieringsfilerna riktar sig till den som vill kontrollera filens integritet och äkthet.\n\n### Artifact verification and signing\n\nReleased artifacts are accompanied by SHA-256 checksum files and GPG signatures so the download can be verified after publication.\n\nThe project does not currently ship platform-trusted code signatures for Windows or notarized/signature-stamped macOS app bundles. Users on those platforms may therefore see the standard unsigned-application warnings from the operating system.\n\n- Committers and reviewers: repository contributors with write access to the project. Public contribution history: [Contributors](https://github.com/Alipsa/accounting/graphs/contributors)\n- Release approvers: project maintainers responsible for publication. Current project home page: [Alipsa/accounting](https://github.com/Alipsa/accounting)\n- Privacy policy: [docs/privacy-policy.md](docs/privacy-policy.md)\n\nThe application stores accounting data locally on the user's system.\n\nThe application does not upload accounting records, attachments, reports, backups, or exported files to project-operated servers.\n\nThe application can perform a background update check against GitHub Releases on startup, and may download release artifacts from GitHub when the user explicitly chooses to install an update. Automatic update checks can be disabled in Settings. See the privacy policy for details.\n\nThe in-app updater uses the generic `app-\u003cversion\u003e.zip` archive and updates the installed jpackage app image in place. Platform release zips are used for fresh installs or manual upgrades.\n\n### Bygga en release\n\nReleasebyggen använder `jpackage` och kräver Java 21 med tillhörande paketeringsverktyg på respektive plattform.\n\n- Linux: `./gradlew :app:packageLinuxReleaseZip`\n- Windows: `./gradlew :app:packageWindowsRelease`\n- macOS: `./gradlew :app:packageMacosRelease`\n- Aktuell plattform: `./gradlew :app:packageCurrentPlatformRelease`\n- Smoke test av aktuell plattform: `./gradlew :app:verifyCurrentPlatformRelease`\n\nOm Gradle hittar fel JDK för jpackage (t.ex. en inbäddad JDK utan jpackage) kan sökvägen sättas explicit:\n\n```\n./gradlew :app:verifyCurrentPlatformRelease -Pjpackage.executable=/path/to/jdk-21/bin/jpackage\n```\n\nByggartefakter skrivs till `app/build/release/` och använder samma appnamn, versionsnummer och ikonuppsättning för alla tre plattformar.\n\nAlla tre plattformsreleaserna producerar ett zip-arkiv som innehåller `skill/accounting-mcp.md`. Linux-arkivet innehåller app-imagen samt `install.sh` och `uninstall.sh`. Windows-arkivet innehåller exe-installeraren med meny- och skrivbordsgenväg samt `uninstall-cleanup.ps1` för valfri borttagning av kvarvarande installationskatalog och användardata. macOS-arkivet innehåller `AlipsaAccounting.app` och `uninstall.command`.\n\nClaude Code och Codex läser inte automatiskt `skill/`-katalogen; extrahera arkivet och länka eller kopiera den till klientens skill-katalog:\n\n```\n# Claude Code\nln -s /path/to/release/skill ~/.claude/skills/accounting\n\n# Codex\nln -s /path/to/release/skill ~/.agents/skills/accounting\n\n# Windows PowerShell, Claude Code\nNew-Item -ItemType Junction -Path \"$HOME\\.claude\\skills\\accounting\" -Target \"C:\\path\\to\\release\\skill\"\n\n# Windows PowerShell, Codex\nNew-Item -ItemType Junction -Path \"$HOME\\.agents\\skills\\accounting\" -Target \"C:\\path\\to\\release\\skill\"\n```\n\nApplikationen använder plattformsspecifika standardvägar för data och loggar:\n\n- Linux: `~/.local/share/alipsa-accounting`\n- Windows: `%APPDATA%\\\\Alipsa\\\\Accounting`\n- macOS: `~/Library/Application Support/AlipsaAccounting`\n\nDatakatalogen är skild från applikationsinstallationen. Det innebär att befintlig data är tillgänglig direkt när en ny version installeras — ingen manuell flytt behövs. På Windows tar avinstallationen av den gamla versionen inte bort `%APPDATA%\\Alipsa\\Accounting`.\n\nAvinstallationsskripten frågar innan de tar bort installationskatalogen och frågar separat innan de tar bort användardata. Standardvalet är att behålla både installation och data om användaren bara trycker Enter.\n\nSignering av Windows-installatör och notarisering/signering av macOS-app är avsiktligt lämnade som framtida release-steg. Nuvarande buildflöde producerar signerbara artefakter men utför inte signering automatiskt.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falipsa%2Faccounting","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falipsa%2Faccounting","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falipsa%2Faccounting/lists"}