Store anything. Organize everything. Powered by AI.
An intelligent file storage system that automatically categorizes and organizes your media using cutting-edge machine learning
Imagine uploading hundreds of images and videos, and having them instantly organized into perfectly structured folders - Animals/Dogs, Nature/Landscapes, Food/Desserts, and more. No manual sorting, no thinking required. That's the power of Algovengers.
- Manual Organization Hell: Tired of spending hours organizing files into folders?
- Storage Chaos: Can't find that one photo from last summer vacation?
- Data Architecture Decisions: Confused whether to use SQL or NoSQL for your data?
- β¨ AI-Powered Auto-Categorization: MobileNet deep learning model recognizes and categorizes 200+ file types
- ποΈ Intelligent Folder Structures: Hierarchical organization that actually makes sense
- π§ Smart Data Analysis: JSON analyzer that recommends optimal database architectures
- π¨ Stunning UI/UX: Production-quality animations and glassmorphism effects
- β‘ Lightning Fast: Client-side AI processing for instant feedback
|
Animated gradient backgrounds, floating particles, and glassmorphism effects that create an immersive experience |
Drag & drop interface with real-time AI categorization preview before uploading |
Browse your organized files with expandable folders, file previews, and usage statistics |
- Pre-trained on ImageNet (1000+ classes)
- 200+ custom categories intelligently mapped
- Client-side processing (no server load)
- ~100ms inference time per image
- Confidence scoring and fallback handling
Example Categories:
Animals β Dogs, Cats, Birds, Marine Life
Nature β Landscapes, Forests, Mountains, Beaches
Food β Desserts, Meals, Beverages
Urban β Architecture, Streets, Skylines
And 190+ more...
Upload JSON files and get instant recommendations:
- SQL vs NoSQL decision analysis
- Schema structure visualization
- Field consistency checking
- Depth and complexity analysis
- Auto-generated Prisma/Mongoose schemas
- Intelligent Organization: Automatic hierarchical folder structure
storage/users/{userId}/media/ βββ Animals/ β βββ Dogs/ β βββ Cats/ β βββ Birds/ βββ Nature/ β βββ Landscapes/ β βββ Forests/ β βββ Beaches/ βββ Food/ βββ Desserts/ - Storage Quota System: 100GB per user with visual usage indicators
- Bulk Operations: Download multiple files as ZIP, bulk delete
- Cloud Storage Ready: Google Cloud Storage integration built-in
- Secure Access: User-isolated storage with JWT authentication
- File Previews: Full-screen lightbox with zoom, pan, and navigation
7 production-ready components built from scratch:
| Component | Features |
|---|---|
| UploadProgress | Real-time progress bars with 4 status states, shimmer effects, animated icons |
| FileLightbox | Full-screen previews with zoom (50-300%), drag, keyboard shortcuts |
| AnimatedStatCard | Animated number counters, floating particles, gradient icons |
| Toast System | Auto-dismiss notifications with progress bars, 4 color variants |
| LoadingSkeleton | Professional loading states for better perceived performance |
| FloatingActionButton | Quick action buttons with spring animations and tooltips |
| Tooltip | 4-position tooltips with glassmorphism and smooth transitions |
- Animated Gradients: Living, breathing color transitions
- Glassmorphism: Modern frosted-glass effects throughout
- Floating Particles: 20+ ambient particles creating depth
- 11 Custom Animations: Shimmer, pulse-glow, bounce-in, slide-in, and more
- Spring Physics: Natural, bounce-based interactions
- Dark Mode: Premium feature with seamless theme switching
- JWT Authentication: Stateless, scalable token-based auth
- Password Hashing: bcryptjs with automatic salt generation
- Path Validation: Protection against directory traversal attacks
- User Isolation: Complete data separation between users
- Secure File Upload: Type validation, size limits (50MB), mimetype checking
- CORS Protection: Whitelist-based origin validation
- Client-Side AI: Distributed processing across users
- Lazy Loading: Images and components load on-demand
- Code Splitting: Route-based chunking for faster load times
- GPU Acceleration: CSS transforms optimized for 60fps
- Responsive Design: Mobile-first approach, works on all devices
- Production Ready: Easily deployable to Vercel + Render (10 minutes!)
Next.js 16.0.1 β React framework with App Router
React 19.2.0 β UI library with latest features
TypeScript β Type-safe development
TailwindCSS β Utility-first styling
Framer Motion β Advanced animations
TensorFlow.js β Machine learning in the browser
@tensorflow-models/mobilenet β Pre-trained image classification
Zustand β Lightweight state management
Axios β HTTP client with interceptors
React Dropzone β Drag & drop file uploads
Lucide React β Beautiful icon library
Node.js + Express 5.1.0 β Modern async/await support
TypeScript β End-to-end type safety
JWT + bcryptjs β Secure authentication
Multer β File upload handling
Google Cloud Storage β Cloud storage integration
Socket.io β Real-time communication
Prisma β Next-gen ORM for SQL databases
Mongoose β MongoDB object modeling
Natural β NLP for text analysis
Archiver β ZIP file generation
Sharp β High-performance image processing
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CLIENT (Browser) β
β β
β βββββββββββββββ ββββββββββββββββ βββββββββββββββββ
β β Next.js UI βββββΆβ TensorFlow.js ββββΆβ MobileNet ββ
β β Components β β AI Engine β β Model ββ
β βββββββββββββββ ββββββββββββββββ βββββββββββββββββ
β β β
β β (Categorized Files + Metadata) β
β βΌ β
βββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββ
β
β HTTP/REST API (JWT Auth)
βΌ
βββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββ
β β EXPRESS BACKEND β
β ββββββββΌββββββββββ β
β β API Gateway β β
β β (Routes) β β
β ββββββ¬ββββββββ¬ββββ β
β β β β
β ββββββΌβββ ββββΌβββββββββ ββββββββββββββββ β
β β Auth β β Upload βββββΆβ Storage β β
β βServiceβ β Service β β Service β β
β βββββββββ βββββββββββββ ββββββββ¬ββββββββ β
β β β
β ββββββββΌββββββββ β
β β File System β β
β β (or GCS) β β
β ββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Why This Architecture?
- Client-Side AI: Reduces server costs, scales infinitely, faster UX
- Separation of Concerns: Frontend/backend can scale independently
- API-First Design: Easy to add mobile apps or third-party integrations
- Modular Services: Clean, testable, maintainable code structure
- Type Safety: Shared TypeScript interfaces prevent bugs
algovengers/
βββ frontend/ # Next.js React Application
β βββ app/ # App Router (Next.js 13+)
β β βββ page.tsx # Landing page with animations
β β βββ upload/ # File upload interface
β β βββ dashboard/ # User dashboard
β β βββ analytics/ # JSON analyzer
β β βββ login/ # Authentication
β β βββ globals.css # Custom animations & styles
β βββ components/ # Reusable React components
β β βββ UploadProgress.tsx
β β βββ FileLightbox.tsx
β β βββ AnimatedStatCard.tsx
β β βββ Toast.tsx
β β βββ ... (7 components)
β βββ lib/ # Utilities & helpers
β β βββ api.ts # Axios client with interceptors
β β βββ ai-categorizer.ts # TensorFlow integration
β β βββ stores.ts # Zustand state management
β βββ package.json
β
βββ backend/ # Express.js API Server
β βββ src/
β β βββ controllers/ # Request handlers
β β βββ services/ # Business logic
β β β βββ auth.service.ts
β β β βββ storage.service.ts
β β β βββ upload.service.ts
β β βββ routes/ # API endpoints
β β β βββ auth.routes.ts
β β β βββ upload.routes.ts
β β βββ middleware/ # Auth, error handling
β β βββ models/ # Data schemas
β β βββ utils/ # Helper functions
β β βββ server.ts # Express app entry
β βββ storage/ # User uploaded files
β β βββ users/
β β βββ {userId}/media/
β βββ package.json
β
βββ DEPLOYMENT_GUIDE.md # Deploy to Vercel + Render
βββ QA_PREPARATION.md # 80+ Q&A for presentations
βββ UI_UX_IMPROVEMENTS.md # Complete UI documentation
βββ QUICK_START_NEW_UI.md # Component usage guide
βββ README.md # This file!
Node.js 18+
npm or yarn
Gitgit clone https://github.com/yourusername/algovengers.git
cd algovengerscd backend
npm install
# Create .env file
cat > .env << EOF
PORT=5001
JWT_SECRET=your-super-secret-jwt-key-change-this
JWT_EXPIRES_IN=7d
CORS_ORIGIN=http://localhost:3000
STORAGE_TYPE=local
EOF
# Start backend server
npm run devServer running at: http://localhost:5001 π
cd ../frontend
npm install
# Create .env.local file
cat > .env.local << EOF
NEXT_PUBLIC_API_URL=http://localhost:5001/api
NEXT_PUBLIC_STORAGE_URL=http://localhost:5001/storage
EOF
# Start frontend
npm run devFrontend running at: http://localhost:3000 β¨
Navigate to http://localhost:3000 and experience the magic!
- Click "Sign Up" on the homepage
- Enter your details (email, password)
- Get instant access with JWT token
- Navigate to Upload page
- Drag & drop images/videos or click to browse
- Watch AI categorize your files in real-time
- Preview categories before uploading
- Hit "Upload All" and watch the magic happen
- See organized folders by category
- Click to expand subcategories
- View storage usage statistics
- Preview files in full-screen lightbox
- Download or delete files with one click
- Bulk operations for multiple files
- Go to Analytics page
- Paste or upload JSON file
- Get instant SQL vs NoSQL recommendation
- See auto-generated schemas
- View detailed structure analysis
We've built 11 custom keyframe animations for smooth, professional interactions:
| Animation | Use Case | Duration |
|---|---|---|
gradient-animation |
Living background gradients | 15s infinite |
shimmer |
Loading states | 2s infinite |
pulse-glow |
Attention-grabbing elements | 2s infinite |
bounce-in |
Component entrances | 0.6s |
slide-in-bottom |
Slide-up reveals | 0.5s |
float-animation |
Floating icons/particles | 3s infinite |
progress-shine |
Progress bars | 2s infinite |
Primary Palette:
Orange: #ff6b35 β #ea580c
Purple: #a855f7 β #9333ea
Gradients: from-orange-500 to-purple-600Semantic Colors:
Success: Green (#10b981)
Error: Red (#ef4444)
Warning: Orange (#f59e0b)
Info: Blue (#3b82f6)- Mobile: Single column, touch-friendly (44x44px targets)
- Tablet: 2-column grids, optimized layouts
- Desktop: 3+ columns, hover effects, keyboard shortcuts
# Server Configuration
PORT=5001 # API server port
NODE_ENV=development # Environment mode
# Authentication
JWT_SECRET=your-super-secret-key # JWT signing key
JWT_EXPIRES_IN=7d # Token expiration
# CORS & Security
CORS_ORIGIN=http://localhost:3000 # Allowed frontend origin
# Storage Configuration
STORAGE_TYPE=local # 'local' or 'gcs'
STORAGE_PATH=./storage # Local storage directory
MAX_STORAGE_GB=100 # Per-user quota (GB)
MAX_FILE_SIZE_MB=50 # Per-file limit (MB)
# Google Cloud Storage (Optional)
GCS_PROJECT_ID=your-project-id
GCS_BUCKET_NAME=your-bucket-name
GCS_KEY_FILE=./gcs-key.json# API Configuration
NEXT_PUBLIC_API_URL=http://localhost:5001/api
NEXT_PUBLIC_STORAGE_URL=http://localhost:5001/storage
# Feature Flags (Optional)
NEXT_PUBLIC_ENABLE_DARK_MODE=true
NEXT_PUBLIC_ENABLE_ANALYTICS=falsePOST /api/auth/register
Content-Type: application/json
{
"email": "user@example.com",
"password": "securePassword123",
"name": "John Doe"
}
Response: 201 Created
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": "user123",
"email": "user@example.com",
"name": "John Doe"
}
}POST /api/auth/login
Content-Type: application/json
{
"email": "user@example.com",
"password": "securePassword123"
}
Response: 200 OK
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": { ... }
}POST /api/upload
Authorization: Bearer {token}
Content-Type: multipart/form-data
FormData:
- files: [File, File, ...]
- categories: ["Animals/Dogs", "Nature/Landscapes", ...]
Response: 201 Created
{
"message": "Files uploaded successfully",
"uploadedFiles": [
{
"filename": "dog.jpg",
"path": "/storage/users/123/media/Animals/Dogs/dog.jpg",
"size": 245678,
"category": "Animals",
"subcategory": "Dogs"
}
]
}GET /api/upload/files
Authorization: Bearer {token}
Response: 200 OK
{
"files": [
{
"name": "sunset.jpg",
"path": "/storage/users/123/media/Nature/Landscapes/sunset.jpg",
"size": 345678,
"category": "Nature",
"subcategory": "Landscapes",
"uploadedAt": "2024-11-13T10:30:00Z"
}
],
"storageUsed": "4.5 GB",
"storageTotal": "100 GB",
"storagePercentage": 4.5
}GET /api/upload/download?path=/users/123/media/Nature/sunset.jpg
Authorization: Bearer {token}
Response: 200 OK
Content-Type: image/jpegPOST /api/upload/bulk-download
Authorization: Bearer {token}
Content-Type: application/json
{
"files": [
"/users/123/media/Animals/Dogs/dog1.jpg",
"/users/123/media/Animals/Dogs/dog2.jpg"
]
}
Response: 200 OK
Content-Type: application/zipAuthentication:
- Register new user
- Login with credentials
- Token persists after refresh
- Logout clears token
- Protected routes redirect if not authenticated
File Upload:
- Drag & drop single file
- Drag & drop multiple files
- Click to browse and select
- AI categorization shows correct category
- Upload progress displays
- Success notification appears
Dashboard:
- Files appear in correct folders
- Folders expand/collapse smoothly
- Storage usage accurate
- File preview lightbox works
- Download file succeeds
- Delete file removes from storage
- Bulk operations work
UI/UX:
- Animations smooth (60fps)
- Dark mode toggles (if premium)
- Responsive on mobile/tablet
- Loading skeletons appear
- Toast notifications auto-dismiss
- Tooltips show on hover
# Unit tests
npm run test
# Integration tests
npm run test:integration
# E2E tests
npm run test:e2eOption 1: Vercel + Render (Recommended)
-
Deploy Backend to Render:
- Create account at render.com
- New Web Service β Connect repo
- Build:
cd backend && npm install && npm run build - Start:
npm start - Add environment variables
- Backend URL:
https://algovengers-backend.onrender.com
-
Deploy Frontend to Vercel:
- Create account at vercel.com
- Import project β Select repo
- Root:
frontend - Add env vars with backend URL
- Frontend URL:
https://algovengers.vercel.app
-
Update CORS:
- In Render, update
CORS_ORIGINto Vercel URL - Redeploy backend
- In Render, update
Detailed instructions: See DEPLOYMENT_GUIDE.md
Option 2: Docker (Advanced)
# Build images
docker-compose build
# Start services
docker-compose up -d
# Services running at:
# Frontend: http://localhost:3000
# Backend: http://localhost:5001β JWT authentication with secure tokens β Password hashing with bcryptjs β Path traversal attack prevention β User data isolation β File type validation β File size limits (50MB) β CORS origin whitelisting
π Add rate limiting (express-rate-limit) π Implement Helmet.js for security headers π Add input validation (Joi/Zod) π Enable virus scanning (ClamAV) π Implement 2FA authentication π Add audit logging π Use HTTPS in production π Rotate JWT secrets periodically
- Client-side AI: ~4MB model cached, no server load
- Lazy loading: Images load on-demand
- Code splitting: Route-based chunking
- GPU acceleration: CSS transforms optimized
- Compression: Gzip for production builds
- Database Migration: Move from file-based to PostgreSQL
- Redis Caching: Cache hot data and sessions
- CDN Integration: CloudFront for static assets
- Load Balancing: Multiple backend instances
- Queue System: Bull for async processing
- Monitoring: Prometheus + Grafana
Expected Performance:
- First Contentful Paint: <1.5s
- Time to Interactive: <3.5s
- Lighthouse Score: 90+
We welcome contributions! Here's how:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Make your changes
- Follow TypeScript best practices
- Add comments for complex logic
- Update documentation if needed
- Commit with descriptive messages
git commit -m "feat: add real-time collaboration" - Push to your fork
git push origin feature/amazing-feature
- Open a Pull Request
- TypeScript: Use strict mode, define interfaces
- React: Functional components, hooks
- Naming: camelCase for variables, PascalCase for components
- Comments: JSDoc for functions, inline for complex logic
- Formatting: Prettier (automatic)
- File-based user database (migrate to SQL planned)
- No video content analysis (images only)
- Upload progress not real-time (websocket planned)
- No file name conflict handling
- Token refresh not implemented
v2.0 - Q1 2025
- Real database (PostgreSQL + Prisma)
- WebSocket for real-time upload progress
- File sharing with shareable links
- User recategorization of files
- Full-text search across filenames
- Thumbnail generation for images
v3.0 - Q2 2025
- Mobile app (React Native)
- Video content analysis with ML
- Collaboration features (shared folders)
- Version control for files
- Advanced analytics dashboard
- API for third-party integrations
Future
- Public gallery feature
- CDN integration
- Enterprise features (teams, SSO)
- Desktop app (Electron)
- Browser extension
This project is licensed under the MIT License.
MIT License
Copyright (c) 2025 Anuj Soni, Anisha Ghosh & Ayush Arora
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
- TensorFlow.js - Amazing ML framework for the browser
- MobileNet - Pre-trained model that powers our AI
- Next.js - The best React framework for production
- Framer Motion - Delightful animations made easy
- Tailwind CSS - Utility-first CSS that speeds development
- Vercel & Render - Seamless deployment platforms
- Dropbox: For pioneering cloud storage
- Google Photos: For intelligent organization
- Notion: For beautiful UI/UX design
- Linear: For smooth animations and interactions
- TensorFlow Community - For excellent documentation
- Open Source Community - For amazing tools and libraries
- Hackathon Organizers - For the opportunity to build
- Beta Testers - For valuable feedback
Anuj Soni | Anisha Ghosh | Ayush Arora
with AI assistance from Claude
OSC Hackathon 2025
Questions? Open an issue on GitHub Bugs? Submit a detailed bug report Ideas? Start a discussion
Email: algovengers@example.com Twitter: @algovengers Discord: Join our server
Total Lines of Code: 15,000+
Frontend Components: 7 custom
Backend Services: 5 core
API Endpoints: 12
UI Animations: 11 keyframes
AI Categories: 200+
Documentation Pages: 6
Development Time: 72 hours
Coffee Consumed: β
Built with passion during OSC Hackathon 2025