PlayCore is a high-performance, full-stack gaming and tournament platform designed for modern esports communities. Featuring a premium Cyberpunk-inspired UI, PlayCore provides a seamless experience for players to organize squads, compete in tournaments, and engage in real-time social interaction.
- Automated Management: Complete CRUD operations for tournaments with automated status updates.
- Participation Flow: Seamless joining process with modal-driven UI for better user experience.
- Reminders: Integrated
node-cronwithNodemailerto send automated tournament start reminders to participants.
- Squad Orchestration: Users can create and manage their own gaming squads/teams.
- Player Profiles: Personalized profiles showcasing stats, enrolled tournaments, and social activity.
- Gaming News (Blog): A full-featured blog system for community updates, supporting rich text via
react-quill.
- Global & Direct Messaging: Instant communication platform-wide powered by Socket.io.
- Live Notifications: Real-time alerts for tournament invites, squad updates, and social interactions.
- GridFS Integration: Leveraging
multer-gridfs-storageto store high-resolution profile pictures and tournament banners directly in MongoDB, ensuring persistence across server restarts and deployments.
- Advanced Auth: JWT-based authentication with
bcryptjspassword hashing and secure HTTP-only cookies. - DDoS Protection: Rate limiting implement via
express-rate-limitand sanitization withmongo-sanitizeto prevent NoSQL injection. - Health Monitoring: Dedicated health-check endpoints for uptime monitoring.
- Automated Cleanup: Scheduled background tasks (
node-cron) to prune expired notifications and stale data.
- Framework: React (Vite)
- Styling: Tailwind CSS
- State Management: React Context API
- Icons: Lucide React / React Icons
- HTTP Client: Axios
- Environment: Node.js
- Server Framework: Express.js
- Database: MongoDB (ODM: Mongoose)
- Real-time: Socket.io
- PDF Generation: PDFKit (for generating tournament certificates)
PlayCore/
├── backend/ # Express.js Server & Logic
│ ├── config/ # Database & App configurations
│ ├── controllers/ # Route controllers
│ ├── models/ # Mongoose Schemas (User, Tournament, Squad, etc.)
│ ├── routes/ # API Route definitions
│ ├── socket/ # Socket.io handlers
│ └── utils/ # Middleware & Utility functions
├── frontend/ # React Application
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── context/ # Auth & Socket contexts
│ │ ├── pages/ # Views (Home, Dashboard, etc.)
│ │ └── utils/ # Client-side helpers
└── README.md # Documentation
git clone https://github.com/your-username/PlayCore.git
cd PlayCore# Install root dependencies
npm install
# Install frontend dependencies
cd frontend && npm install
cd ..Create a .env file in the root directory and add the following:
PORT=5000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
NODE_ENV=development
FRONTEND_URL=http://localhost:5173
EMAIL_SERVICE=gmail
EMAIL_USER=your-email@gmail.com
EMAIL_PASS=your-app-password# Start both Backend & Frontend concurrently
npm run devThis project is licensed under the ISC License.
Contributions are welcome! If you'd like to improve PlayCore, feel free to fork the repo and submit a PR.
Developed with ❤️ by Parth.