{"id":48540129,"url":"https://github.com/ebbeelsborg/web3-solana","last_synced_at":"2026-04-08T04:01:44.074Z","repository":{"id":345458057,"uuid":"1185934940","full_name":"ebbeelsborg/web3-solana","owner":"ebbeelsborg","description":"Web3 Solana public address tracker","archived":false,"fork":false,"pushed_at":"2026-03-31T07:16:56.000Z","size":1592,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-03-31T07:40:08.361Z","etag":null,"topics":["blockchain","bullmq","mongodb-atlas","node-js","redis","smart-contracts","solana","web3"],"latest_commit_sha":null,"homepage":"https://web3-solana.replit.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ebbeelsborg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-19T04:53:55.000Z","updated_at":"2026-03-31T07:16:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ebbeelsborg/web3-solana","commit_stats":null,"previous_names":["ebbeelsborg/web3-solana"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ebbeelsborg/web3-solana","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebbeelsborg%2Fweb3-solana","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebbeelsborg%2Fweb3-solana/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebbeelsborg%2Fweb3-solana/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebbeelsborg%2Fweb3-solana/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ebbeelsborg","download_url":"https://codeload.github.com/ebbeelsborg/web3-solana/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebbeelsborg%2Fweb3-solana/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31539229,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","bullmq","mongodb-atlas","node-js","redis","smart-contracts","solana","web3"],"created_at":"2026-04-08T04:01:43.478Z","updated_at":"2026-04-08T04:01:44.068Z","avatar_url":"https://github.com/ebbeelsborg.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Solana Wallet Tracker\n\nA full-stack Web3 monitoring dashboard that tracks any Solana wallet address in real time. Paste a public address and immediately see its transaction history streaming live — no wallet connection, no private keys, purely read-only on-chain data.\n\n![5383DF2D-DC9C-40B5-A918-78966AB85B6E](https://github.com/user-attachments/assets/ec8f09c8-f093-47a3-b7ea-112adb7a0d48)\n\n---\n\n## Why This Is a Web3 App\n\nMost web apps talk to centralized servers you trust. This app talks directly to the **Solana blockchain** — a decentralized, permissionless network where every transaction is public and immutable. Anyone with an address can observe it. No account is required. No permission is granted or revoked. The data cannot be altered or deleted.\n\nWhat makes this Web3:\n\n- **Reads directly from the Solana ledger.** Every transaction displayed was verified by thousands of validators and permanently recorded on-chain. The app does not have its own concept of \"a transaction\" — it reads the canonical truth from the network.\n- **No custody.** The app never handles a private key, signs anything, or moves funds. It is a read-only window into on-chain activity.\n- **Permissionless.** Any valid Solana address — owned by a person, a program, a DAO treasury — can be tracked. No approval process, no sign-up.\n- **On-chain data as the source of truth.** Transaction signatures, slot numbers, fees, and success/failure status are all pulled directly from Solana validators. The database only exists as a cache to reduce RPC load and enable instant page loads.\n\n---\n\n## Features\n\n- Track any Solana (mainnet) wallet (read-only, no wallet connection)\n- Live transaction feed via WebSocket — new transactions appear without refreshing\n- Persistent storage with signature-level deduplication\n- Multi-wallet tracking from a single dashboard\n- Dark-mode UI with animated transaction rows\n- Copy signature to clipboard, open transaction in Solscan\n\n---\n\n## Architecture\n\n### Flow\n\n\u003e User adds wallet → API saves to MongoDB and enqueues a repeatable BullMQ job → Worker polls Solana, inserts new txs, emits over WebSocket → UI updates live.\n\n### Components\n\n| Component                                          | Purpose                                                                                                                                                                    |\n| -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [**Frontend**](docs/frontend.md) (React + Vite)    | Dashboard to add wallets, live transaction feed per wallet. React Query for REST; WebSocket hook merges incoming txs into the cache without refresh.                       |\n| [**API**](docs/api.md) (Express)                   | REST endpoints to register wallets, fetch wallet + transactions, list all tracked wallets. WebSocket server at `/ws` for live push.                                        |\n| [**Job queue**](docs/job-queue.md) (BullMQ, Redis) | Async background jobs per wallet (every 20s). Polls Solana RPC, deduplicates against DB, inserts new txs, broadcasts via WebSocket. Redis-backed so jobs survive restarts. |\n| [**Database**](docs/database.md) (MongoDB)         | Stores wallets and transactions. Cache and deduplication — the blockchain is the source of truth.                                                                          |\n| [**Blockchain**](docs/blockchain.md) (Solana RPC)  | Canonical source. We only read; we never sign or submit.                                                                                                                   |\n| [**SPL Token Program**](docs/smart-contracts.md)   | Smart contract that manages token accounts. We read token balances via `getParsedTokenAccountsByOwner`.                                                                    |\n\n**Project structure**\n\n| Architecture                 | Folder                                                             |\n| ---------------------------- | ------------------------------------------------------------------ |\n| Frontend                     | `artifacts/solana-tracker/`                                        |\n| Backend                      | `artifacts/api-server/` (app, routes)                              |\n| Job queue                    | `artifacts/api-server/src/lib/queue.ts`, `redis.ts`                |\n| Database                     | `lib/db/` (models, connection)                                     |\n| Blockchain client            | `artifacts/api-server/src/lib/solana.ts`                           |\n| Token balances (SPL Program) | `fetchAddressBalances` in solana.ts, GET /wallet/:address/balances |\n\nShared: `lib/api-spec/`, `lib/api-client-react/`, `lib/api-zod/` (OpenAPI codegen).\n\n---\n\n## Tech Stack\n\n- **Frontend:** React 19, Vite, Tailwind\n- **Backend:** Node.js, Express 5 (REST API + WebSocket)\n- **Job queue:** BullMQ, Redis (async background jobs)\n- **Database:** MongoDB\n- **Blockchain:** `@solana/web3.js`\n- **Smart contract:** SPL Token Program (read-only token balances)\n- **Monorepo:** pnpm workspaces\n\n---\n\n## Running Locally\n\n```bash\npnpm install\nexport MONGODB_URI=\"mongodb+srv://...\"\nexport REDIS_URL=\"redis://localhost:6379\"\n\npnpm --filter @workspace/api-server run dev\npnpm --filter @workspace/solana-tracker run dev\n```\n\nRequires MongoDB and Redis. See `.env.example` for all variables.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Febbeelsborg%2Fweb3-solana","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Febbeelsborg%2Fweb3-solana","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Febbeelsborg%2Fweb3-solana/lists"}