Let's make Money with Investing APP — a Flutter stock market information app powered by the Nasdaq public API.
- Search Stock
- Favorite Stock List
- Index List
- Stock Detail
- Chart
- Dividend
- Company News
- Financial Data
- Company Profile
- Latest News List
- Search News
- Economics
- Earnings
- Dividends
- HeatMap S&P500 View
- Screener (Work In Progress)
- Flutter
3.47.x(stable) — includes Dart3.13 - JDK 17 (Android builds use AGP 8.13 / Gradle 8.14.3)
- Android SDK (for Android targets)
git clone https://github.com/dev-hann/investing.git
cd investing
flutter pub get
flutter runLive heatmap quotes need Alpaca credentials. Create the gitignored config
file once (see assets/config/README.md) — the app works without it using
a non-live fallback:
cp assets/config/alpaca.example.json assets/config/alpaca.json
# edit alpaca.json with your key id + secret (https://alpaca.markets)
flutter runflutter analyze # must report 0 errors
flutter test
flutter build apk --debuglib/
├── main.dart # MaterialApp + ProviderScope entry
├── const/ # App constants (colors, Forui brand theme)
├── controller/ # Riverpod Notifiers (one per feature screen)
├── use_case/ # Use cases bridging controllers and repos
├── repo/ # Repository interfaces + implementations (part-of)
├── data/
│ ├── service/ # HTTP services (dio) + Alpaca IEX websocket
│ └── db/ # Local storage (Hive CE)
├── model/ # Domain models (Equatable, fromMap factories)
├── view/ # Feature screens
├── widget/ # Shared widgets
└── util/ # Formatting helpers
Layering and data flow are documented in docs/ARCHITECTURE.md, testing conventions in docs/TESTING.md. Architectural decisions are recorded as ADRs in docs/adr/.
Releases are fully automated via GitHub Actions:
- Every push to
main/ PR runs CI (analyze + test + debug build). - Pushing a version tag builds a signed release APK and publishes it to GitHub Releases:
git tag v1.0.1
git push origin v1.0.1Release signing uses a dedicated keystore stored in GitHub Secrets (KEYSTORE_BASE64, KEYSTORE_PASSWORD, KEY_ALIAS, KEY_PASSWORD). Local builds fall back to debug signing when android/key.properties is absent.
- RealTime Update
- Improve Chart View
- Screener
MIT — Copyright (c) 2023 Han (한)






