A full-stack application for tracking, analyzing, and visualizing trending memes from Reddit's r/memes subreddit. This project is a hiring exercise for a full-stack developer position at Hepmil
This platform provides:
- Real-time meme tracking and analysis
- Historical data collection and visualization
- Automated report generation via Telegram
- Modern dashboard interface
reddit-memes-analytics/
├── apps/
│ ├── backend/ # NestJS Backend API
│ │ ├── prisma/ # Database schema and migrations
│ │ ├── src/ # Application source code
│ │ │ ├── reddit-crawler/
│ │ │ ├── telegram/
│ │ │ └── main.ts
│ │ └── README.md
│ └── frontend/ # Frontend Dashboard
│ ├── index.html # Main dashboard page
│ ├── server.js # Static file server
│ └── package.json
├── docs/ # Documentation
├── INSIGHTS.md # Alternative use cases
└── README.md # This file
- Reddit API integration for meme crawling
- PostgreSQL database with Prisma ORM
- Historical data tracking
- Telegram bot integration
- RESTful API with Swagger documentation
- Modern dark theme dashboard
- Interactive data visualization
- Real-time statistics
- Responsive design
- Grid-based meme gallery
- Automated report generation
- Telegram delivery
- Historical report archiving
- Customizable report formats
-
Backend:
- NestJS/TypeScript
- PostgreSQL/Prisma
- Reddit API
- Telegram Bot API
- OpenAPI/Swagger
-
Frontend:
- HTML5/CSS3
- Modern JavaScript
- Chart.js
- Bootstrap 5
- Node.js >= 18
- PostgreSQL >= 14
- npm or yarn
- Telegram Bot Token
- Navigate to backend directory:
cd apps/backend- Install dependencies:
npm install- Configure environment:
cp env.example .env
# Update .env with your credentials- Run migrations:
npx prisma migrate dev- Start server:
npm run start:dev- Navigate to frontend directory:
cd apps/frontend- Install dependencies:
npm install- Start server:
npm start- Access dashboard:
http://localhost:8080
Access Swagger documentation at:
http://localhost:3000/api/docs
GET /api/memes/top- Get top 20 memes (24h)GET /api/memes/fetch- Fetch latest 100 memesPOST /api/reports/generate- Generate reportGET /api/reports/latest- Get latest report
- Automated crawling of r/memes
- Vote history tracking
- Trend analysis
- Real-time updates
- Interactive vote distribution chart
- Historical trend analysis
- Real-time statistics
- Performance metrics
- Automated daily reports
- Telegram integration
- Custom formatting
- Historical archiving
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
See LICENSE file for details