Caw Your Thoughts
A modern, full-stack social media platform built for real-time engagement, content discovery, and meaningful connections.
Raven is a comprehensive social media platform featuring real-time messaging, content discovery, and AI-powered content classification. Built with modern technologies and best practices, it offers a seamless experience across web and mobile platforms.
| Repository | Description | Tech Stack |
|---|---|---|
| backend | RESTful API & real-time services | NestJS, Prisma, PostgreSQL, Redis, Socket.IO |
| frontend | Web application | Nuxt 4, Vue 3, TailwindCSS |
| cross-platform | Mobile app (iOS & Android) | React Native, Expo SDK 54 |
| infrastructure | DevOps & deployment configs | Docker, Nginx, GitHub Actions |
- Email/Password Authentication - Secure sign-up and sign-in with bcrypt password hashing
- OAuth Integration - Google and GitHub OAuth 2.0 authentication support
- JWT Token Management - Access and refresh token flow with secure token storage
- Session Management - Track active sessions with device fingerprinting and IP logging
- Multi-Device Support - Register and manage multiple devices per user
- Password Recovery - Forgot password flow with email-based reset tokens
- reCAPTCHA - Google reCAPTCHA integration for bot protection
- Rate Limiting - Global throttling to prevent abuse
- Multi-Account Support - Account switcher for managing multiple profiles (Mobile)
- Rich Tweet Composer - Create posts with support for:
- Hashtag detection, parsing, and auto-linking
- User mention detection, parsing, and auto-linking
- Up to 4 media attachments per tweet (images, videos, GIFs)
- Native emoji picker integration
- Character count with visual indicator
- GIF picker via Tenor API (Web)
- Reply Threads - Nested conversation threads with root tweet tracking
- Quote Tweets - Retweet with commentary
- Retweets - Share tweets with followers
- Likes - Like/unlike functionality with optimized count tracking
- Bookmarks - Save tweets for later viewing with dedicated feed
- Tweet Deletion - Soft delete with cascade handling
- Content Classification - AI-powered tweet categorization (News, Sports, Entertainment)
- Media Grid - Responsive media display for images and videos
- Video Playback - Video.js player with full controls and Picture-in-Picture support
- Real-time Chat - WebSocket-powered instant messaging via Socket.IO
- Conversation Management - Create and manage one-on-one conversations
- Message Features:
- Text messages
- Image attachments and sharing
- Emoji reactions (sender and receiver)
- Message deletion (per-participant)
- Read receipts via last seen tracking
- Typing indicators
- Unread message indicators
- Sound Notifications - Audio alerts for new messages (Web)
- WebSocket Scaling - Redis adapter for horizontal scaling
- Home Timeline - Personalized feed with posts from followed users
- Real-time Updates - Server-Sent Events (SSE) for live feed updates
- Cursor-based Pagination - Efficient infinite scrolling implementation
- Pull-to-Refresh - Mobile-friendly feed refresh
- For You Feed - Algorithmic content discovery based on user interests
- Trending Topics - Real-time trending hashtags and keywords
- Category-based Trending - Trending content by category (News, Sports, Entertainment, General)
- Explore Feed - Curated content discovery
- User Discovery - Discover new users to follow
- Full-text Search - PostgreSQL full-text search capabilities
- Unified Search - Search users, tweets, and hashtags
- Tabbed Results - Filtered view by content type
- Advanced Filters - Filter by users, tweets, hashtags
- Recent Searches - Quick access to search history
- Real-time Suggestions - Instant search suggestions
- Profile Customization - Display name, bio, location, website
- Profile Images - Avatar and banner image upload with crop functionality
- Following/Followers - Social graph management with counter caching
- Profile Tabs - View tweets, replies, media, and likes
- Block System - Block users with bidirectional visibility prevention
- Mute System - Mute users to hide their content
- User Interests - Personalization based on selected interests
- Push Notifications - Firebase Cloud Messaging (FCM) integration
- In-App Notifications - Real-time notification feed via SSE
- Notification Types:
- Follow notifications
- Like notifications
- Retweet notifications
- Quote notifications
- Reply notifications
- Mention notifications
- Direct message notifications
- Notification Aggregation - Group similar notifications
- Delivery Tracking - Track notification delivery status to devices
- Read/Unread Status - Track notification status
- Filter Options - Filter by notification type
- File Upload - Support for image and video uploads
- S3 Storage - AWS S3 compatible object storage
- Image Processing - Sharp-based image optimization and resizing
- Media Association - Attach media to tweets and messages
- Appearance - Theme customization (light/dark mode) with system preference detection
- Account Settings - Manage account information and email preferences
- Privacy Controls:
- Muted accounts management
- Blocked accounts management
- Content preferences
- Sessions Management - View and manage active sessions
- Interest Preferences - Customize content recommendations
- RTL Support - Right-to-left language support for Arabic
- Localization - Multi-language support (English & Arabic)
- Responsive Design - Mobile-first responsive layouts
- Toast Notifications - Non-intrusive feedback messages
- Skeleton Loading - Smooth loading states
- Virtual Scrolling - Optimized performance for long lists
- Tweet Classification - Groq-powered content categorization
- Smart Analysis - Automated content analysis for trending topics
- Background Jobs - BullMQ for reliable job processing
- Event-Driven Architecture - NestJS Event Emitter for decoupled communication
- Scheduled Tasks - Cron-based scheduled jobs
- Health Checks - Health endpoint for monitoring
- Structured Logging - Winston-based logging with multiple transports
- Framework: NestJS 11 with TypeScript
- Database: PostgreSQL 15+ with Prisma ORM
- Caching: Redis for session storage and pub/sub
- Real-time: Socket.IO for messaging, SSE for feed updates
- Queue: BullMQ for background job processing
- AI: Groq SDK for content classification
- Framework: Nuxt 4 with Vue 3 Composition API
- Styling: TailwindCSS 4
- State: Pinia for state management
- Real-time: Socket.IO client, EventSource for SSE
- Framework: React Native 0.81 with Expo SDK 54
- Navigation: Expo Router
- State: Zustand
- Styling: NativeWind (Tailwind for React Native)
- Containerization: Docker & Docker Compose
- Reverse Proxy: Nginx with SSL/TLS
- CI/CD: GitHub Actions with automated deployments
- Monitoring: Prometheus, Grafana, Dozzle
| Environment | URL | Purpose |
|---|---|---|
| Production | raven.cmp27.space | Live production environment |
| Staging | staging.raven.cmp27.space | Pre-production testing |
- Node.js 22+
- pnpm
- Docker & Docker Compose
- PostgreSQL 15+
- Redis 7+
# Clone all repositories
git clone https://github.com/raven-swe/backend
git clone https://github.com/raven-swe/frontend
git clone https://github.com/raven-swe/cross-platform
git clone https://github.com/raven-swe/infrastructure
# Backend
cd backend
pnpm install
cp .env.example .env
pnpm prisma migrate dev
pnpm run start:dev
# Frontend
cd frontend
pnpm install
pnpm run dev
# Mobile
cd cross-platform
pnpm install
pnpm run startWe welcome contributions! Please follow our workflow:
- Branch Naming: Use kebab-case with type prefix (e.g.,
feat/user-mentions,fix/auth-token) - Commit Messages: Follow Conventional Commits format
- Pull Requests: Ensure PR title follows the same convention
- Code Quality: All PRs must pass linting, formatting, and tests
feat- New featuresfix- Bug fixesdocs- Documentation changesrefactor- Code refactoringtest- Test additions/modificationschore- Maintenance tasksperf- Performance improvements
