Oracle3
Open-source trading engine and MCP server for prediction markets. Fee-aware no-arbitrage trading across related contracts, live on Kalshi, Polymarket and Solana or on paper.
Created by Gouliath & Co.
Translation pending
FinanceTypeScript · JavaScriptGitHub @Gouliath1OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Portfolio management app
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A personal investment dashboard built with Next.js for tracking stock positions (US and Japanese equities), monitoring real-time P&L, and researching new stocks before buying. All portfolio data lives in your browser's localStorage — nothing is uploaded anywhere.Read the full README ↗A personal investment dashboard built with Next.js for tracking stock positions (US and Japanese equities), monitoring real-time P&L, and researching new stocks before buying. All portfolio data lives in your browser's localStorage — nothing is uploaded anywhere.
localStorageClone the repository:
git clone https://github.com/Gouliath1/portfolio-tracker.git
cd portfolio-tracker
Install dependencies:
npm install
(Optional) Create an environment file for the screener's data providers and the production market-data cache:
cp .env.example .env.local
See .env.example for details — J-Quants and Twelve Data keys are optional and only needed for screener fundamentals; without them the app falls back to Yahoo Finance.
Start the development server:
npm run dev
Open your browser: navigate to http://localhost:3000
On first load you'll see a demo portfolio and a welcome prompt to import your own data (via the Settings panel → Portfolios), or you can add positions manually with the Add Position modal.
npm run dev - Start development server with Turbopacknpm run dev:clean - Start dev server via scripts/startDev.shnpm run build - Build the application for productionnpm run start - Start the production servernpm run lint - Run ESLint for code qualitynpm test / npm run test:watch / npm run test:coverage / npm run test:ci - Run the Jest test suiteportfolio-tracker/
├── src/
│ ├── app/ # Next.js app directory
│ │ ├── api/ # API routes (prices, pnl, dividends, screener, fx-rates, …)
│ │ ├── screener/ # Stock screener page
│ │ ├── returns/deep-dive/ # Analysis (XIRR) page
│ │ └── page.tsx # Main dashboard page (Overview / Assets / Portfolios)
│ ├── components/ # React components (layout, overview, screener, management, tables, charts)
│ ├── hooks/ # Shared React hooks (base currency, alert polling, ticker names, …)
│ ├── lib/
│ │ ├── core/ # Shared business logic (currency, XIRR/return calculations) — aliased as @portfolio/core
│ │ └── server/ # Server-side services (Yahoo/J-Quants fetchers, market-data cache) — aliased as @portfolio/server
│ ├── types/ # Shared TypeScript models — aliased as @portfolio/types
│ ├── data/ # Demo portfolio data
│ └── utils/ # localStorage-backed position store, caches, hooks helpers
├── data/ # Server-side SQLite caches (market data, screener), gitignored
├── scripts/ # Dev/deploy utilities (fetch-constituents, startDev, gitPush)
├── instrumentation.ts # Server startup hook (no-op — data is client-side)
└── ... # Other config files
Portfolio positions are not stored in a checked-in file — they live in your browser's localStorage, one entry per portfolio ("position set"). To get your real data in:
Since everything is local to the browser, clearing site data / a different browser / a different device won't carry your portfolio over — export before doing so if you need to move it.
See .env.example for the full list. Nothing is required for basic use; these enable extra data sources:
TURSO_DATABASE_URL / TURSO_AUTH_TOKEN - cloud SQLite for the market-data cache in production (Vercel's filesystem is read-only); local dev uses data/marketCache.db automaticallyJQUANTS_API_KEY (or JQUANTS_EMAIL / JQUANTS_PASSWORD) - official JPX fundamentals (P/E, P/B, dividend yield) for Japanese screener stocksTWELVE_DATA_API_KEY - fundamentals for US/JP stocks via Twelve Data (free tier); falls back to Yahoo Finance when unsetYAHOO_COOKIE / YAHOO_CRUMB - manual override if Yahoo's crumb endpoint is rate-limited| What | Provider | Notes |
|---|---|---|
| Hosting / deployment | Vercel | Free tier, auto-deploy on push to main |
| Live URL | tracker.julienguille.com | Custom subdomain |
| Domain registrar | GoDaddy | Manages julienguille.com DNS |
| Server / web hosting | OVH | Hosts other sites on the same domain |
To point tracker.julienguille.com to Vercel, a CNAME record is set in GoDaddy:
| Type | Name | Value |
|---|---|---|
| CNAME | tracker | 9d28ed80412bd346.vercel-dns-017.com. |
Vercel project → Settings → Billing → Spending Limit is set to $0 — Vercel will pause the project rather than charge anything if free-tier limits are ever exceeded.
localStorage — they are never sent to a server for persistence.data/) only caches market data (prices, FX rates, screener fundamentals) — public information, not your holdings.git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)This project is licensed under the MIT License - see the LICENSE file for details.
Price updates not working:
.T suffix)My portfolio disappeared:
localStorage. Clearing browser data, using a different browser, or private/incognito mode will not show previously entered positions. Export your position set beforehand if you need to move or back it up.Screener fundamentals missing or stale:
JQUANTS_API_KEY or TWELVE_DATA_API_KEY set, the app falls back to Yahoo Finance, which can be rate-limited — see .env.example for the manual crumb overrideBuild fails:
npm run build locally first to testFor more help, please open an issue on GitHub.
Built with ❤️ using Next.js, React, and TypeScript.