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.
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.
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
┌─────────────────────────────────────────────────────────────┐
│ 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
- 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
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 --versionDon't have these? Install them in this order:
- Bun: https://bun.sh/ (replaces Node.js/npm)
- Rust: https://www.rust-lang.org/tools/install
- Python 3.11+: https://www.python.org/downloads/
- Git: https://git-scm.com/downloads
# 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:devExpected Result: Fincept Terminal window should open, showing the login screen.
Once the app opens:
- Click "Continue as Guest" - No registration needed for development
- Navigate to Markets tab - Should see market data (may take a moment to load)
- Check browser console - Press F12, should see no red errors
- Try switching tabs - Dashboard, Markets, News, etc.
If something breaks: Jump to Troubleshooting section below.
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
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
| 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) |
Pick one based on your skill level:
Improve Documentation
- Find a typo or unclear explanation in any
.mdfile - Fix it
- 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-typoAdd a Stock Symbol to Default Watchlist
- Open
src/services/tickerStorageService.ts - Find the default tickers array
- Add a new stock (e.g., "NVDA")
- Test in dev mode
- Submit PR
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 bitcoinBuild a New Tab Component
Create a simple "Crypto Dashboard" tab:
- Create
src/components/tabs/CryptoTab.tsx - Use Bloomberg color scheme (copy from
MarketsTab.tsx) - Integrate with your CoinGecko wrapper
- Register tab in
DashboardScreen.tsx
# 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# 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# 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# 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:buildThese 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 backgroundsExamples:
// 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>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 */TypeScript/React:
- ✅ Use functional components with hooks
- ✅ TypeScript strict mode (define all types)
- ✅ Props interfaces for all components
- ✅ Use
constoverletwhen possible - ✅ Descriptive variable names (
stockPricenotsp)
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 fmtbefore committing - ✅ Use
cargo clippyto catch issues - ✅ Result types for error handling
- ✅ Documentation comments (
///) - ✅ Async for I/O operations
"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 |
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.appMethod 2: Right-Click Method
- Right-click (or Control+Click) on the app
- Select "Open" from the menu
- Click "Open" in the warning dialog
- App will launch and be remembered for future launches
Method 3: System Settings
- Try to open the app normally (it will fail)
- Go to System Settings → Privacy & Security
- Scroll down and click "Open Anyway"
- 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.
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 upgradeSymptoms: 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 cacheSymptoms: "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 argsSymptoms: 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 devSymptoms: Empty markets tab, loading forever
Solutions:
- Check browser console (F12) for error messages
- Verify internet connection
- Check if API keys are needed (FRED, Polygon.io)
- Test Python script directly:
cd src-tauri
python resources/scripts/yfinance_data.py quote AAPLSymptoms: 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"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.tsBasics:
- Python Official Tutorial: https://docs.python.org/3/tutorial/
- Requests Library: https://requests.readthedocs.io/
Financial Libraries:
- yfinance: https://github.com/ranaroussi/yfinance
- pandas: https://pandas.pydata.org/docs/
- numpy: https://numpy.org/doc/
APIs to Study:
- Alpha Vantage: https://www.alphavantage.co/documentation/
- Polygon.io: https://polygon.io/docs
- FRED API: https://fred.stlouisfed.org/docs/api/
Basics:
- React 19 Docs: https://react.dev/
- TypeScript Handbook: https://www.typescriptlang.org/docs/
- React + TS Cheatsheet: https://react-typescript-cheatsheet.netlify.app/
UI Libraries:
- Radix UI: https://www.radix-ui.com/
- TailwindCSS: https://tailwindcss.com/docs
- Lucide Icons: https://lucide.dev/
Charts:
- Lightweight Charts: https://tradingview.github.io/lightweight-charts/
- Recharts: https://recharts.org/
Basics:
- The Rust Book: https://doc.rust-lang.org/book/
- Rust by Example: https://doc.rust-lang.org/rust-by-example/
Tauri Specific:
- Tauri Docs: https://tauri.app/
- Tauri Commands: https://tauri.app/v1/guides/features/command/
Advanced:
- Tokio (async): https://tokio.rs/
- Serde (JSON): https://serde.rs/
Learn Finance:
- Investopedia: https://www.investopedia.com/
- Khan Academy Finance: https://www.khanacademy.org/economics-finance-domain
Technical Analysis:
- TradingView Education: https://www.tradingview.com/education/
- Candlestick patterns, indicators (RSI, MACD, etc.)
- Search GitHub Issues: Your question may already be answered
- Check documentation: CLAUDE.md and role-specific guides
- Google the error message: Often finds quick solutions
- Review similar code: Look at existing files for patterns
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
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.)
- ✅ Install all prerequisites
- ✅ Clone and build the project
- ✅ Run the app in dev mode
- ✅ Browse through code structure
- ✅ Read CLAUDE.md for architecture overview
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
- ✅ Pick a small task from "Your First Contribution" section
- ✅ Create a branch
- ✅ Make changes
- ✅ Test locally
- ✅ Submit PR
- ✅ Find a GitHub issue tagged "good first issue"
- ✅ Comment that you're working on it
- ✅ Implement the feature
- ✅ Write tests
- ✅ Submit PR
- ✅ Take on medium-complexity issues
- ✅ Propose new features
- ✅ Help review other PRs
- ✅ Improve documentation
- ✅ Build relationships with maintainers
- ⭐ 376+ GitHub Stars
- 🔧 Active Development: Daily commits
- 🌍 Contributors: Growing community
- 📦 Tech Stack: Tauri 2.0 + React 19 + Rust
- ✅ 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
- 🚧 Real-time WebSocket data streaming
- 🚧 AI agent framework (Ollama)
- 🚧 MCP server marketplace
- 🚧 Advanced charting (lightweight-charts)
- 🚧 Economic data integration (FRED, EconDB)
- 🎯 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
| 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 |
# 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
- Comment on the issue: "I'd like to work on this!"
- Wait for assignment: Maintainer will assign to you
- Ask questions: If requirements unclear
- Set expectations: "I can submit PR by Friday"
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)
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
- 🤝 Be respectful and inclusive
- 💬 Communicate clearly and kindly
- 🎯 Stay on topic in discussions
- 🙏 Appreciate others' time and effort
- 🚫 Zero tolerance for harassment or discrimination
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%"
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
Project Repository: https://github.com/Fincept-Corporation/FinceptTerminal/
Key Links:
- 📧 Email: support@fincept.in
- 🐛 Bug Reports: GitHub Issues
- 💡 Feature Requests: GitHub Discussions
- 📚 Documentation: See CLAUDE.md, role-specific guides
Social:
- ⭐ Star the repo to show support
- 🔄 Share with finance students, developers
- 💬 Join discussions on GitHub
Right Now:
- ✅ Finish setup (if you haven't)
- ✅ Read your role-specific guide:
- Python → PYTHON_INTERN_GUIDE.md
- TypeScript/React → TYPESCRIPT_INTERN_GUIDE.md
- Rust → RUST_INTERN_GUIDE.md
- ✅ Pick your first contribution
- ✅ 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
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! ⭐