Open Net Worth
Open Net Worth is an open-source personal AI wealth assistant you run yourself: one ledger for your whole financial life, worked by an AI agent you control.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Loading the full README. The saved excerpt is shown below.
日本の IPO(新規上場)銘柄の情報を整理し、需給スコアとファンダスコアの 2 軸で機械的に比較するための、個人投資家向けの PWA(Progressive Web App)です。ブックビルディング(BB)の申込状況や資金拘束の管理もできます。 Next.js(App Router)+ TypeScript + Tailwind CSS で実装した、スマホファーストのモバイルアプリです。ボトムタブバーによる 5 画面構成、ダークテーマ既定(ライト自動切替)、PWA としてホーム画面に追加できます。環境変数・データベース不要で Vercel にそのままデプロイできます。ユーザーの入力(ウォッチリスト・BB 申込状況・メモ・スコア重み・地合い設定)はブラウザの localStorage に保存されます。 本アプリは公開情報をユーザー設定ルールで機械的に整理する個人用ツールです。投資助言を目的とせず、特定銘柄の売買の可否を示すものではありません。投資判断はご自身の責任で行ってください。公開情報を機械的に取得したもので正確性・完全性を保証しません。 • スコアは、ユーザーが設定した重みに基づく機械的な集計値です。特定銘柄の評価や売買判断を示すものではありません。 前提: Node.js 20 以上。Read the full README ↗
日本の IPO(新規上場)銘柄の情報を整理し、需給スコアとファンダスコアの 2 軸で機械的に比較するための、個人投資家向けの PWA(Progressive Web App)です。ブックビルディング(BB)の申込状況や資金拘束の管理もできます。
Next.js(App Router)+ TypeScript + Tailwind CSS で実装した、スマホファーストのモバイルアプリです。ボトムタブバーによる 5 画面構成、ダークテーマ既定(ライト自動切替)、PWA としてホーム画面に追加できます。ホスティングは Cloudflare Workers(無料枠)で、main への push で GitHub Actions から自動デプロイされます。ユーザーの入力(ウォッチリスト・BB 申込状況・メモ・スコア重み・地合い設定)はブラウザの localStorage に保存され、希望すれば Cloudflare D1 で端末間同期できます。プッシュ通知の購読は Cloudflare KV に保存します。
本アプリは公開情報をユーザー設定ルールで機械的に整理する個人用ツールです。投資助言を目的とせず、特定銘柄の売買の可否を示すものではありません。投資判断はご自身の責任で行ってください。公開情報を機械的に取得したもので正確性・完全性を保証しません。
| タブ | ルート | 内容 |
|---|---|---|
| ホーム | / | 地合いカード、KPI タイル(対象銘柄数・直近90日初値騰落平均・公募割れ率・直近トップパフォーマー)、今後14日のイベントタイムライン、スコア上位ピックアップ、需給ハイライト |
| 銘柄 | /ipos | セグメント(すべて/予定/BB中/上場済)、検索、ソート、フィルタシート、カード一覧 |
| 銘柄詳細 | /ipo/[code] | 価格カード(ライブ株価・90日スパークライン)、2軸スコアゲージ、スコア内訳、基本情報、日程タイムライン、BB申込状況、投資判断チェックリスト、類似IPO、メモ |
| スクリーナー | /screener | プリセット3種(高成長×流動性/BB参加候補/ウォッチ中)+手動条件によるカード一覧 |
| BB | /bb | 銘柄ごとの BB 期間・抽選日・購入期間、証券会社別ステータス管理、資金拘束目安の集計 |
| 設定 | /settings | スコア重みプリセット・スライダー、地合い設定、証券会社係数、テーマ、データ更新日時、PWA インストール案内、免責全文 |
前提: Node.js 20 以上。
npm install # 依存関係のインストール
npm run dev # 開発サーバー起動(http://localhost:3000)
npm run build # 本番ビルド
npm run test # ユニットテスト(vitest)
npm run lint # ESLint
デプロイ済みの URL にスマホの標準ブラウザでアクセスし、以下の手順でホーム画面に追加できます(/settings タブにも同じ案内があります)。
ホーム画面のアイコンから起動すると、アドレスバー無しのスタンドアロン表示になり、オフライン時は /offline にフォールバックします(public/sw.js の Service Worker がキャッシュを管理)。
Android 版は TWA(Trusted Web Activity) で配布します。公開中の PWA(Service Worker・Web Push・オフライン画面)をそのまま Android Chrome が表示するため、アプリ側のコードは android-twa/ の設定だけです。
android-twa/twa-manifest.json: パッケージ名 com.zukky.kaburadar・色・起点 URL。src/app/manifest.ts と揃えるpublic/.well-known/assetlinks.json: 署名鍵の SHA-256。これが本番で配信されていると、アプリ起動時に Chrome のアドレスバーが消えて全画面になるandroid-twa/android.keystore と .env の TWA_KEYSTORE_PASSWORD / TWA_KEY_PASSWORD: 署名鍵(git 管理外。失くすと同じパッケージ名で更新できなくなるので、Drive 等へ別途バックアップ)初回の環境: JDK 17(~/.bubblewrap/jdk)と Android SDK(~/Library/Android/sdk)のパスを ~/.bubblewrap/config.json に書く。
SDK には bin/sdkmanager(cmdline-tools の symlink)と build-tools 36.1.0 が必要。対応端末は Android 7.0(API 24)以上。
鍵は PKCS12 なので TWA_KEY_PASSWORD は TWA_KEYSTORE_PASSWORD と同じ値にする。
npm run twa:build
成果物は android-twa/app-release-signed.apk(端末へ直接インストール)と app-release-bundle.aab(Google Play 用)。
端末へ入れるには、APK を端末へ送って開くか adb install android-twa/app-release-signed.apk。
twa-manifest.json の appVersionName(表示用。例 1.1.0)・appVersion(同じ値)・appVersionCode(整数。毎回 +1、下げると端末で上書きインストールできない)を書き換えてから npm run twa:build。現在は 1.1.0 / 2twa-manifest.json の shortcuts(name / shortName / 絶対 URL の url / chosenIconUrl)と、src/app/manifest.ts の shortcuts を同じ内容にそろえる。現在は「銘柄一覧」/ipos・「BB管理」/bb・「予定」/eventsbuild.sh は bubblewrap update --skipVersionUpgrade で twa-manifest.json を Android プロジェクトへ反映してからビルドする。Android プロジェクト(app/・gradle 一式)は git 管理外なので、別の worktree でビルドするときは鍵と一緒にコピーしてくる~/Library/Android/sdk/build-tools/36.1.0/aapt dump badging android-twa/app-release-signed.apk | head -3 で package / versionCode / versionName / label を見るAPK を端末へ入れる(adb install -r android-twa/app-release-signed.apk、または APK を端末へ送って開く)。旧版が入っていれば上書きされる
アプリを起動する。上部に URL バー(ドメイン表示)が出なければ全画面(TWA)で動いている
URL バーが出た場合は、端末をつないだ状態で次を実行する
adb shell pm verify-app-links --re-verify com.zukky.kaburadar
adb shell pm get-app-links com.zukky.kaburadar
kabu-radar.zukky-yoshida.workers.dev: verified と出れば OK。アプリを終了して開き直す(2 つのコマンドは Android 12 以降。11 以前はアプリを再インストールすると再検証される)
それでも URL バーが残るときの確認点
curl -sI https://kabu-radar.zukky-yoshida.workers.dev/.well-known/assetlinks.json が 200・application/jsonkeytool -list -v -keystore android-twa/android.keystore の SHA-256 が public/.well-known/assetlinks.json と twa-manifest.json の fingerprints と一致しているか。Play 配布に切り替えた場合は Play の「アプリ署名鍵」の指紋も assetlinks に足す長押しでショートカット 3 つが出ること、設定 →「プッシュ通知」をオンにして Android の通知許可ダイアログが出ることも見る
このリポジトリは Capacitor 8 の前提整備(capacitor.config.ts / devDependencies)まで済んでいます。実際に iOS/Android のネイティブシェルを生成するには、Xcode(iOS)または Android Studio(Android)がインストールされた環境で以下を実行してください。
npm i -D @capacitor/ios @capacitor/android
npx cap add ios # または: npx cap add android
# デプロイ済みの Web 版 URL をネイティブシェルから読み込む場合
export CAP_SERVER_URL="https://<your-deployed-url>"
npx cap sync
npx cap open ios # Xcode で開く(npm run cap:ios でも同様)
# npx cap open android # Android Studio で開く(npm run cap:android でも同様)
CAP_SERVER_URL を設定しない場合は capacitor.config.ts が webDir: 'out'(静的ビルド出力)を参照します。
Apple の App Store Review Guidelines 4.2 は、Web サイトの単純なラッパー(ネイティブ機能を持たないだけの WebView 表示)を却下対象としています。このリポジトリをそのまま cap add ios しただけの状態では 4.2 に抵触するおそれがあるため、App Store への提出前に プッシュ通知(BB締切・抽選日のリマインド等) や ホームウィジェット、ネイティブ共有シート など、Web 版に無いネイティブ機能を追加しておくとよいでしょう。個人利用(TestFlight・自分の端末への直接インストール)の範囲であれば審査は発生しません。
This is the beginning of the README. Read the rest at the original. Read the full README ↗