Skip to content

singerko/investor

Repository files navigation

Investor App 📈

Mobilná aplikácia na sledovanie investičného portfólia (Krypto & Akcie), postavená na moderných webových technológiách a zabalená pre Android pomocou Capacitor.

📘 Pre vývojárov: Pozri si Technický Popis a Rozcestník pre detailné vysvetlenie štruktúry projektu a použitých nástrojov.

🚀 Kľúčové Vlastnosti

  • Viacero Portfólií:
    • Neobmedzený počet portfólií (napr. vlastné, deti, partnerka).
    • Prepínanie, premenovávanie a mazanie portfólií priamo z hlavičky aplikácie.
    • Každé portfólio má vlastné aktíva, transakcie a štatistiky — zobrazenia automaticky reflektujú vybrané portfólio.
    • Rozdelenie nákupu: Jeden nákup (napr. 20 ks PEP) možno rozdeliť medzi viaceré portfóliá naraz — stačí zadať počty pre ostatné portfóliá, zostatok ide automaticky do aktuálneho. Ak aktívum v cieľovom portfóliu ešte neexistuje, vytvorí sa automaticky.
  • Sledovanie Portfólia: Prehľad o celkovej hodnote, zisku/strate (v EUR aj %) a rozložení aktív.
  • Správa Aktív (Assets):
    • Centralizovaná knižnica kryptomien a akcií (per portfólio).
    • Podpora pre automatické sťahovanie cien z CoinGecko (vrátane podpory pre špecifické ID ako mantle pre MNT).
    • Možnosť manuálneho zadávania cien.
    • Automatická konverzia mien pri transakciách.
  • Transakcie:
    • Jednoduché pridávanie nákupov a predajov.
    • Automatický výber aktíva z knižnice (žiadne preklepy).
    • História transakcií filtrovaná podľa portfólia.
  • Inteligentný Predaj (Tax Optimization):
    • Pri predaji aplikácia automaticky odpisuje kusy z najvýhodnejších (najdrahších) nákupov ("Min-Price-Out" logika), čo pomáha pri daňovej optimalizácii (znižuje realizovaný zisk).
  • Grafy a Histórica Cien:
    • Voliteľné snímanie cien každý deň o 9:00 a 21:00 (aktívuje sa v Nastaveniach).
    • Graf vývoja ceny pre každé aktívum (7D / 1M / 3M / 1R / Max).
    • Graf vývoja hodnoty celého portfólia.
    • Možnosť manuálneho snímku "Snímať teraz" v Nastaveniach.
  • Aktuálne Ceny:
    • Batch sťahovanie cien na pozadí (šetrí API limity).
    • Automatický fallback na CryptoCompare v prípade výpadku CoinGecko.
  • Hotovostné Účty:
    • Každé portfólio má vlastné hotovostné účty (pre každú menu zvlášť) + zdieľaný hlavný účet.
    • Manuálny vklad a výber hotovosti.
    • Pri nákupe aktíva sa automaticky odpočítajú prostriedky — najprv z portfóliového účtu, pri nedostatku z hlavného.
    • Pri predaji aktíva sa výťažok automaticky pripíše na portfóliový účet.
    • FX P&L: Pre účty v cudzej mene (napr. USD) aplikácia sleduje pôvodný EUR ekvivalent vkladu (eurCostBasis) a pri aktuálnom kurze zobrazuje kurzový zisk/stratu.
    • Konfigurácia hlavnej meny v Nastaveniach (EUR, USD, CZK, GBP, CHF).
  • Časový Test (Daňový):
    • Konfigurovateľná minimálna doba držania pre akcie aj krypto (v dňoch).
    • Hodnota 0 = test vypnutý. Splnené pozície sú zvýraznené zelenou.
  • Dizajn:
    • Moderné tmavé rozhranie (Dark Mode) aj svetlá téma.
    • Responzívny dizajn optimalizovaný pre mobilné zariadenia.
    • Vlastná ikona a Splash screen.

📱 Ukážky

Prehľad Portfólia Správa Aktív Pridanie Transakcie
Dashboard Assets Add Transaction

Prehľad portfólia

Domovská obrazovka zobrazuje celkovú hodnotu portfólia (aktíva + hotovosť), zisk na aktívach a percentuálnu návratnosť. Graf Vývoj Portfólia zachytáva historický priebeh hodnoty v časových oknách 7D / 1M / 3M / 1R / Max — dáta pochádzajú zo snímok cien ukladaných 2× denne (9:00 a 21:00). Snímku možno vyvolať aj ručne potiahnutím obrazovky nahor (pull-to-refresh). Pod grafom je zoznam všetkých aktív rozdelených na Krypto a Akcie.

Prehľad portfólia

Pridanie nového aktíva

Pred prvým nákupom je potrebné aktívum zaregistrovať v zozname sledovaných aktív. Pri type Akcia (Stock) stačí zadať ISIN — aplikácia automaticky dohľadá Yahoo Finance ticker, symbol aj názov spoločnosti. Zdroj ceny sa nastaví na Yahoo Finance. Yahoo ticker možno doplniť aj ručne pre prípad, že automatické dohľadanie zlyhá (napr. amsterdamská burza: IWDA.AS). Pre kryptomeny sa používa CoinGecko ID.

Pridanie nového aktíva

Nákup s rozdelením do viacerých portfólií

Pri zadávaní nákupu možno jedným krokom rozdeliť nakúpené kusy medzi viaceré portfóliá. V sekcii Rozdelenie sa zadá počet kusov pre každé portfólio — zvyšok sa automaticky pripíše aktívnemu portfóliu (zobrazené ako zostatok). Aplikácia priebežne sleduje, či súčet zodpovedá celkovému množstvu. Voliteľný checkbox Odpočítať z hotovosti určuje, či sa nákup prejaví aj na hotovostných účtoch príslušných portfólií.

Nákup s rozdelením do portfólií

Zadanie prijatej dividendy

V záložke Pridať možno okrem nákupu a predaja zaúčtovať aj prijatú dividendu. Stačí vybrať aktívum, zadať celkovú sumu a menu. Ak dané aktívum vlastní viacero portfólií, aplikácia automaticky rozdelí dividendu medzi ne proporcionálne podľa počtu držaných kusov — každé portfólio tak dostane presnú časť dividendy pripísanú na svoj hotovostný účet.

Zadanie dividendy

História transakcií

Záložka História zobrazuje kompletný zoznam všetkých nákupov a predajov naprieč portfóliom — zoradených od najnovších. Pri každej transakcii je vidieť symbol, dátum, sumu v pôvodnej mene aj prepočet do hlavnej meny, zostatok pozície a čas strávený v pozícii (V pozícii).

História transakcií

Detail akcie / ETF a časový test

Na detaile každého aktíva je vidieť aktuálnu hodnotu, priemernú nákupnú cenu, zisk/stratu a graf vývoja ceny. Sekcia História Transakcií zobrazuje jednotlivé nákupy vrátane informácie V pozícii — teda ako dlho sa daná pozícia drží. Táto hodnota sa porovnáva s nakonfigurovanou minimálnou dobou držania (časový test) — splnené pozície sú zvýraznené zelenou.

Detail akcie a časový test

Konfigurácia aplikácie

V sekcii Nastavenia možno prispôsobiť vzhľad (tmavý/svetlý režim), nakonfigurovať automatické snímanie historických cien (2× denne o 9:00 a 21:00) a nastaviť hlavnú menu pre hotovostné účty vrátane kurzov ostatných mien.

Nastavenia

Správa a prepínanie portfólií

Portfóliá sa vytvárajú a prepínajú priamo z hlavičky aplikácie. Kliknutím na názov aktívneho portfólia sa otvorí zoznam všetkých portfólií — tu možno vybrať iné portfólio, existujúce premenovať alebo zmazať, prípadne vytvoriť nové tlačidlom + Nové portfólio.

Správa portfólií

🛠️ Technológie

  • Frontend: React 19, TypeScript, Vite
  • UI/UX: Vlastný CSS dizajn systém, Lucide React (ikony)
  • Mobile: Capacitor 8 (Android)
  • Build System: Podman (kontajnerizovaný build), Makefile
  • Data: LocalStorage (perzistencia), Context API (state management)
  • Testovanie: Vitest + jsdom + @testing-library/react

📦 Inštalácia a Spustenie

Tento projekt využíva Makefile a Podman pre izolované vývojové prostredie. Nie je potrebné inštalovať Node.js lokálne.

Prerekvizity

  • Linux (testované)
  • Podman
  • Make
  • Android Studio (pre emuláciu alebo deploy na zariadenie)

Príkazy

  1. Inštalácia závislostí:

    make init   # Prvé spustenie (vytvorí projekt ak neexistuje)
    make install # Inštalácia npm balíčkov
  2. Lokálny vývoj (Web):

    make dev
    # Spustí server na http://localhost:5173
  3. Spustenie testov:

    make test
    # Spustí Vitest (unit + integračné testy) v kontajneri
  4. Build pre Android:

    make rebuild-apk
    # 1. Spustí testy (build sa preruší pri zlyhaní testov)
    # 2. Zbuildí React aplikáciu
    # 3. Synchronizuje Capacitor
    # 4. Zbuildí Android APK cez Gradle (v kontajneri)
    # 5. Výsledné APK uloží ako ./Investor.apk
  5. Nasadenie na zariadenie: Pripojte Android telefón cez USB (musí mať povolené USB ladenie).

    make deploy
    # Zbuildí, podpíše (vyžaduje android.sign.sh skript) a nainštaluje cez adb

🐛 Debugging a Verzie

  • Aplikácia obsahuje automatické verzionovanie.
  • Pri každom builde (make rebuild-apk alebo make deploy) sa automaticky zvýši patch verzia (napr. v0.0.4 -> v0.0.5).
  • Verzia aplikácie je zobrazená priamo na domácej obrazovke v hlavičke.

📝 Licencia

Tento projekt je Open Source pod licenciou MIT.

🤖 Poznámka: Tento kód bol vygenerovaný a asistovaný umelou inteligenciou (Google DeepMind).

Prompt pre vygenerovanie tejto aplikácie
Create a mobile-first investment portfolio tracker using React (TypeScript), Vite, and Capacitor for Android deployment.

**Project Requirements:**
1.  **Tech Stack:**
    - **Frontend:** React + TypeScript + Vite
    - **State Management:** React Context API + LocalStorage persistence
    - **Styling:** Custom CSS (Dark Mode, Financial Dashboard optimized)
    - **Build System:** Containerized (Podman/Docker) environment via `Makefile`

2.  **Core Features:**
    - **Dashboard:** Display Total Balance (EUR), 24h Change (%), and Asset Allocation.
    - **Asset Management:**
        - Add/Edit Assets (Symbol, Name).
        - Fetch live prices from CoinGecko API (batch requests to handle rate limits).
        - Allow manual price override.
    - **Transactions:** 
        - Log Buys/Sells with auto-currency conversion (USD -> EUR).
        - Calculate Realized Profit/Loss based on "Min-Price-Out" (Tax Optimization) logic.
    - **Mobile UX:** Touch-friendly inputs, Swipe-to-refresh, Back button handling (Capacitor App Plugin).

3.  **Specific Implementation Details:**
    - Use `Makefile` to script frequent commands: `make dev`, `make build`, `make rebuild-apk`.
    - **Containerization:** Use Podman/Docker to mount the source code into the container for both development (hot-reload) and building artifacts, keeping the host system clean.
    - Handle Android back navigation correctly.
    - Ensure zero external runtime dependencies (self-contained PWA).

Slovenský Preklad Promptu

Vytvor mobile-first aplikáciu na sledovanie investičného portfólia pomocou React (TypeScript), Vite a Capacitor pre Android.

**Požiadavky na Projekt:**
1.  **Technologický Stack:**
    - **Frontend:** React + TypeScript + Vite
    - **Správa Stavu:** React Context API (AssetContext, CashContext, SettingsContext) + LocalStorage perzistencia
    - **Štýlovanie:** Vlastné CSS (Tmavý režim aj svetlý, optimalizované pre finančný dashboard)
    - **Build Systém:** Kontajnerizované (Podman/Docker) prostredie spravované cez `Makefile`
    - **Testovanie:** Vitest + jsdom + @testing-library/react; testy sa spúšťajú automaticky pred každým buildom

2.  **Kľúčové Funkcionality:**
    - **Viacero Portfólií:** Neobmedzený počet portfólií, prepínanie v hlavičke, všetky pohľady filtrované podľa vybraného portfólia. Rozdelenie jedného nákupu medzi viaceré portfóliá (split transakcie).
    - **Dashboard:** Celková hodnota portfólia (EUR/USD), celkový zisk/strata, SVG graf vývoja hodnoty (7D/1M/3M/1R/Max), Pull-to-refresh.
    - **Správa Aktív:** Pridať/Upraviť Aktíva (Krypto aj Akcie/ETF). Krypto: CoinGecko + CryptoCompare fallback. Akcie: Yahoo Finance cez ISIN kód. Možnosť manuálnej ceny.
    - **Transakcie:** Nákup/predaj s automatickou konverziou mien. "Min-Price-Out" logika pre daňovú optimalizáciu pri predaji (odpis z najdrahších nákupov). Časový test (konfigurovateľné dni, 0 = vypnutý).
    - **Hotovostné Účty:** Každé portfólio + zdieľaný hlavný účet. Manuálny vklad/výber. Automatický odpočet pri nákupe (portfólio → hlavný fallback) a pripísanie pri predaji. FX P&L pre cudzie meny (sledovanie eurCostBasis).
    - **Grafy a História Cien:** Automatické snímanie cien o 9:00 a 21:00. SVG line chart pre každé aktívum aj celé portfólio.
    - **Mobilné UX:** Touch-friendly vstupy, Swipe-to-refresh, obsluha tlačidla Späť (Capacitor App Plugin).

3.  **Špecifické Implementačné Detaily:**
    - Použi `Makefile` na skriptovanie: `make dev`, `make build`, `make test`, `make rebuild-apk`.
    - **Kontajnerizácia:** Podman/Docker pre izoláciu vývojového prostredia od hostiteľa.
    - **Testovanie:** Unit testy pre CashContext logiku (deposit, withdraw, deductForBuy, addFromSell, FX P&L základ) + integračné testy pre nákup/predaj akcií a krypta. `make build` automaticky spustí testy pred kompiláciou.
    - Správne ošetri navigáciu tlačidlom Späť na Androide.
    - Automatické verzionovanie (patch bump) pri každom `make rebuild-apk`.

About

manažment portfolia

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages