InvestAnalyzer

InvestAnalyzer · lokalnie, bez chmury

Twój portfel.
Przejrzysty PIT-38.

Lokalna aplikacja dla Windows, która łączy portfel inwestora z deterministycznym kalkulatorem PIT-38 na podstawie plików brokera. Portfel, notowania i alerty działają też jako aplikacja na telefon (PWA) w przeglądarce.

WindowsSilnik FIFOKursy NBP T-1Tauri + React + PythonPWA na telefon

PWA: portfel w przeglądarce. Rozliczenie PIT-38 wymaga wersji Windows lub lokalnego serwera z silnikiem Python.

Podgląd aplikacji: portfel inwestora z syntetycznymi aktywami
Rzeczywisty interfejs aplikacji · dane syntetyczne

Każda kwota ma ślad dowodowy.

Plik→ Kurs NBP→ Partia FIFO→ Wyliczenie→ Podstawa prawna

Interfejs pokazuje wynik. Silnik Python liczy podatek. Rozliczenie z plików nie wymaga klucza API brokera.

Poznaj projekt Strona projektu · stan na

01 / Od wyciągu do zeznania

Problem i rozwiązanie

Wyciąg zagranicznego brokera nie zastępuje rozliczenia w Polsce.

NBP T-1

Przeliczenie na złote

Przychody i koszty wymagają właściwego kursu. Silnik wybiera tabelę A z ostatniego dnia roboczego przed przychodem lub kosztem. Najpierw czyta lokalne CSV; brakujące kursy pobiera z NBP, jeśli fallback jest włączony.

FIFO i koszty

Historia nabycia

Sprzedaż trzeba połączyć z zakupem. Silnik przypisuje najstarsze partie, także z historii wieloletniej, i oblicza koszty oraz dochód lub stratę. Sprzedaż ponad zapisany stan blokuje gotowość rozliczenia.

Podatek u źródła / PIT-ZG

Dywidendy zagraniczne

Silnik uwzględnia podatek zapłacony za granicą i dopłatę do 19% w Polsce. Odliczenie nie przekracza polskiego podatku od tego dochodu. Pakiet PIT-38/PIT-ZG i eksport do e-PIT pomagają przenieść sprawdzony wynik do zeznania.

02 / W środku aplikacji

Zrzuty ekranu

Dane syntetyczne we wszystkich widokach.

03 / Architektura

Jak to działa

Ten sam interfejs, oddzielny silnik podatkowy.

01 / Interfejs

UI React / Vite

Prezentacja danych. Interfejs nie liczy podatku.

02 / Runtime

Express / Tauri

Serwer Express w web/dev. Powłoka Tauri w produkcyjnym desktopie, bez portu HTTP.

03 / Obliczenia

Python / PyInstaller

Sidecar onedir. Kontrakt JSON, FIFO, kursy NBP i PIT-38.

04 / Dane

Pliki na dysku

Dokumenty brokera, raporty, XLSX, JSON i pakiet PIT-38.

Local-first

Pliki i wyniki pozostają na dysku. Silnik uzupełnia przez sieć tylko kursy NBP; notowania i integracje rachunków korzystają z zewnętrznych API.

Deterministyczny silnik

Matematyka finansowa używa decimal.Decimal. Logika PIT, FIFO i NBP mieszka wyłącznie w silnik/python/.

Ślad dowodowy

Wynik łączy dokument, kurs, partię i wyliczenie. Brak kursu, historii nabycia albo kompletnego wejścia blokuje uznanie wyniku za gotowy do złożenia.

Dane poza repo

Pliki brokera, wyniki, kopie i logi pozostają poza kontrolą wersji. Bramka assert:no-private-data sprawdza pliki śledzone przez git.

Kiedy rozliczenie wymaga uzupełnienia?

Silnik blokuje gotowość do złożenia przy braku kursu NBP, sprzedaży ponad stan FIFO, konflikcie wyciągów, niekompletnym wejściu albo kategorii wejściowej bez śladu w wyniku. Wynik ma wtedy status CALCULATION_BLOCKED i filing_ready: false.

Ręczne korekty, rozstrzygnięcia dowodowe i zamknięcia roku zapisują decyzje użytkownika. Kopie decyzji można przywrócić lub przenieść na inny komputer.

04 / Weryfikacja projektu

Jakość

Ostatnie zapisane wyniki z README, stan na 2026-10-01. Daty sprawdzeń podano poniżej.

990TS / serwer · PASS2026-10-01
904Python · PASS2026-09-30
110Rust · PASS2026-09-30
Bramki i ostatnie zapisane wyniki weryfikacji
BramkaWynikData sprawdzenia
lintPASS · kontrola typów2026-10-01
Testy TS / serwera990 PASS2026-10-01
Testy Python904 PASS2026-09-30
Testy Rust110 PASS2026-09-30
perf:bundlePASS · początkowy JS 464,9 kB / próg 500 kB2026-10-01
assert:no-private-dataPASS · kontrola danych prywatnych2026-10-01

Ostatni pełny npm run verify: 2026-09-30; tego dnia potwierdzono również testy Rust. Testów Python i Rust nie powtarzano 2026-10-01. Zielone testy nie zastępują sprawdzenia rozliczenia z dokumentami.

05 / Rozwój projektu

Dziennik

Wpisy z docs/dziennik-zmian.md.

  1. Układ dopracowany na telefonie

    Zmniejszono nagłówki i odstępy na wąskich ekranach. Akcje PIT-38 i rejestru transakcji mają układ w dwóch kolumnach, a filtry pozycji zajmują pełną szerokość. Sprawdzono portfel, wykresy i alerty na telefonie.

  2. Portfel w przeglądarce

    W hostingu pozycje portfela liczy przeglądarka: FIFO i koszt w PLN po kursach NBP T-1. Kwoty PIT-38 pozostają nieobliczone. Uproszczono informacje o wersji na telefon i ukryto panele wymagające lokalnego silnika lub integracji brokera.

  3. Aplikacja online jako PWA

    Dodano wersję na telefon i przeglądarkę, instalację na ekranie głównym oraz API notowań i kursów. Hosting działa na Cloudflare Workers w planie darmowym, bez bazy danych.

  4. Strona projektu i wydanie Windows

    Opublikowano statyczną stronę projektu ze zrzutami na danych syntetycznych. Przygotowano wydanie przenośne, sprawdzono paczkę i silnik oraz potwierdzono bramki jakości i ochrony danych.

Wcześniejsze podsumowania zmian
  1. Zamknięcie punktów do decyzji

    Dodano panel kwarantanny, zgodę na odzyskiwanie bez kompletnej kopii i ponowienie doczytania widoków. Zmniejszono pakiet startowy oraz zabezpieczono odczyt wadliwych wpisów i dane użytkownika przy usuwaniu pozostałości demo.

  2. Poprawki po przeglądzie

    Poprawiono przepełnienia alertów, portfela i wykresów oraz neutralny stan wyniku PIT-38. Komunikaty odzyskiwania wskazują etap błędu i identyfikator zapisanej kopii.

  3. Wznowienie dopracowania wyglądu

    Ograniczono szerokość wyszukiwarki wykresów i filtrów alertów. Długie nazwy rachunków zawijają się w kartach; sprawdzono także wąski ekran blokady dostępu.

  4. Spójny wygląd i odzyskiwanie po błędzie

    Ujednolicono portfel i PIT-38 w obu motywach. Okna otrzymały anulowalny stan oczekiwania i obsługę błędu, a odzyskiwanie zabezpieczono kopią i lokalną kwarantanną.

  5. Obsługa i motyw PIT-38

    Poprawiono kolory panelu rozliczenia i zerowanie przewijania przy zmianie zakładki. Odczyt preferencji odrzuca wadliwe wartości, a dodawanie tickera blokuje równoległe wysłania; pełny verify zakończył się powodzeniem.

06 / Wybierz swoją wersję

Szybki start

Aplikacja na telefon w przeglądarce. Wersja przenośna dla użytkownika Windows. Repozytorium dla programisty.

Telefon / przeglądarka

Telefon i przeglądarka (PWA)

Otwórz investanalyzer-app.dismonder.workers.dev i dodaj do ekranu głównego („Zainstaluj aplikację” w Chrome, „Dodaj do ekranu początkowego” w Safari). Działają portfel, notowania na żywo, wykresy i alerty; dane portfela zostają w pamięci telefonu; na serwer trafiają tylko symbole instrumentów, o które pytasz (notowania, kursy NBP).

Rozliczenie PIT-38, import plików brokera i integracje brokera wymagają wersji Windows albo lokalnego serwera — telefon nie ma silnika Pythona. Hosting: Cloudflare Workers w planie darmowym, bez bazy danych.

Windows / wersja przenośna

Użytkownik Windows

Wydania i instrukcję instalacji znajdziesz na GitHubie. Uruchom program z kompletnego folderu paczki, razem z zasobami i katalogiem binaries. Node.js i systemowy Python nie są wymagane.

# W katalogu projektu, PowerShell
& ".\wydania\komputerowa\przenosna\najnowsza\InvestAnalyzer.exe"

Dane aplikacji: %APPDATA%\InvestAnalyzer i %LOCALAPPDATA%\InvestAnalyzer. Wydania i ZIP-y: wydania/komputerowa/przenosna/wersje.

Dla programisty

Uruchom lokalnie

Wymagania: Node.js 20+ i Python 3.12. W katalogu repozytorium wykonaj:

npm install
py -3.12 -m venv silnik/python/.venv
silnik/python/.venv/Scripts/python.exe -m pip install -e "silnik/python[desktop,test]"
npm run dev

Interfejs: http://localhost:3000. Pliki brokera: dane/pliki/, poza git. Desktop wymaga także Rust (msvc), Visual Studio Build Tools i WebView2; uruchomienie: npm run desktop:dev.

Portfel inwestora — dane syntetyczne