A comprehensive social media analytics platform that aggregates data from Twitter/X, Facebook, and LinkedIn into a unified dashboard. Built with modern web technologies and designed for scalability.
- Multi-Platform Integration: Connect and sync data from Twitter/X, Facebook, and LinkedIn
- Real-Time Analytics: View follower growth, engagement metrics, and post performance
- Automated Data Collection: Background workers fetch data every 30 minutes
- Secure OAuth Integration: Industry-standard OAuth 2.0 implementation with PKCE
- Beautiful Dashboard: Modern, responsive UI with dark/light theme support
- ngrok Integration: Seamless local development with public URLs
- NestJS - Progressive Node.js framework
- PostgreSQL - Primary database
- TypeORM - Object-relational mapping
- JWT - Authentication
- OAuth 2.0 - Social media authentication
- Bull - Job queue for background tasks
- React 19 - UI library
- TypeScript - Type safety
- Material-UI - Component library
- Zustand - State management
- Recharts & Nivo - Data visualization
- Vite - Build tool
- Node.js 18+ and npm
- PostgreSQL 12+
- Social media developer accounts (Twitter/X, Facebook, LinkedIn)
- ngrok account (optional, for OAuth development)
git clone https://github.com/yourusername/social-media-analytics-dashboard.git
cd social-media-analytics-dashboard
cd backend
npm install
# Create .env from example
cp .env.example .env
# Update .env with your credentials:
# - Database connection
# - JWT secret
# - Social media API keys
# Run database migrations
npm run typeorm migration:run
# Start development server
npm run start:dev
cd frontend
npm install
# Start development server
npm run dev
- Frontend: https://localhost:5173
- Backend API: http://localhost:3000
- API Documentation: http://localhost:3000/api-docs
# Database
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=your_password
DB_DATABASE=social_dashboard_db
# JWT
JWT_SECRET=your_jwt_secret
JWT_EXPIRES_IN=3600s
# Social Media API Keys
TWITTER_CLIENT_ID=your_twitter_client_id
TWITTER_CLIENT_SECRET=your_twitter_client_secret
FACEBOOK_APP_ID=your_facebook_app_id
FACEBOOK_APP_SECRET=your_facebook_app_secret
LINKEDIN_CLIENT_ID=your_linkedin_client_id
LINKEDIN_CLIENT_SECRET=your_linkedin_client_secret
# URLs
APP_BASE_URL=http://localhost:3000
FRONTEND_BASE_URL=http://localhost:5173
# Encryption
ENCRYPTION_KEY=your_32_byte_hex_key
# Optional: Override backend URL for production
VITE_API_BASE_URL=https://your-backend-url.com
The project includes automatic ngrok integration for OAuth callback testing:
# Backend with ngrok
cd backend && npm run start:ngrok
# Frontend will auto-discover the ngrok URL
cd frontend && npm run dev
- Create app at https://developer.twitter.com
- Enable OAuth 2.0
- Add callback URL:
http://localhost:3000/connect/twitter/callback
- Request scopes: tweet.read, users.read, offline.access
- Create app at https://developers.facebook.com
- Add Facebook Login product
- Add callback URL:
http://localhost:3000/connect/facebook/callback
- Request permissions: pages_read_engagement, pages_show_list
- Create app at https://www.linkedin.com/developers
- Add callback URL:
http://localhost:3000/connect/linkedin/callback
- Request scopes: r_liteprofile, r_organization_social
social-media-analytics-dashboard/
βββ backend/
β βββ src/
β β βββ auth/ # JWT authentication
β β βββ users/ # User management
β β βββ connect/ # OAuth integration
β β βββ platforms/ # Platform-specific services
β β βββ feed/ # Aggregated social feed
β β βββ analytics/ # Analytics processing
β β βββ worker/ # Background jobs
β βββ test/
βββ frontend/
β βββ src/
β β βββ components/ # Shared components
β β βββ features/ # Feature modules
β β βββ stores/ # Zustand stores
β β βββ lib/ # Utilities
β βββ public/
βββ docs/
# Backend tests
cd backend
npm run test
npm run test:e2e
# Frontend tests (to be implemented)
cd frontend
npm run test
# Backend
cd backend
npm run build
npm run start:prod
# Frontend
cd frontend
npm run build
npm run preview
- Dockerfiles for both frontend and backend
- Docker Compose for full stack deployment
- Kubernetes manifests for cloud deployment
This project was primarily developed by Gauntlit AI with contributions from Andrew Peltekci.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
Copyright 2025 Gauntlit AI
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
- Built with β€οΈ by Gauntlit AI
- Project initiated by Andrew Peltekci
- Powered by Claude AI assistance
For issues and feature requests, please use the GitHub Issues page.
Note: This project is under active development. Features and documentation are subject to change.