Desktop decision engine for Indonesian Stock Exchange (IDX) investors.
Built with Go, Wails, Svelte 5, and Tailwind CSS.
Panen ("Harvest" in Bahasa Indonesia) is an open-source desktop application that helps IDX investors make informed buy, hold, and sell decisions with clarity and conviction. It is not a brokerage, social network, or news feed -- it is a focused decision engine that answers two questions:
Install the latest release with a single command:
curl -fsSL https://raw.githubusercontent.com/lugassawan/panen/main/scripts/install.sh | sh
To install a specific version:
PANEN_VERSION=v1.0.0 curl -fsSL https://raw.githubusercontent.com/lugassawan/panen/main/scripts/install.sh | sh
Install locations:
| Platform | Location |
|---|---|
| macOS | /Applications/Panen.app (writable by admin users without sudo) |
| Linux | ~/.local/bin/panen + .desktop + icon (no sudo required) |
Download the latest panen-windows-amd64.zip from the Releases page, extract it, and run panen.exe.
git clone [email protected]:lugassawan/panen.git
cd panen
mise install # Install pinned tool versions
make setup # Install Wails CLI, frontend dependencies, and git hooks
make build # Production build → build/bin/
| Layer | Technology |
|---|---|
| Backend | Go 1.26, Wails v2 |
| Frontend | Svelte 5, TypeScript, Tailwind CSS v4 |
| Database | SQLite (pure-Go, no CGO) |
| Icons | Lucide (lucide-svelte) |
| Fonts | Plus Jakarta Sans, DM Sans, DM Mono (self-hosted WOFF2) |
| Build | Vite 7, pnpm |
| Linting | golangci-lint v2 (custom plugin), Biome v2 |
| Tool versioning | mise |
panen/
├── backend/
│ ├── app.go # Composition root (App struct, Startup, Shutdown)
│ ├── presenter/ # Per-domain handlers, DTOs, converters
│ ├── domain/ # Entities, value objects, repository interfaces
│ ├── usecase/ # Application services (orchestration + validation)
│ └── infra/ # Database, scraper, platform implementations
├── frontend/src/
│ ├── lib/components/ # Reusable UI primitives
│ ├── pages/ # Page components organized by domain
│ ├── i18n/ # Internationalization (en/id translations)
│ └── ... # Stores, types, utilities
├── configs/ # Embedded config files (brokers, indices, sectors)
├── tools/lint/ # Custom golangci-lint plugin (panenlint)
├── docs/ # Documentation and guides
├── scripts/ # Release and install scripts
├── main.go # Wails entry point
└── wails.json # Wails project config
make dev # Start Wails dev server with HMR
make lint # Run Go and frontend linters
make fmt # Auto-format all code
make test # Run all tests (Go + frontend)
make coverage # Generate coverage reports
See CONTRIBUTING.md for the full development guide, including branch conventions, commit format, testing strategy, and how to add data providers or translations.
Licensed under the Apache License, Version 2.0.
"Panen" and the Panen logo are trademarks of Lugas Septiawan. Use of these trademarks in modified versions of this software requires prior written permission.