A modern, secure platform for hosting and sharing GIFs with built-in privacy controls and a beautiful user interface.
- 🔒 Privacy Controls: Public and private GIF sharing options
- 🎨 Modern UI: Clean, responsive design with dark/light mode support
- 🔍 Smart Search: Real-time GIF search functionality
- 👤 User Management: Secure authentication and user profiles
- 📤 Easy Sharing: Quick share options with multiple format support
- 🌐 Multi-format Support: Support for various GIF formats
- 💾 File Management: 25MB file size limit with automatic cleanup
- 🎯 Content Safety: Built-in content moderation policies
- 🌙 Theme Support: Elegant dark and light mode themes
- 📱 Responsive Design: Works seamlessly on all devices
- Frontend: React, TypeScript, Chakra UI, Framer Motion
- Backend: Node.js, Express
- Database: PostgreSQL with Drizzle ORM
- Authentication: JWT-based auth system
- Storage: Local file system with automatic cleanup
- API: RESTful API with rate limiting
- Clone the repository
git clone https://github.com/rohitg00/host-your-gif
cd host-your-gif
- Install dependencies
# Install server dependencies
cd server
npm install
# Install client dependencies
cd ../client
npm install
- Environment Setup
Copy
.env.example
to.env
in both client and server directories and update the values:
# Server Environment Variables
DATABASE_URL=postgresql://user:password@localhost:5432/giftrove
JWT_SECRET=your_jwt_secret_key
PORT=3000
UPLOAD_DIR=uploads
MAX_FILE_SIZE=25000000
RATE_LIMIT_WINDOW=15
RATE_LIMIT_MAX=100
# Client Environment Variables
VITE_API_URL=http://localhost:3000
- Database Setup
cd server
npm run db:migrate
- Start the Application
# Start server (from server directory)
npm run dev
# Start client (from client directory)
npm run dev
- Pull the Docker Image
docker pull rohitghumare64/host-your-gif:latest
- Run the Docker Container
docker run -p 3000:3000 rohitghumare64/host-your-gif:latest \
-e DATABASE_URL=postgresql://user:password@localhost:5432/giftrove \
-e JWT_SECRET=your_jwt_secret_key
POST /api/auth/register
- Register new userPOST /api/auth/login
- User loginPOST /api/auth/logout
- User logoutGET /api/auth/me
- Get current user
POST /api/upload
- Upload new GIF(s)GET /api/gifs
- Get all public GIFsGET /api/gifs/:id
- Get specific GIFDELETE /api/gifs/:id
- Delete a GIF
- Rate limiting on all API endpoints
- JWT-based authentication
- File type validation
- Content moderation
- Secure file storage
- XSS protection
This project is licensed under the MIT License - see the LICENSE file for details.
Please review our Content Policy for guidelines on acceptable content.
Contributions are welcome! Please feel free to submit a Pull Request.
- Hosted on Sevalla
- Built with Chakra UI
- Icons by React Icons