A full-stack marketplace platform where creators can upload, distribute, and monetize game modifications (mods). Built with React, Express, MongoDB, and integrated with ShareMods for file hosting.
ModMarket connects game mod creators with players. Creators upload their mod files (via ShareMods) along with metadata, screenshots, and pricing. Players browse, search, filter, and download mods. The platform handles file hosting, download tracking, and creator payouts.
- Mod Upload & Management – Upload mod binaries with title, version, game, platform, screenshots, changelog, requirements, and DLC info
- ShareMods Integration – Mod files are uploaded to ShareMods for external hosting; metadata stored in MongoDB
- Screenshot Compression – Images are auto-compressed via Sharp and stored in MongoDB
- Rich Mod Schema – Supports changelog entries, requirements, DLC tracking, tags, game versions, features list, ratings, and discount pricing
- Browse & Search – Filter mods by game, platform, category, and search query
- Download Tracking – Each download increments a counter
- User Authentication – JWT-based auth (signup/login)
- Creator Payouts – UPI-based payout requests with status tracking (pending/approved/rejected)
- Pricing & Fees – Creators set a price; platform takes a 5% commission
- Responsive UI – Dark theme UI built with React, Tailwind CSS v4, and Lucide icons
- Windows Launcher –
start.batone-click launcher for both servers
- React 19, TypeScript, Vite
- Tailwind CSS v4 +
@tailwindcss/viteplugin - Lucide React (icons)
- Motion (animations)
- Node.js, Express
- MongoDB + Mongoose
- JWT Authentication (bcryptjs + jsonwebtoken)
- Multer (multipart parsing)
- Sharp (image compression)
- Form-Data + Axios (ShareMods API client)
- ShareMods API – file hosting for mod binaries
modmarket/
├── start.bat # One-click launcher (Windows)
├── sharemods.txt # ShareMods API reference
├── backend/
│ ├── config/
│ │ └── db.js # MongoDB connection
│ ├── middleware/
│ │ └── auth.js # JWT authentication middleware
│ ├── models/
│ │ ├── Mod.js # Mod schema (screenshots, metadata, sharemods refs, changelog, requirements, ratings)
│ │ ├── User.js # User schema
│ │ └── Payout.js # Payout request schema
│ ├── routes/
│ │ ├── auth.js # Signup/Login endpoints
│ │ ├── mods.js # CRUD + upload/download/thumbnail endpoints
│ │ └── payouts.js # Payout request endpoints
│ ├── uploads/screenshots/ # Legacy screenshot storage
│ ├── update_status.js # Utility to update mod status
│ ├── .env # Environment variables
│ ├── server.js # Express app entry point (port 5001)
│ └── package.json
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ │ ├── AuthView.tsx # Login/Signup forms
│ │ │ ├── HomeView.tsx # Landing page
│ │ │ ├── LibraryView.tsx # Browse/search mods grid + modal
│ │ │ ├── Navbar.tsx # Navigation bar
│ │ │ ├── PayoutView.tsx # UPI payout requests
│ │ │ └── UploadView.tsx # Upload/edit mod form
│ │ ├── types.ts # TypeScript interfaces
│ │ ├── App.tsx # Root app component
│ │ ├── main.tsx # Vite entry point
│ │ └── index.css # Global styles / Tailwind
│ ├── index.html
│ ├── vite.config.ts
│ └── package.json
Create backend/.env:
MONGO_URI=mongodb://localhost:27017/modmarket
JWT_SECRET=your_jwt_secret_here
SHAREMODS_API_KEY=your_sharemods_api_key_here
SHAREMODS_BASE_URL=https://sharemods.com/api
PORT=5000
- Node.js 18+
- MongoDB (local or Atlas)
start.batcd backend
npm install
npm start # Starts on http://localhost:5001cd frontend
npm install
npm run dev # Starts on http://localhost:5173| Method | Path | Description |
|---|---|---|
| POST | /api/auth/signup | Register a new user |
| POST | /api/auth/login | Login & get JWT |
| Method | Path | Description |
|---|---|---|
| GET | /api/mods | List all mods |
| POST | /api/mods/upload | Upload a new mod (auth) |
| PUT | /api/mods/:id | Update mod metadata (auth) |
| POST | /api/mods/:id/download | Increment download count |
| GET | /api/mods/:id/screenshots/:index | Serve screenshot image |
| GET | /api/mods/:id/thumbnail | Serve thumbnail image |
| Method | Path | Description |
|---|---|---|
| POST | /api/payouts/request | Create payout request |
| GET | /api/payouts/:userId | List user's payouts |
| PATCH | /api/payouts/:id/status | Update payout status (auth) |
ISC