Skip to content

Latest commit

 

History

History
1043 lines (796 loc) · 30.3 KB

File metadata and controls

1043 lines (796 loc) · 30.3 KB

Getting Started with Fincept Terminal Development

Your Complete Onboarding Guide

Welcome to Fincept Terminal! This guide will get you from zero to your first contribution in under an hour. Whether you're joining as an intern, open-source contributor, or just exploring, this is your starting point.


🎯 What is Fincept Terminal?

Fincept Terminal is an open-source financial analysis platform that aims to democratize access to professional-grade financial tools. Think of it as building a free, open-source alternative to Bloomberg Terminal.

The Big Picture

Current Reality:

  • Bloomberg Terminal: $24,000/year per user
  • Refinitiv Eikon: $20,000+/year
  • Professional tools locked behind paywalls

Our Vision:

  • 100% free and open source
  • Integrate 100+ data sources (stocks, crypto, forex, economic data, news, etc.)
  • AI-powered analysis and insights
  • Built by the community, for the community

What We're Building

┌─────────────────────────────────────────────────────────────┐
│                    Fincept Terminal                         │
│  Professional Financial Analysis Platform (Open Source)     │
└─────────────────────────────────────────────────────────────┘
                            │
        ┌───────────────────┼───────────────────┐
        │                   │                   │
    ┌───▼────┐         ┌────▼────┐        ┌────▼────┐
    │  Data  │         │   UI    │        │   AI    │
    │ Layer  │         │  Layer  │        │  Layer  │
    └───┬────┘         └────┬────┘        └────┬────┘
        │                   │                   │
    100+ APIs         Bloomberg-style      Ollama/MCP
    Python wrappers   React Components     Integration

Technology Decisions (and Why)

  • Tauri (Rust) - Native performance, small binary size (~15MB vs 500MB Electron)
  • React 19 + TypeScript - Modern, type-safe UI development
  • Python Scripts - Vast ecosystem of financial libraries (yfinance, pandas, etc.)
  • SQLite + IndexedDB - Local data caching for speed
  • TailwindCSS v4 - Rapid UI development with consistency

⚡ Quick Setup (30 Minutes)

Prerequisites Check

Before starting, verify you have these installed:

# Check Bun (need 1.0+)
bun --version
# If not installed: Download from https://bun.sh/

# Check Rust (need 1.70+)
rustc --version
cargo --version
# If not installed: https://www.rust-lang.org/tools/install

# Check Python (need 3.11+)
python --version
# or
python3 --version

# Check Git
git --version

Don't have these? Install them in this order:

  1. Bun: https://bun.sh/ (replaces Node.js/npm)
  2. Rust: https://www.rust-lang.org/tools/install
  3. Python 3.11+: https://www.python.org/downloads/
  4. Git: https://git-scm.com/downloads

Setup in 5 Commands

# 1. Clone the repository
git clone https://github.com/Fincept-Corporation/FinceptTerminal.git
cd FinceptTerminal/fincept-terminal-desktop

# 2. Install dependencies with Bun
bun install

# 3. Build Rust backend (first time only - optional)
cd src-tauri
cargo build
cd ..

# 4. Run the app!
bun run tauri:dev

Expected Result: Fincept Terminal window should open, showing the login screen.

Verify Everything Works

Once the app opens:

  1. Click "Continue as Guest" - No registration needed for development
  2. Navigate to Markets tab - Should see market data (may take a moment to load)
  3. Check browser console - Press F12, should see no red errors
  4. Try switching tabs - Dashboard, Markets, News, etc.

If something breaks: Jump to Troubleshooting section below.


🗺️ Understanding the Codebase

Project Structure (The Important Parts)

FinceptTerminal/
│
├── fincept-terminal-desktop/          ← Main application (you'll work here)
│   ├── src/                           ← React/TypeScript frontend
│   │   ├── components/
│   │   │   ├── auth/                  ← Login, Register screens
│   │   │   ├── tabs/                  ← Financial terminal features
│   │   │   │   ├── DashboardTab.tsx   ← Overview screen
│   │   │   │   ├── MarketsTab.tsx     ← Live market data
│   │   │   │   ├── ChatTab.tsx        ← AI chat interface
│   │   │   │   ├── agents/            ← AI agent management
│   │   │   │   ├── mcp/               ← MCP server marketplace
│   │   │   │   └── data-sources/      ← Data connector UI
│   │   │   └── ui/                    ← 40+ reusable components
│   │   ├── services/                  ← API integration layer
│   │   └── contexts/                  ← Global state (auth, theme)
│   │
│   ├── src-tauri/                     ← Rust backend
│   │   ├── src/
│   │   │   ├── commands/              ← Tauri commands (Rust → Frontend)
│   │   │   └── data_sources/          ← Data processing modules
│   │   └── resources/
│   │       └── scripts/               ← Python API wrappers
│   │           ├── yfinance_data.py   ← Yahoo Finance
│   │           ├── polygon_data.py    ← Polygon.io
│   │           ├── fred_data.py       ← Economic data
│   │           └── econdb_data.py     ← Global indicators
│   │
│   ├── package.json                   ← Node dependencies
│   ├── Cargo.toml                     ← Rust dependencies
│   └── vite.config.ts                 ← Build configuration
│
└── legacy-python-depreciated/         ← OLD CODE - IGNORE THIS

How Data Flows Through the System

User clicks "Get AAPL quote"
        │
        ▼
React Component (MarketsTab.tsx)
        │
        ▼
Service Layer (marketDataService.ts)
        │
        ├─── Option A: Direct API call (yfinance via web)
        │
        └─── Option B: Invoke Tauri Command
                    │
                    ▼
              Rust Backend (commands/market_data.rs)
                    │
                    ▼
              Execute Python Script (yfinance_data.py)
                    │
                    ▼
              Python fetches from Yahoo Finance
                    │
                    ▼
              Returns JSON to Rust
                    │
                    ▼
              Rust returns to React
                    │
                    ▼
              UI updates with data

Key Files to Know

If you want to... Look at this file
Add a new financial data source (Python) src-tauri/resources/scripts/yfinance_data.py
Create a new terminal tab (React) src/components/tabs/DashboardTab.tsx
Add a Rust command (performance) src-tauri/src/commands/market_data.rs
Modify authentication src/contexts/AuthContext.tsx
Add a reusable UI component src/components/ui/button.tsx (as example)
Configure the app src-tauri/tauri.conf.json
Understand Bloomberg color scheme Any file in src/components/tabs/ (uses constants)

🎓 Your First Contribution (Choose Your Path)

Pick one based on your skill level:

Path A: Super Easy (15 minutes)

Improve Documentation

  1. Find a typo or unclear explanation in any .md file
  2. Fix it
  3. Submit a PR
git checkout -b docs/fix-typo
# Edit the file
git add .
git commit -m "docs: fix typo in README"
git push origin docs/fix-typo

Path B: Easy (30 minutes)

Add a Stock Symbol to Default Watchlist

  1. Open src/services/tickerStorageService.ts
  2. Find the default tickers array
  3. Add a new stock (e.g., "NVDA")
  4. Test in dev mode
  5. Submit PR

Path C: Medium (1-2 hours)

Create a Simple Python API Wrapper

Follow the pattern in yfinance_data.py to create a wrapper for a new free API:

Example: CoinGecko Crypto Prices

# src-tauri/resources/scripts/coingecko_data.py
import sys
import json
import requests

def get_crypto_price(coin_id):
    url = f"https://api.coingecko.com/api/v3/simple/price"
    params = {
        'ids': coin_id,
        'vs_currencies': 'usd',
        'include_24hr_change': 'true'
    }

    try:
        response = requests.get(url, params=params, timeout=10)
        response.raise_for_status()
        data = response.json()

        return {
            "coin": coin_id,
            "price": data[coin_id]['usd'],
            "change_24h": data[coin_id]['usd_24h_change']
        }
    except Exception as e:
        return {"error": str(e)}

def main():
    if len(sys.argv) < 3:
        print(json.dumps({"error": "Usage: python coingecko_data.py price <coin_id>"}))
        sys.exit(1)

    command = sys.argv[1]
    coin_id = sys.argv[2]

    if command == "price":
        result = get_crypto_price(coin_id)
        print(json.dumps(result, indent=2))

if __name__ == "__main__":
    main()

Test it:

cd fincept-terminal-desktop/src-tauri
python resources/scripts/coingecko_data.py price bitcoin

Path D: Advanced (2-4 hours)

Build a New Tab Component

Create a simple "Crypto Dashboard" tab:

  1. Create src/components/tabs/CryptoTab.tsx
  2. Use Bloomberg color scheme (copy from MarketsTab.tsx)
  3. Integrate with your CoinGecko wrapper
  4. Register tab in DashboardScreen.tsx

📋 Common Development Workflows

Workflow 1: Add a New Python API Wrapper

# 1. Create the wrapper file
cd fincept-terminal-desktop/src-tauri/resources/scripts
touch my_api_wrapper.py

# 2. Write the wrapper (follow yfinance_data.py pattern)
# - Use command-line arguments
# - Return JSON to stdout
# - Handle errors gracefully

# 3. Test it standalone
python my_api_wrapper.py command arg1 arg2

# 4. (Optional) Add Rust command to call it
# Edit src-tauri/src/commands/my_commands.rs

# 5. Test in the app
cd ../..
npm run tauri dev

Workflow 2: Create a New UI Tab

# 1. Create component file
cd fincept-terminal-desktop/src/components/tabs
touch MyNewTab.tsx

# 2. Copy structure from existing tab
# Use DashboardTab.tsx as template
# Keep Bloomberg color scheme

# 3. Register in DashboardScreen.tsx
# Add to tabs array

# 4. Test
bun run dev  # Frontend only (faster for UI work)
# or
bun run tauri:dev  # Full app

Workflow 3: Fix a Bug

# 1. Create a branch
git checkout -b fix/issue-123-market-data-error

# 2. Reproduce the bug
bun run tauri:dev

# 3. Fix the issue
# Edit relevant files

# 4. Test the fix
# Verify bug is gone

# 5. Commit and push
git add .
git commit -m "fix: resolve market data loading error

- Issue was null check missing in MarketsTab.tsx:145
- Added proper error handling
- Tested with empty API responses

Closes #123"

git push origin fix/issue-123-market-data-error

Workflow 4: Update Dependencies

# Update Bun packages
cd fincept-terminal-desktop
bun update

# Update Rust crates
cd src-tauri
cargo update

# Test everything still works
cd ..
bun run tauri:build

🎨 Design System & Coding Standards

Bloomberg Color Palette (MUST USE)

These exact colors are used throughout the app for consistency:

// Copy-paste this into any new component
const BLOOMBERG_ORANGE = '#FFA500';    // Headers, branding, highlights
const BLOOMBERG_WHITE = '#FFFFFF';     // Primary text
const BLOOMBERG_RED = '#FF0000';       // Negative values, errors
const BLOOMBERG_GREEN = '#00C800';     // Positive values, success
const BLOOMBERG_YELLOW = '#FFFF00';    // Warnings, secondary headers
const BLOOMBERG_GRAY = '#787878';      // Borders, disabled items
const BLOOMBERG_DARK_BG = '#1a1a1a';   // Main background
const BLOOMBERG_PANEL_BG = '#000000';  // Panel/card backgrounds

Examples:

// Header with orange branding
<div style={{ color: BLOOMBERG_ORANGE, fontWeight: 'bold' }}>
  MARKET DATA
</div>

// Positive/negative price changes
<div style={{ color: change >= 0 ? BLOOMBERG_GREEN : BLOOMBERG_RED }}>
  {change >= 0 ? '+' : ''}{change.toFixed(2)}%
</div>

// Panel background
<div style={{
  backgroundColor: BLOOMBERG_PANEL_BG,
  border: `1px solid ${BLOOMBERG_GRAY}`
}}>
  Content here
</div>

Typography Standards

font-family: 'Consolas, monospace'  /* Use everywhere */

/* Size hierarchy */
font-size: 16px  /* Main section headers */
font-size: 14px  /* Sub-headers */
font-size: 12px  /* Body text */
font-size: 11px  /* Secondary text */
font-size: 10px  /* Status bar, footer */
font-size: 9px   /* Dense data tables */

Code Style Rules

TypeScript/React:

  • ✅ Use functional components with hooks
  • ✅ TypeScript strict mode (define all types)
  • ✅ Props interfaces for all components
  • ✅ Use const over let when possible
  • ✅ Descriptive variable names (stockPrice not sp)

Python:

  • ✅ Follow PEP 8 style guide
  • ✅ Type hints for function arguments
  • ✅ Docstrings for all functions
  • ✅ Error handling with try-except
  • ✅ Return JSON to stdout

Rust:

  • ✅ Use cargo fmt before committing
  • ✅ Use cargo clippy to catch issues
  • ✅ Result types for error handling
  • ✅ Documentation comments (///)
  • ✅ Async for I/O operations

🔍 Navigation Cheat Sheet

"I want to add/modify..."

Feature Primary File(s) Language
Stock market data display src/components/tabs/MarketsTab.tsx TypeScript
AI chat functionality src/components/tabs/ChatTab.tsx TypeScript
News feed integration src/components/tabs/NewsTab.tsx TypeScript
User authentication src/contexts/AuthContext.tsx TypeScript
Payment/subscription logic src/services/paymentApi.tsx TypeScript
Yahoo Finance integration src-tauri/resources/scripts/yfinance_data.py Python
Polygon.io API wrapper src-tauri/resources/scripts/polygon_data.py Python
Economic data (FRED) src-tauri/resources/scripts/fred_data.py Python
Performance-critical calculations src-tauri/src/commands/market_data.rs Rust
Database operations src/services/sqliteService.ts TypeScript
Reusable button component src/components/ui/button.tsx TypeScript
Reusable table component src/components/ui/table.tsx TypeScript
App configuration (window size, etc.) src-tauri/tauri.conf.json JSON
Build settings vite.config.ts / Cargo.toml Config

"I'm getting an error in..."

Error Location What to Check
Terminal shows Rust error Check src-tauri/src/ files, run cargo clippy
Browser console error Check React components in src/components/
Build fails Check package.json and Cargo.toml dependencies
Python script fails Test script directly: python script.py command args
App won't start Check both bun install and cargo build succeeded

🐛 Troubleshooting

Issue: macOS won't open the app (Gatekeeper)

Symptoms: "App is damaged and can't be opened" or "App can't be opened because it is from an unidentified developer"

Cause: Unsigned development builds are blocked by macOS Gatekeeper

Solutions:

Method 1: Remove Quarantine Flag (Recommended)

# After downloading DMG
xattr -cr ~/Downloads/FinceptTerminal-*.dmg

# After dragging to Applications
xattr -cr /Applications/FinceptTerminal.app

# Now launch normally
open /Applications/FinceptTerminal.app

Method 2: Right-Click Method

  1. Right-click (or Control+Click) on the app
  2. Select "Open" from the menu
  3. Click "Open" in the warning dialog
  4. App will launch and be remembered for future launches

Method 3: System Settings

  1. Try to open the app normally (it will fail)
  2. Go to System SettingsPrivacy & Security
  3. Scroll down and click "Open Anyway"
  4. Confirm by clicking "Open"

Why this happens: Development and artifact builds are not signed with an Apple Developer certificate ($99/year). Official releases from GitHub Releases page may include signed versions.


Issue: bun install fails

Symptoms: Errors during bun install, missing modules

Solutions:

# Try clearing cache
rm -rf node_modules bun.lockb
bun install

# Check Bun version (need 1.0+)
bun --version

# Update Bun
bun upgrade

Issue: Tauri won't build

Symptoms: cargo build errors, Rust compilation fails

Solutions:

# Update Rust
rustup update

# Clean and rebuild
cd src-tauri
cargo clean
cargo build

# Check specific error - common issues:
# - Missing system libraries (WebView2 on Windows)
# - Outdated Rust version
# - Corrupted Cargo cache

Issue: Python script not found

Symptoms: "File not found" when running Python commands

Solutions:

# Verify Python is in PATH
python --version
# or
python3 --version

# Check script location
ls src-tauri/resources/scripts/

# Use absolute path for testing
python C:/full/path/to/script.py command args

Issue: React component not updating

Symptoms: Changes to .tsx files don't appear in browser

Solutions:

# Hard refresh browser (Ctrl+Shift+R)

# Restart dev server
# Stop current process (Ctrl+C)
bun run dev

# Clear Vite cache
rm -rf node_modules/.vite
bun run dev

Issue: Data not loading in Markets tab

Symptoms: Empty markets tab, loading forever

Solutions:

  1. Check browser console (F12) for error messages
  2. Verify internet connection
  3. Check if API keys are needed (FRED, Polygon.io)
  4. Test Python script directly:
cd src-tauri
python resources/scripts/yfinance_data.py quote AAPL

Issue: TypeScript errors

Symptoms: Red underlines in VS Code, type errors

Solutions:

# Check TypeScript compilation
bun run build

# Install VS Code extensions:
# - ESLint
# - TypeScript and JavaScript Language Features

# Restart TypeScript server in VS Code:
# Ctrl+Shift+P → "Restart TS Server"

Issue: Port already in use

Symptoms: "Error: Port 1420 is already in use"

Solutions:

# Windows
netstat -ano | findstr :1420
taskkill /PID <PID> /F

# Mac/Linux
lsof -ti:1420 | xargs kill -9

# Or change port in vite.config.ts

📚 Learning Resources by Role

For Python Developers

Basics:

Financial Libraries:

APIs to Study:

For TypeScript/React Developers

Basics:

UI Libraries:

Charts:

For Rust Developers

Basics:

Tauri Specific:

Advanced:

Financial Domain Knowledge

Learn Finance:

Technical Analysis:


💬 Getting Help

Before Asking

  1. Search GitHub Issues: Your question may already be answered
  2. Check documentation: CLAUDE.md and role-specific guides
  3. Google the error message: Often finds quick solutions
  4. Review similar code: Look at existing files for patterns

Where to Ask

GitHub Issues: https://github.com/Fincept-Corporation/FinceptTerminal/issues

  • Bug reports
  • Feature requests
  • Technical questions

GitHub Discussions: https://github.com/Fincept-Corporation/FinceptTerminal/discussions

  • General questions
  • Design discussions
  • Project ideas

Email: support@fincept.in

  • Internship inquiries
  • Private concerns
  • Partnership opportunities

How to Ask Good Questions

Bad Question:

"My code doesn't work, help!"

Good Question:

"I'm trying to add a new Python API wrapper for CoinGecko. I followed the pattern from yfinance_data.py, but when I run python coingecko_data.py price bitcoin, I get a timeout error. Here's my code: [paste code]. The API works fine in Postman. Any ideas?"

Include:

  • What you're trying to do
  • What you expected to happen
  • What actually happened (error messages)
  • What you've already tried
  • Relevant code snippets
  • System info (OS, Node version, etc.)

🚀 Your First Week Roadmap

Day 1: Environment Setup & Exploration

  • ✅ Install all prerequisites
  • ✅ Clone and build the project
  • ✅ Run the app in dev mode
  • ✅ Browse through code structure
  • ✅ Read CLAUDE.md for architecture overview

Day 2: Deep Dive Your Area

If Python: Read PYTHON_INTERN_GUIDE.md, test existing wrappers If TypeScript: Read TYPESCRIPT_INTERN_GUIDE.md, explore UI components If Rust: Read RUST_INTERN_GUIDE.md, study Tauri commands

Day 3: First Contribution

  • ✅ Pick a small task from "Your First Contribution" section
  • ✅ Create a branch
  • ✅ Make changes
  • ✅ Test locally
  • ✅ Submit PR

Day 4-5: Real Feature

  • ✅ Find a GitHub issue tagged "good first issue"
  • ✅ Comment that you're working on it
  • ✅ Implement the feature
  • ✅ Write tests
  • ✅ Submit PR

Week 2+: Autonomous Contributions

  • ✅ Take on medium-complexity issues
  • ✅ Propose new features
  • ✅ Help review other PRs
  • ✅ Improve documentation
  • ✅ Build relationships with maintainers

📊 Project Metrics & Impact

Current Status (as of 2026)

  • 376+ GitHub Stars
  • 🔧 Active Development: Daily commits
  • 🌍 Contributors: Growing community
  • 📦 Tech Stack: Tauri 2.0 + React 19 + Rust

What's Complete

  • ✅ Tauri desktop app framework
  • ✅ Authentication system (guest + registered)
  • ✅ Payment integration (Razorpay)
  • ✅ Bloomberg-style UI foundation
  • ✅ Python wrapper architecture
  • ✅ Basic market data integration
  • ✅ Tab-based navigation system

What's In Progress

  • 🚧 Real-time WebSocket data streaming
  • 🚧 AI agent framework (Ollama)
  • 🚧 MCP server marketplace
  • 🚧 Advanced charting (lightweight-charts)
  • 🚧 Economic data integration (FRED, EconDB)

What Needs Help (Your Impact!)

  • 🎯 Python Wrappers: 100+ financial APIs to integrate
  • 🎯 UI Tabs: News, Screener, Portfolio, Charts, Analytics
  • 🎯 Performance: Optimize data processing in Rust
  • 🎯 Documentation: Improve guides and tutorials
  • 🎯 Testing: Add unit and integration tests

🎯 Finding Issues to Work On

Issue Labels Guide

Label Difficulty Good For
good first issue Easy First contribution
documentation Easy Writers, beginners
python Variable Python developers
react Variable Frontend developers
rust Medium+ Rust developers
enhancement Variable Feature builders
bug Variable Bug fixers
help wanted Variable Anyone available

Search for Issues

# GitHub issue search examples
label:"good first issue" is:open
label:python is:open
label:react label:"help wanted" is:open
is:issue is:open sort:updated-desc

Before Starting Work

  1. Comment on the issue: "I'd like to work on this!"
  2. Wait for assignment: Maintainer will assign to you
  3. Ask questions: If requirements unclear
  4. Set expectations: "I can submit PR by Friday"

✅ Pre-Commit Checklist

Before every commit, verify:

Code Quality:

  • Code builds without errors
  • No console errors or warnings
  • Follows project style guide
  • Comments added for complex logic

Testing:

  • Feature works as expected
  • Tested edge cases (empty data, errors, etc.)
  • No regressions (didn't break existing features)
  • Works on different screen sizes (if UI)

Git:

  • Descriptive commit message
  • Committed to correct branch
  • Only relevant files included
  • No sensitive data (API keys, passwords)

Documentation:

  • Updated relevant .md files
  • Added code comments
  • Updated API documentation (if applicable)

🌟 Contributing Culture

Our Values

1. Learning Over Perfection

  • It's okay to make mistakes
  • Ask questions freely
  • Every PR is a learning opportunity
  • Reviewers are teachers, not critics

2. Collaboration Over Competition

  • Help other contributors
  • Share knowledge generously
  • Credit others' work
  • Build together

3. Quality Over Speed

  • Take time to understand
  • Write maintainable code
  • Test thoroughly
  • Document well

4. Impact Over Activity

  • One good feature > ten half-baked ones
  • Think about end users
  • Consider long-term maintenance
  • Solve real problems

Code of Conduct

  • 🤝 Be respectful and inclusive
  • 💬 Communicate clearly and kindly
  • 🎯 Stay on topic in discussions
  • 🙏 Appreciate others' time and effort
  • 🚫 Zero tolerance for harassment or discrimination

🎉 Success Stories & Impact

What Interns Have Built (Examples)

Python Wrappers:

  • "Added CoinGecko API wrapper - now supports 10,000+ cryptocurrencies"
  • "Built Financial Modeling Prep integration - added fundamental data"
  • "Created News API wrapper - real-time financial news"

React Features:

  • "Built Portfolio Tracker tab - users can track P&L across accounts"
  • "Added Stock Screener - filter 5,000+ stocks by criteria"
  • "Created Custom Alerts - price and indicator notifications"

Rust Optimizations:

  • "Optimized RSI calculation - 10x faster on large datasets"
  • "Added parallel data processing - handles 1000+ symbols"
  • "Built caching layer - reduced API calls by 80%"

Your Contribution Path

Week 1:  Fix a typo, add a stock symbol
         ↓
Week 2:  Build a simple API wrapper
         ↓
Month 1: Create a complete feature tab
         ↓
Month 2: Become a regular contributor
         ↓
Month 3: Help review other PRs, mentor new interns
         ↓
Beyond:  Core team member, open source portfolio piece

📞 Contact & Community

Project Repository: https://github.com/Fincept-Corporation/FinceptTerminal/

Key Links:

Social:

  • Star the repo to show support
  • 🔄 Share with finance students, developers
  • 💬 Join discussions on GitHub

🚀 Next Steps

Right Now:

  1. ✅ Finish setup (if you haven't)
  2. ✅ Read your role-specific guide:
    • Python → PYTHON_INTERN_GUIDE.md
    • TypeScript/React → TYPESCRIPT_INTERN_GUIDE.md
    • Rust → RUST_INTERN_GUIDE.md
  3. ✅ Pick your first contribution
  4. ✅ Start coding!

This Week:

  • Make your first PR
  • Introduce yourself in GitHub Discussions
  • Explore the codebase thoroughly
  • Ask questions early and often

This Month:

  • Build a complete feature
  • Help review a PR
  • Contribute to documentation
  • Join the community

💡 Final Words

Fincept Terminal is more than just code - it's a mission to democratize financial analysis. Every API wrapper you write, every UI component you build, every bug you fix brings professional-grade financial tools to students, researchers, and professionals who can't afford $24,000/year subscriptions.

Your work matters.

The terminal you're building today will help:

  • 🎓 Students learning finance and trading
  • 📊 Researchers analyzing markets
  • 💼 Professionals in developing countries
  • 🚀 Startups building on open data
  • 🌍 Anyone who believes finance should be accessible

Welcome to the team. Let's build something amazing together! 🚀


Questions? Stuck? Need help? → Open an issue or discussion on GitHub → Email support@fincept.in → Check the troubleshooting section above

Ready to contribute? → Pick an issue: https://github.com/Fincept-Corporation/FinceptTerminal/issues → Read your role guide: PYTHON_INTERN_GUIDE.md / TYPESCRIPT_INTERN_GUIDE.md / RUST_INTERN_GUIDE.md → Join the mission! ⭐