Unified cloud storage management with AI-powered intelligence
StoreUFO is a full-stack platform for managing cloud storage across multiple providers from a single, intuitive dashboard. Built with Next.js, Node.js, and powered by AI.
- π Multi-Provider Support - Connect Cloudflare R2, AWS S3, and other S3-compatible services
- π’ Organization Management - Multi-tenant architecture with project-based organization
- π€ AI-Powered - Intelligent file analysis using Google GenAI
- π File Management - Upload, organize, and manage files with automatic image optimization
- πΊ 24/7 Live Streaming - Continuous RTMP streaming to multiple platforms (YouTube, Facebook, Twitch)
- β‘ Background Processing - Async job queues for heavy operations
- π¨ Themeable UI - Customizable interface with multiple themes
- π Secure - JWT authentication with bcrypt password hashing
Frontend:
- Next.js 16 + React 19
- TypeScript
- Tailwind CSS + shadcn/ui
- TanStack React Query
Backend:
- Node.js + Express
- MongoDB (Mongoose)
- Redis + Bull (job queues)
- AWS SDK (S3-compatible storage)
- FFmpeg (video streaming)
AI:
- Google GenAI (Gemini)
- Model Context Protocol (MCP)
- Node.js 18+ and npm
- MongoDB database
- Redis server
- FFmpeg (for video streaming)
- Google Gemini API key
- Cloud storage account (Cloudflare R2 or AWS S3)
- Go to Google AI Studio
- Create a new project or select an existing one
- Click "Get API key"
- Copy the key to
GEMINI_API_KEYin.env
- Local: Use
mongodb://localhost:27017/storeufo - Atlas (Cloud):
- Create a cluster on MongoDB Atlas
- Click "Connect" > "Drivers"
- Copy the connection string to
MONGODB_URIin.env
- Local: Use
redis://localhost:6379 - Cloud (Upstash/Redis Cloud):
- Create a database on Upstash or Redis Cloud
Cloudflare R2:
- Go to Cloudflare Dashboard > R2.
- Create a bucket.
- Go to "Manage R2 API Tokens" > "Create API Token".
- Permission: "Admin Read & Write".
- Copy
Access Key ID,Secret Access Key, andEndpoint. - In StoreUFO Dashboard: Go to "Storage Accounts" > "Add New" > Select "R2".
AWS S3:
- Go to AWS Console > IAM > Users > Create User.
- Attach policy:
AmazonS3FullAccess. - Create Access Key for the user.
- Copy
Access Key IDandSecret Access Key. - In StoreUFO Dashboard: Go to "Storage Accounts" > "Add New" > Select "S3".
git clone https://github.com/Dynamicearner/project-storeufo.git
cd project-storeufocd backend
npm installCreate .env file from example:
cp .env.example .envEdit backend/.env with your credentials:
GEMINI_API_KEY=your_gemini_api_key
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_secret_key
REDIS_URL=your_redis_url
ADMIN_EMAIL=[email protected]
ADMIN_PASSWORD=admin123cd ../frontend
npm installCreate .env.local file:
cp .env.example .env.localEdit frontend/.env.local:
NEXT_PUBLIC_API_URL=http://localhost:5000Terminal 1 - Backend:
cd backend
npm run devBackend runs on http://localhost:5000
Terminal 2 - Frontend:
cd frontend
npm run devFrontend runs on http://localhost:3000
Backend:
cd backend
npm startFrontend:
cd frontend
npm run build
npm start| Variable | Description | Default |
|---|---|---|
GEMINI_API_KEY |
Google Gemini API key | Required |
MONGODB_URI |
MongoDB connection string | Required |
JWT_SECRET |
Secret key for JWT tokens | Required |
REDIS_URL |
Redis connection URL | Required |
NODE_ENV |
Environment mode | development |
FRONTEND_URL |
Frontend URL for CORS | http://localhost:3000 |
ADMIN_EMAIL |
Default admin email | [email protected] |
ADMIN_PASSWORD |
Default admin password | admin123 |
MAX_LOGIN_ATTEMPTS |
Max failed login attempts | 3 |
LOGIN_LOCK_TIME_HOURS |
Account lock duration (hours) | 5 |
JWT_EXPIRY |
JWT token expiry time | 2h |
MAX_FILE_SIZE |
Max file size in bytes | 5368709120 (5GB) |
MAX_FOLDER_SIZE |
Max folder size in bytes | 10737418240 (10GB) |
MAX_FOLDER_FILES |
Max files per folder | 1000 |
PRESIGNED_URL_EXPIRY |
S3 URL expiry in seconds | 3600 |
STREAM_KEY_ENCRYPTION_SECRET |
Secret for encrypting RTMP keys | Required (32 chars) |
MAX_CONCURRENT_STREAMS |
Max simultaneous streams | 10 |
STREAM_PRESIGNED_URL_EXPIRY |
Stream URL expiry (seconds) | 43200 (12 hours) |
STREAM_HEALTH_CHECK_INTERVAL |
Stream health check interval (ms) | 5000 |
| Variable | Description | Default |
|---|---|---|
NEXT_PUBLIC_API_URL |
Backend API URL | http://localhost:5000 |
project-storeufo/
βββ backend/
β βββ src/
β β βββ config/ # Database & Redis config
β β βββ middleware/ # Auth & validation middleware
β β βββ models/ # MongoDB models
β β βββ routes/ # API routes
β β βββ services/ # Business logic
β β βββ utils/ # Helper functions
β β βββ workers/ # Background job workers
β β βββ server.js # Entry point
β βββ uploads/ # Temporary file uploads
β βββ package.json
β
βββ frontend/
β βββ src/
β β βββ app/ # Next.js pages
β β βββ components/ # React components
β β βββ contexts/ # React contexts
β β βββ hooks/ # Custom hooks
β β βββ lib/ # Utilities
β β βββ themes/ # Theme system
β βββ package.json
β
βββ README.md
For complete API documentation with request/response examples, visit:
- Authentication: Login, logout, JWT token management
- Organizations: Create and manage organizations
- Projects: Project management within organizations
- Storage Accounts: Connect R2/S3 storage providers
- File Upload: Direct presigned URL uploads (single files & folders)
- File Management: List, retrieve, generate URLs, delete files
- 24/7 Streaming: Create stream slots, manage playlists, multi-platform RTMP streaming
- AI Features: Object detection, image analysis, natural language search (English/Hindi/Hinglish)
- R2 Verification: Verify credentials and list buckets
Email: [email protected]
Password: admin123
- 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
This project is licensed under the MIT License.
For issues and questions, please open an issue on GitHub.
- Built for hackathon submission
- Powered by Google GenAI
- UI components from shadcn/ui
- Icons from Lucide React
Made with β€οΈ by Dynamicearner