Real-time social sentiment tracking for traders. Because what people say on Twitter matters.
Monitor what crypto and stock communities are saying — right now — and act before the crowd does.
You pick an asset (BTC, ETH, TSLA, AAPL, etc.). We watch social media. We tell you:
- What people are saying — Posts from Twitter, Reddit, relevant to your assets
- How they feel — Sentiment scores (-1 to +1), confidence levels
- Why it matters — Is it hype? Insider buzz? Whale movement?
- Who's talking — Detect whale activity and unusual patterns
- Get alerts — Email notifications when sentiment shifts on your watched assets
No waiting. No noise. Just signal.
┌─────────────────────────────────────────────┐
│ Frontend (Next.js) │
│ Dashboard, Alerts, Asset Tracking │
└──────────────┬──────────────────────────────┘
│
┌──────────────┴──────────────────────────────┐
│ HTTP API (NestJS) │
│ /api/assets, /posts, /preferences │
└──────────────┬──────────────────────────────┘
│
┌──────────────┴──────────────────────────────┐
│ PostgreSQL + Redis (Queue System) │
├──────────────┬──────────────────────────────┤
│ Worker 1 │ Worker 2 │
│ - Poll │ - Sentiment │
│ Twitter │ - Whale Detection │
│ - Ingest │ - Alerts │
│ Posts │ │
└──────────────┴──────────────────────────────┘
Key design:
- API and workers run separately — don't block each other
- Posts flow through a queue: Ingest → Store → Analyze → Alert
- Polling every 30–60 seconds (not streaming)
- Node.js 18+
- PostgreSQL 14+
- Redis 6+
- Docker (optional, but recommended)
-
Clone and install
git clone <repo-url> cd Market-Sentimental-Analysis-Pjt npm install
-
Environment variables
cp .env.example .env
Fill in:
DATABASE_URL=postgresql://user:password@localhost:5432/market_sentiment REDIS_HOST=localhost REDIS_PORT=6379 JWT_SECRET=your_secret_key SMTP_HOST=your_email_provider SMTP_USER=your_email SMTP_PASS=your_app_password -
Run migrations
npx prisma migrate dev npx prisma db seed # Optional: seeds demo assets -
Start the API server
npm run start:dev
-
In another terminal, start the worker
npm run start:worker
POST /api/assets— Create a new asset (ADMIN)GET /api/assets— List all available assetsGET /api/assets/tracked/me— Your watched assetsPOST /api/assets/add— Track an asset nowDELETE /api/assets/remove— Stop tracking
GET /api/posts?assetId=BTC&source=TWITTER— Get posts for an assetGET /api/posts/:id— Single post + sentiment breakdownPOST /api/posts— Manually add a post (testing)
GET /api/preferences— All your tracked assets + settingsPOST /api/preferences— Update tracking preferencesPATCH /api/preferences/:assetId/toggle-alert— Turn alerts on/off
GET /api/alerts— Your alert historyPATCH /api/alerts/:id/read— Mark as read
POST /api/analysis— Get LLM-powered breakdown of a post (on-demand only)
.
├── backend/ # NestJS API + Workers
│ ├── src/
│ │ ├── modules/
│ │ │ ├── auth/ # JWT + login
│ │ │ ├── assets/ # Stock/crypto tracking
│ │ │ ├── posts/ # Feed + ingestion
│ │ │ ├── sentiment/ # NLP analysis
│ │ │ ├── alerts/ # Email + notifications
│ │ │ ├── channels/ # Social sources config
│ │ │ ├── fetcher/ # Polling service
│ │ │ └── workers/ # Queue consumers
│ │ ├── worker.ts # Entry point for worker process
│ │ └── main.ts # Entry point for API
│ ├── prisma/ # Database schema
│ └── package.json
├── frontend/ # Next.js Dashboard
│ ├── app/
│ │ ├── dashboard/ # Main UI
│ │ ├── auth/ # Login/signup
│ │ └── settings/ # User config
│ └── components/
├── docker-compose.yml # SQL + Redis
└── README.md
- Worker polls → Fetches latest posts from Twitter/Reddit every 30s
- Posts queued → Stores post in DB, puts job on queue
- Sentiment analyzed → NLP runs, scores sentiment (-1 = bearish, +1 = bullish)
- Whale detected → Checks if post is from influence accounts
- Alerts sent → If sentiment crosses user thresholds, email goes out
- Dashboard updates → Real-time feed shows new posts + scores
| Layer | Tech |
|---|---|
| Frontend | Next.js 14, TypeScript, Tailwind CSS |
| Backend API | NestJS, TypeScript, Fastify/Express |
| Database | PostgreSQL, Prisma ORM |
| Queue | Redis, BullMQ |
| Workers | Node.js (headless) |
| Auth | JWT, PassportJS |
| Sentiment | Default: Fast NLP (can swap for transformer models) |
| Nodemailer / SendGrid |
- Real Twitter API integration (currently mock data)
- Reddit API integration
- Custom sentiment models (fine-tuned on crypto language)
- Telegram channel monitoring
- Advanced whale tracking (on-chain data)
- User-defined alert strategies (no-code builder)
- Historical sentiment trends + exports
- Fork the repo
- Create a feature branch (
git checkout -b feature/your-idea) - Commit your changes (
git commit -m 'Add your idea') - Push to the branch (
git push origin feature/your-idea) - Open a Pull Request
Open an issue or reach out to the team. We read everything.
Built for traders who want the edge. 📈