{"id":48595048,"url":"https://github.com/lugassawan/panen","last_synced_at":"2026-04-08T20:59:53.971Z","repository":{"id":343055142,"uuid":"1169866771","full_name":"lugassawan/panen","owner":"lugassawan","description":"Desktop decision engine for Indonesian Stock Exchange (IDX) investors. Stock valuation, dividend tracking, portfolio management, and crash playbooks. Built with Go, Wails, Svelte.","archived":false,"fork":false,"pushed_at":"2026-03-16T08:35:46.000Z","size":1384,"stargazers_count":1,"open_issues_count":26,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-08T20:59:49.291Z","etag":null,"topics":["desktop-app","dividend-investing","finance","golang","idx","indonesia","investment","portfolio-management","stock-market","stock-valuation","svelte","wails"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lugassawan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":null,"dco":null,"cla":null}},"created_at":"2026-03-01T10:49:14.000Z","updated_at":"2026-03-13T00:54:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/lugassawan/panen","commit_stats":null,"previous_names":["lugassawan/panen"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/lugassawan/panen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lugassawan%2Fpanen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lugassawan%2Fpanen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lugassawan%2Fpanen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lugassawan%2Fpanen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lugassawan","download_url":"https://codeload.github.com/lugassawan/panen/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lugassawan%2Fpanen/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31573788,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["desktop-app","dividend-investing","finance","golang","idx","indonesia","investment","portfolio-management","stock-market","stock-valuation","svelte","wails"],"created_at":"2026-04-08T20:59:52.054Z","updated_at":"2026-04-08T20:59:53.963Z","avatar_url":"https://github.com/lugassawan.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"build/assets/logo-dark.svg\" /\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"build/assets/logo-light.svg\" /\u003e\n    \u003cimg src=\"build/assets/logo-light.svg\" alt=\"Panen\" height=\"80\" /\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Desktop decision engine for Indonesian Stock Exchange (IDX) investors.\n  \u003cbr /\u003e\n  Built with Go, Wails, Svelte 5, and Tailwind CSS.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-Apache_2.0-blue.svg\" alt=\"License: Apache 2.0\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/lugassawan/panen/actions\"\u003e\u003cimg src=\"https://github.com/lugassawan/panen/actions/workflows/test.yml/badge.svg\" alt=\"CI\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## What is Panen?\n\nPanen (\"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:\n\n- **\"I have capital. Which IDX stocks should I buy, and when?\"**\n- **\"I already own stocks. Should I keep, sell, or rebalance?\"**\n\n### Key Features\n\n- **Two investment modes** -- Value (capital growth) and Dividend (passive income), each with distinct workflows and metrics\n- **Valuation models** -- Graham Number, PBV bands, PER bands with configurable margin of safety\n- **Risk profiles** -- Conservative, Moderate, and Aggressive parameters per portfolio\n- **Crash playbook** -- Pre-built entry plans for market downturns, prepared during calm markets\n- **Monthly payday assistant** -- Capital addition scheduling with smart deployment suggestions\n- **Conviction checklists** -- Auto and manual checks that gate buy/sell suggestions\n- **Trailing stop suggestions** -- Exit strategy guidance for Value Mode holdings\n- **Stock screener** -- Filter and rank stocks by valuation, dividends, and fundamentals\n- **Dividend calendar** -- Track ex-dates and projected income\n- **Fundamental change alerts** -- Detect and flag significant changes in stock fundamentals\n- **Pluggable data providers** -- Yahoo Finance (primary) and IDX (secondary), with community-extensible provider interface\n- **Export/Import** -- Full data portability for backup and device migration\n- **Internationalization** -- English and Bahasa Indonesia\n- **Light and dark themes** -- System-aware with manual override\n- **Local-first and private** -- All data on your device, no accounts, no telemetry, no server\n\n## Installation\n\n### macOS and Linux\n\nInstall the latest release with a single command:\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/lugassawan/panen/main/scripts/install.sh | sh\n```\n\nTo install a specific version:\n\n```sh\nPANEN_VERSION=v1.0.0 curl -fsSL https://raw.githubusercontent.com/lugassawan/panen/main/scripts/install.sh | sh\n```\n\n**Install locations:**\n\n| Platform | Location |\n|----------|----------|\n| macOS | `/Applications/Panen.app` (writable by admin users without sudo) |\n| Linux | `~/.local/bin/panen` + `.desktop` + icon (no sudo required) |\n\n### Windows\n\nDownload the latest `panen-windows-amd64.zip` from the [Releases](https://github.com/lugassawan/panen/releases) page, extract it, and run `panen.exe`.\n\n### Building from Source\n\n#### Prerequisites\n\n- [mise](https://mise.jdx.dev) -- manages Go, Node.js, pnpm, and other tool versions\n- [Wails CLI](https://wails.io/docs/gettingstarted/installation)\n\n#### Build\n\n```sh\ngit clone git@github.com:lugassawan/panen.git\ncd panen\nmise install         # Install pinned tool versions\nmake setup           # Install Wails CLI, frontend dependencies, and git hooks\nmake build           # Production build → build/bin/\n```\n\n## Tech Stack\n\n| Layer | Technology |\n|-------|-----------|\n| Backend | Go 1.26, Wails v2 |\n| Frontend | Svelte 5, TypeScript, Tailwind CSS v4 |\n| Database | SQLite (pure-Go, no CGO) |\n| Icons | Lucide (lucide-svelte) |\n| Fonts | Plus Jakarta Sans, DM Sans, DM Mono (self-hosted WOFF2) |\n| Build | Vite 7, pnpm |\n| Linting | golangci-lint v2 (custom plugin), Biome v2 |\n| Tool versioning | mise |\n\n## Project Structure\n\n```\npanen/\n├── backend/\n│   ├── app.go           # Composition root (App struct, Startup, Shutdown)\n│   ├── presenter/       # Per-domain handlers, DTOs, converters\n│   ├── domain/          # Entities, value objects, repository interfaces\n│   ├── usecase/         # Application services (orchestration + validation)\n│   └── infra/           # Database, scraper, platform implementations\n├── frontend/src/\n│   ├── lib/components/  # Reusable UI primitives\n│   ├── pages/           # Page components organized by domain\n│   ├── i18n/            # Internationalization (en/id translations)\n│   └── ...              # Stores, types, utilities\n├── configs/             # Embedded config files (brokers, indices, sectors)\n├── tools/lint/          # Custom golangci-lint plugin (panenlint)\n├── docs/                # Documentation and guides\n├── scripts/             # Release and install scripts\n├── main.go              # Wails entry point\n└── wails.json           # Wails project config\n```\n\n## Development\n\n```sh\nmake dev               # Start Wails dev server with HMR\nmake lint              # Run Go and frontend linters\nmake fmt               # Auto-format all code\nmake test              # Run all tests (Go + frontend)\nmake coverage          # Generate coverage reports\n```\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for the full development guide, including branch conventions, commit format, testing strategy, and how to add data providers or translations.\n\n## Documentation\n\n- [Getting Started](docs/getting-started.md) -- First launch, creating brokerages and portfolios\n- [Portfolio Management](docs/portfolio-management.md) -- Value vs. Dividend modes, holdings, and workflows\n- [Valuation Models](docs/valuation-models.md) -- Graham Number, PBV/PER bands, margin of safety\n- [Risk Profiles](docs/risk-profiles.md) -- Conservative, Moderate, and Aggressive parameters\n- [Crash Playbook](docs/crash-playbook.md) -- Building and using crash playbooks\n- [Design System](docs/design-system.md) -- Tokens, theming, and component reference\n\n## License\n\nLicensed under the [Apache License, Version 2.0](LICENSE).\n\n## Trademark Notice\n\n\"Panen\" and the Panen logo are trademarks of Lugas Septiawan. Use of these trademarks in modified versions of this software requires prior written permission.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flugassawan%2Fpanen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flugassawan%2Fpanen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flugassawan%2Fpanen/lists"}