Open-Dev-Society/OpenStock

▲ 5,974 stars today★ 20,047⑂ 2,454

OpenStock is an open-source alternative to expensive market platforms. Track real-time prices, set personalized alerts, and explore detailed company insights — built openly, for everyone

About Open-Dev-Society/OpenStock

Open-Dev-Society/OpenStock is an open-source project on GitHub, mainly written in TypeScript. OpenStock is an open-source alternative to expensive market platforms. Track real-time prices, set personalized alerts It currently holds 20,047 stars and 2,454 forks with 37 open issues, and was last pushed on 2026-10-10 (repository created 2025-09-28).

Project Overview

Git Homed tracks it on the Today's Trending board.

GitHub Repository Details

Repository Open-Dev-Society/OpenStock · default branch main · size 2635 KB · watchers 105 · source: GitHub REST API and repository README

README

New: Orbit. Free, open-source macOS screen recorder, screenshot tool and video editor: auto-zoom, smooth cursor, backgrounds, web recordings and AI agent recording.

https://github.com/Open-Dev-Society/OpenStock/blob/HEAD/Star History Rank https://github.com/Open-Dev-Society/OpenStock/blob/HEAD/GitHub Trending Repository of the Day

https://github.com/Open-Dev-Society/OpenStock/blob/HEAD/Open-Dev-Society%2FOpenStock | Trendshift https://github.com/Open-Dev-Society/OpenStock/blob/HEAD/Open-Dev-Society%2FOpenStock | Trendshift https://github.com/Open-Dev-Society/OpenStock/blob/HEAD/Open-Dev-Society%2FOpenStock | Trendshift https://github.com/Open-Dev-Society/OpenStock/blob/HEAD/Open-Dev-Society%2FOpenStock | Trendshift


https://github.com/Open-Dev-Society/OpenStock/blob/HEAD/Project Banner © Open Dev Society. This project is licensed under AGPL-3.0; if you modify, redistribute, or deploy it (including as a web service), you must release your source code under the same license and credit the original authors.

https://github.com/Open-Dev-Society/OpenStock/blob/HEAD/Next.js badge

OpenStock

OpenStock is an open-source alternative to expensive market platforms. Track real-time prices, watch the whole market, and explore detailed company insights — built openly, for everyone, forever free.

❤️ 13,000+ people use OpenStock for free. Help keep it that way: sponsor from $5 a month, or read how OpenStock is funded.

Note: OpenStock is community-built and not a brokerage. Market data may be delayed based on provider rules and your configuration. Nothing here is financial advice.

📋 Table of Contents

1. ✨ Introduction 2. 🌍 Open Dev Society Manifesto 3. ⚙️ Tech Stack 4. 🔋 Features 5. 🤸 Quick Start 6. 🐳 Docker Setup 7. 🔐 Environment Variables 8. 🧱 Project Structure 9. 📡 Data & Integrations 10. 🌍 Market Support 11. 🧪 Scripts & Tooling 12. 🤝 Contributing 13. 🛡️ Security 14. 📜 License 15. 🙏 Acknowledgements 16. ❤️ Sponsor OpenStock

✨ Introduction

OpenStock is a modern stock market app powered by Next.js (App Router), shadcn/ui and Tailwind CSS, Better Auth for authentication, MongoDB for persistence, Finnhub for market data, and TradingView widgets for charts and market views.

🌍 Open Dev Society Manifesto

We live in a world where knowledge is hidden behind paywalls. Where tools are locked in subscriptions. Where information is twisted by bias. Where newcomers are told they’re not “good enough” to build.

We believe there’s a better way.

Because the future belongs to those who build it openly.

⚙️ Tech Stack

Core

Auth & Data Automation & Comms Language composition

🔋 Features

🤸 Quick Start

Prerequisites

Clone and install
git clone https://github.com/Open-Dev-Society/OpenStock.git
cd OpenStock

choose one:

pnpm install

or

npm install

Configure environment

pnpm test:db

or

npm run test:db

Run development

# Next.js dev (Turbopack)
pnpm dev

or

npm run dev

Run Inngest locally (workflows, cron, AI)

npx inngest-cli@latest dev

Build & start (production)

pnpm build && pnpm start

or

npm run build && npm start

Open http://localhost:3000 to view the app.

🐳 Docker Setup

You can run OpenStock and MongoDB easily with Docker Compose.

1) Ensure Docker and Docker Compose are installed.

2) docker-compose.yml includes two services:

3) Create your .env (see examples below). For the Docker setup, use a local connection string like:
MONGODB_URI=mongodb://root:example@mongodb:27017/openstock?authSource=admin

4) Start the stack:

# from the repository root
docker compose up -d mongodb && docker compose up -d --build

5) Access the app:

Notes Optional: Example MongoDB service definition used in this project:
services:
  mongodb:
    image: mongo:7
    container_name: mongodb
    restart: unless-stopped
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
    ports:
  • "27017:27017"
volumes:
  • mongo-data:/data/db
healthcheck: test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"] interval: 10s timeout: 5s retries: 5

volumes: mongo-data:

☁️ One-Click Deploy

Deploy on RepoCloud

🔐 Environment Variables

Create .env at the project root. Choose either a hosted MongoDB (Atlas) URI or the local Docker URI.

Hosted (MongoDB Atlas):

# Core
NODE_ENV=development

Database (Atlas)

MONGODB_URI=mongodb+srv://:@/?retryWrites=true&w=majority

Better Auth

BETTER_AUTH_SECRET=your_better_auth_secret BETTER_AUTH_URL=http://localhost:3000

Finnhub

Note: NEXT_PUBLIC_FINNHUB_API_KEY is required for Vercel deployment

NEXT_PUBLIC_FINNHUB_API_KEY=your_finnhub_key FINNHUB_BASE_URL=https://finnhub.io/api/v1

Sentiment insights (optional)

ADANOS_API_KEY=your_adanos_api_key

ADANOS_API_BASE_URL=https://api.adanos.org

AI Provider (optional, default: "gemini")

Supported: "gemini", "minimax", "siray"

AI_PROVIDER=gemini

Gemini

GEMINI_API_KEY=your_gemini_api_key

MiniMax (optional, used when AI_PROVIDER=minimax or as fallback)

Get your key at https://platform.minimaxi.com

MINIMAX_API_KEY=your_minimax_api_key

Inngest Signing Key (required for Vercel deployment)

Get this from your Inngest dashboard: https://app.inngest.com/env/settings/keys

INNGEST_SIGNING_KEY=your_inngest_signing_key

Required in production so sign-up can send the welcome-email event

INNGEST_EVENT_KEY=your_inngest_event_key

Market data (optional)

Several free Finnhub keys, rotated per request: each adds 60 requests/min.

FINNHUB_API_KEYS=key_one,key_two

"cached" (default) refreshes quotes hourly for everyone; "realtime" refreshes every 15s

and turns on email price alerts (an OpenStock Cloud feature).

NEXT_PUBLIC_OPENSTOCK_DATA_MODE=cached

Social sign-in (optional; each provider is hidden server-side until set)

Callback URLs: <BETTER_AUTH_URL>/api/auth/callback/google and /api/auth/callback/github

Leave these commented out until you have real credentials: any value turns the provider on

GOOGLE_CLIENT_ID=your_google_client_id

GOOGLE_CLIENT_SECRET=your_google_client_secret

GITHUB_CLIENT_ID=your_github_client_id

GITHUB_CLIENT_SECRET=your_github_client_secret

Email (optional; Nodemailer via Gmail, consider App Passwords if 2FA)

[email protected]

NODEMAILER_PASSWORD=your_gmail_app_password

Local (Docker Compose) MongoDB:

# Core
NODE_ENV=development

Database (Docker)

MONGODB_URI=mongodb://root:example@mongodb:27017/openstock?authSource=admin

Better Auth

BETTER_AUTH_SECRET=your_better_auth_secret BETTER_AUTH_URL=http://localhost:3000

Finnhub

Note: NEXT_PUBLIC_FINNHUB_API_KEY is required for Vercel deployment

NEXT_PUBLIC_FINNHUB_API_KEY=your_finnhub_key FINNHUB_BASE_URL=https://finnhub.io/api/v1

Sentiment insights (optional)

ADANOS_API_KEY=your_adanos_api_key

ADANOS_API_BASE_URL=https://api.adanos.org

AI Provider (optional, default: "gemini")

Supported: "gemini", "minimax", "siray"

AI_PROVIDER=gemini

Gemini

GEMINI_API_KEY=your_gemini_api_key

MiniMax (optional, used when AI_PROVIDER=minimax or as fallback)

Get your key at https://platform.minimaxi.com

MINIMAX_API_KEY=your_minimax_api_key

Inngest Signing Key (required for Vercel deployment)

Get this from your Inngest dashboard: https://app.inngest.com/env/settings/keys

INNGEST_SIGNING_KEY=your_inngest_signing_key

Required in production so sign-up can send the welcome-email event

INNGEST_EVENT_KEY=your_inngest_event_key

Market data (optional)

Several free Finnhub keys, rotated per request: each adds 60 requests/min.

FINNHUB_API_KEYS=key_one,key_two

"cached" (default) refreshes quotes hourly for everyone; "realtime" refreshes every 15s

and turns on email price alerts (an OpenStock Cloud feature).

NEXT_PUBLIC_OPENSTOCK_DATA_MODE=cached

Social sign-in (optional; each provider is hidden server-side until set)

Callback URLs: <BETTER_AUTH_URL>/api/auth/callback/google and /api/auth/callback/github

Leave these commented out until you have real credentials: any value turns the provider on

GOOGLE_CLIENT_ID=your_google_client_id

GOOGLE_CLIENT_SECRET=your_google_client_secret

GITHUB_CLIENT_ID=your_github_client_id

GITHUB_CLIENT_SECRET=your_github_client_secret

Email (optional; Nodemailer via Gmail, consider App Passwords if 2FA)

[email protected]

NODEMAILER_PASSWORD=your_gmail_app_password

Notes

🧱 Project Structure

app/
  (auth)/
    layout.tsx
    sign-in/page.tsx
    sign-up/page.tsx
  (root)/
    layout.tsx
    page.tsx
    help/page.tsx
    stocks/[symbol]/page.tsx
  api/inngest/route.ts
  globals.css
  layout.tsx
components/
  ui/…          # shadcn/radix primitives (button, dialog, command, input, etc.)
  forms/…       # InputField, SelectField, CountrySelectField, FooterLink
  Header.tsx, Footer.tsx, SearchCommand.tsx, WatchlistButton.tsx, …
database/
  models/watchlist.model.ts
  mongoose.ts
lib/
  actions/…     # server actions (auth, finnhub, user, watchlist)
  better-auth/…
  inngest/…     # client, functions, prompts
  nodemailer/…  # transporter, email templates
  constants.ts, utils.ts
scripts/
  test-db.mjs
types/
  global.d.ts
next.config.ts          # i.ibb.co image domain allowlist
postcss.config.mjs      # Tailwind v4 postcss setup
components.json         # shadcn config
public/assets/images/   # logos and screenshots

📡 Data & Integrations

🌍 Market Support

OpenStock supports 30+ international stock exchanges including NSE, LSE, TSX, and more. However, please be aware of important limitations based on our data providers.

Quick Facts:

See MARKET_SUPPORT.md for: For the latest supported symbols and exchanges, see Finnhub's exchange list.

🧪 Scripts & Tooling

Package scripts

Developer experience

🤝 Contributing

You belong here. Whether you’re a student, a self-taught dev, or a seasoned engineer — contributions are welcome.

🛡️ Security

If you discover a vulnerability:

📜 License

OpenStock is and will remain free and open for everyone. This project is licensed under the AGPL-3.0 License - see the LICENSE file for details.

🙏 Acknowledgements

— Built openly, for everyone, forever free. Open Dev Society.
© Open Dev Society. This project is licensed under AGPL-3.0; if you modify, redistribute, or deploy it (including as a web service), you must release your source code under the same license and credit the original authors.

Our Honourable Contributors

❤️ Sponsor OpenStock

OpenStock is free, open source and used by 13,000+ registered people. Keeping it that way costs money every month: hosting, the database, market data keys, AI and email, and the hours that go into reviewing pull requests and shipping fixes.

How OpenStock is funded

Pick a tier. Each link opens GitHub Sponsors with the amount already selected. Cancel any time.

| Tier | Monthly | What you get | |---|---|---| | Backer | $5 | Your name in this README | | Supporter | $25 | Name and avatar on the sponsor wall and the sponsor page | | Company | $100 | Your logo in the footer of every public page, in this README and on the sponsor page | | Partner | $500 | One of three sponsor slots in the app sidebar, se

GitHub Stars & Activity

20,047Stars
2,454Forks
37Open issues
TypeScriptLanguage

GitHub Popularity

GitHub stars20,047
Forks2,454
Open issues37
Primary languageTypeScript
LicenseAGPL-3.0
Stars gained today5,974
Created2025-09-28
Last pushed2026-10-10

Trending History

Monthly boardrank #34 · ▲ 5,974 stars

Related GitHub Projects

1

openclaw / openclaw

TypeScript★ 391,810⑂ 82,380▲ 181 stars
→
2

morluto / rea

TypeScript★ 164,354⑂ 38,750▲ 45,327 stars
→
3

paperclipai / paperclip

TypeScript★ 101,027⑂ 16,979▲ 633 stars
→
4

agalwood / Motrix

TypeScript★ 56,605⑂ 5,071▲ 113 stars
→
5

Crosstalk-Solutions / project-nomad

TypeScript★ 39,737⑂ 3,988▲ 213 stars
→
6

tashfeenahmed / freellmapi

TypeScript★ 34,160⑂ 4,678▲ 548 stars
→
7

mksglu / context-mode

TypeScript★ 27,394⑂ 1,951▲ 246 stars
→
8

rmyndharis / OpenWA

TypeScript★ 15,389⑂ 3,604▲ 168 stars
→

More Trending Repositories