Multiplayer UNO game implemented as a university Software Engineering project.
Built with Node.js, Express, Vite, React and PostgreSQL, and intended for learning and academic use only.
- Room creation with custom settings and room join by code.
- Multiplayer support (2-5 players per room).
- Bots support to fill empty player slots, with customizable difficulty levels.
- User registration and login for persistent activities history and rejoining rooms.
- Basic game rules and turn management (cards, and special cards behavior).
- Support for minimum screen resolution of 1600 × 800 pixels.
- Frontend: React + Vite.
- Backend: Node.js + Express + Socket.io.
- Database: PostgreSQL.
- Node.js (v16+ recommended).
- npm (v8+ recommended).
- PostgreSQL (local or remote instance).
-
Clone the repository and navigate to the project folder:
git clone https://github.com/EasyXploit/Uno && cd Uno
-
Copy the
.env.examplefile contents to a new.envfile and fill in your custom configuration as described in the file:cp .env.example .env
# Server configuration SERVER_PORT=3500 # "3500" by default if not specified SERVER_PUBLIC_URL=https://your.public.url # The base URL where the server is hosted, so it can generate correct links JWT_SECRET=YOUR_JWT_SECRET # (Optional) Custom secret key for JWT token generation. If not set, a fixed default will be used (not recommended). # Database connection configuration DB_USER=YOUR_DB_USER # "postgres" by default if not specified DB_PASSWORD=YOUR_DB_PASSWORD # Empty by default if not specified DB_HOST=YOUR_DB_HOST # "localhost" by default if not specified DB_PORT=YOUR_DB_PORT # "5432" by default if not specified DB_NAME=YOUR_DB_NAME # "uno" by default if not specified
-
Install the dependecies, create the SQL tables, build the frontend, and start the server:
npm run deploy npm run start
Note: For development mode with hot-reloading, use
npm run devinstead. -
Et voilà! You can now access the game at
http://localhost:3500(replace with the SERVER_PUBLIC_URL configured in your.envfile).
This project uses Swagger UI to provide interactive API documentation. Once the server is running, you can access the documentation at: http://localhost:3500/api/docs (replace the port number if you specified a different one in your .env file).
