Airly is an image-based social media webapp where people can share posts, like and comment on posts, and discover popular content through a smart ranking algorithm π§ .
Built as a full-stack webapp with a clean, minimal design inspired by Pinterest, featuring a scalable backend architecture.
- πΈ Image Sharing - Upload and share your moments
- π Smart Engagement - Advanced like and comment system
- π Intelligent Discovery - AI-powered content ranking
- π€ User Profiles - Personalized user experiences
- π± Responsive Design - Works seamlessly across devices
- π Secure Authentication - JWT-based user management
Swayam - Passionate Full-Stack Developer π
Building scalable web applications with modern technologies π»
"Learning by building real-world applications" π‘
I built this as my first full-stack webapp project with a strong focus on:
- π― Backend Mastery - Deep dive into Node.js ecosystem
- π Advanced Queries - MongoDB aggregation pipelines
- ποΈ System Architecture - Scalable application design
- π¨ Modern Frontend - React + TypeScript best practices
This project was also created for the Hack Club Athena Award - a "you ship, we ship" initiative! π
- π Smart Algorithms: Advanced ranking system with weighted engagement metrics
- π Text Indexing: Multi-field search across posts and users
- π‘οΈ Security: JWT authentication with refresh tokens
- π± Responsive: Mobile-first design with Tailwind CSS
- β‘ Performance: Database indexing and optimized queries
- ποΈ Organization: Clean folder structure with proper separation of concerns
- π MongoDB Aggregation Pipelines - Complex data processing
- π JWT Authentication System - Secure user management
- π File Upload Handling - Multer + Cloudinary integration
- π― TypeScript Mastery - Type-safe React development
- π API Integration - RESTful service architecture
- π± State Management - Redux Toolkit with persistence
| Challenge | Solution | Learning |
|---|---|---|
| π CORS Issues | Proper middleware configuration | Cross-origin security |
| π€ File Uploads | Multer + Cloudinary pipeline | Media handling patterns |
| π Complex Queries | MongoDB aggregation mastery | Database optimization |
| π Token Management | JWT refresh token strategy | Security best practices |
| π¨ UI Consistency | TypeScript + Tailwind system | Design systems |
π§ Coming Soon! Screenshots will be added once the application is deployed.
Preview of the beautiful, Pinterest-inspired interface
The popular posts feature implements a algorithm like a ranking system that goes far beyond simple "most liked" sorting. Instead of just counting likes, this algorithm creates a engagement score that considers the quality and type of user interaction.
How the Algorithm Works: we decide stuff on basis of these things -
- Likes (2x weight)
- Comments (1x weight)
- Views (0.5x weight)
- Recency factor - When scores are tied, newer posts get slight preference to keep content fresh.
imagine a post with 10 likes and 5 comments might rank higher than one with 20 likes but no comments. (yes this is an algorithmm)
This algorithm uses MongoDB's aggregation pipeline thingy to calculate scores(likes, comments) in real-time.
multi-field text indexing is something so cool that it takes out stuff out of a mess of data to a request made by a user - that provides intelligent, context-aware search results.
This goes far beyond simple keyword matching to deliver relevant and fast results across different types of content.
I used AI tools strategically and minimally throughout this project for learning and problem-solving:
- π Learning TypeScript patterns and React best practices
- π§± Masonry Layout Implementation - Pinterest-style grid system
- π Complex Aggregation Queries - MongoDB pipeline optimization
- π Debugging Assistance - Understanding error patterns
- π§ Core Logic & Algorithms - All my design and implementation
- ποΈ System Architecture - Database design and API structure
- π¨ UI/UX Decisions - Component design and user flows
- π§ Problem-Solving Approach - Technical decision-making
AI helped me learn faster, but the creativity and engineering are mine! πͺ
git clone https://github.com/swayam03275/Airly.git
cd Airlycd Backend
npm install
# Create environment variables file
cp .env.example .env
# Edit .env file with your actual values (MongoDB URI, JWT secrets, Cloudinary credentials)
# Start the backend server
npm run devThe backend server will start on http://localhost:8000
Open a new terminal window/tab:
cd frontend
npm install
# Create environment variables file
cp .env.example .env
# Edit .env file to set VITE_SERVER_API=http://localhost:8000/api/v1
# Start the frontend server
npm run devThe frontend will start on http://localhost:5173
MONGODB_URI: Your MongoDB connection stringACCESS_TOKEN_SECRET&REFRESH_TOKEN_SECRET: Generate strong random stringsCLOUDINARY_*: Get these from your Cloudinary dashboard
VITE_SERVER_API: Should point to your backend URL (http://localhost:8000/api/v1)
- Backend API: Use Postman or similar tools to test API endpoints
- Frontend: Use your browser to test the UI and user flows
- Full Stack: Ensure both servers are running to test the complete application
If using local MongoDB:
# Make sure MongoDB is installed and running
mongodIf using MongoDB Atlas:
- Create a cluster at MongoDB Atlas
- Get your connection string and add it to the backend .env file
/Backend- Node.js/Express API server/frontend- React/TypeScript client application- Both folders have their own package.json and dependencies
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request