尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Investment App
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Product direction is in ROADMAP.md. Read that first and follow its product rules.
A modern, beautiful web app for tracking your investment portfolio and planning your retirement.
Built with Next.js, Supabase, and Tailwind CSS.
Portfolio Management — Add and track stocks, crypto, and other assets
Real-time Prices — Live market data for stocks and cryptocurrencies
Performance Tracking — Profit/Loss, returns, and portfolio allocation
Clean Dashboard — Beautiful, responsive UI
Node.js (v18+)
Supabase account
Clone the repository:
git clone [https://github.com/0xamars/My-Invest-Master.git](https://github.com/0xamars/My-Invest-Master.git)
cd My-Invest-Master
npm install
.env.local and add credentials (see below).| Variable | Required | Description |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL | Yes | Supabase project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Yes | Supabase anon key |
FMP_API_KEY | Yes | Financial Modeling Prep API key — quotes, batch quotes, history, news, symbol search, crypto prices, and Analysis fundamentals. Results are cached in the Supabase warehouse |
FMP_API_BASE | No | Override FMP API base (default https://financialmodelingprep.com/stable) |
FMP_DISPLAY_GATE_ENABLED | No | 1 or true limits FMP-backed market data to confirmed emails in FMP_DISPLAY_ALLOWED_EMAILS. Unset or 0 leaves every surface unchanged. Turning this on needs a Vercel env change and a redeploy |
FMP_DISPLAY_ALLOWED_EMAILS | No | Comma-separated emails that may see FMP data while the display gate is on. Do not commit a real address. Changing the list needs a Vercel env change and a redeploy |
NEXT_PUBLIC_BANK_CONNECT_ENABLED | No | 1 or true shows Connect bank. Unset keeps it hidden. Changing it needs a redeploy |
BANK_CONNECT_ENABLED | No | Server switch. 1 or true turns the API on. 0 turns it off even if the public flag is on |
PLAID_CLIENT_ID | No | Plaid client id. Server-only |
PLAID_SECRET | No | Plaid secret. Server-only |
PLAID_ENV | No | sandbox (default), development, or production |
PLAID_WEBHOOK_URL | No | https://<domain>/api/plaid/webhook — set in the Plaid dashboard |
PLAID_REDIRECT_URI | No | OAuth redirect for some banks. Usually https://<domain>/budget |
PLAID_TOKEN_ENCRYPTION_KEY | No | 32-byte key for access tokens at rest. Server-only. openssl rand -base64 32 |
SUPABASE_SERVICE_ROLE_KEY | Yes for bank link | Stores encrypted Plaid access tokens. Never expose to the browser |
Bank connection setup, sandbox credentials, production access, and security notes are in docs/plaid.md. The flag stays off until those steps are done. Apply supabase/migrations/013_user_plaid_items.sql and supabase/migrations/018_plaid_access_token_encryption.sql before the first bank link. An admin can turn bank connection on for one account from /admin while everyone else stays off. See docs/admin.md.
Crypto prices, charts, and headlines come from FMP (cached). CoinGecko remains for crypto search and logos, because those responses carry CoinGecko ids the logo route still uses. Set FMP_API_KEY in Vercel project settings for production. Apply supabase/migrations/015_market_cache.sql so news and symbol search share one warehouse row. That table has row level security and no anon or authenticated policies, so only the server (service role) reads and writes it. If production already ran the older 015 that created a public read policy, run drop policy if exists "Public read market_cache" on public.market_cache; in the Supabase SQL editor. Search and news rows older than 7 days are deleted opportunistically on later writes.
When FMP_DISPLAY_GATE_ENABLED is 1, stock pages, portfolio live prices, the heatmap, market news, stock ticker search, and analysis quote and fundamentals are served only to a signed-in, confirmed email listed in FMP_DISPLAY_ALLOWED_EMAILS, or to a confirmed account whose market-data override is on in /admin. Everyone else sees “Market data is not available on your account yet”, and those API routes return 403. Crypto ticker search stays on CoinGecko and is not part of this gate. Leave the flag unset until you choose to turn the gate on. Turning the gate on, or changing the allowlist, needs a Vercel environment change and a redeploy before it takes effect. A per-user override does not need a redeploy. See docs/admin.md.
Example .env.local fragment:
FMP_API_KEY=your_fmp_key_here
# FMP_DISPLAY_GATE_ENABLED=1
# [email protected]
Bash
npm run dev