TrentoArena is a full-stack web application developed as a university group project for the city of Trento. The platform is designed to connect sports enthusiasts by allowing them to discover local sports facilities, organize games, track their performance, and interact with other players in the community.
This application serves as a centralized hub for recreational sports in Trento. Users can navigate an interactive map of sports venues, join or create matches for various sports, and compete using a built-in Elo ranking system.
- Interactive Map & Venues: Discover local sports facilities (places) integrated with an interactive Leaflet map.
- Game Matchmaking: Create, join, and manage sports games.
- Competitive Elo System: Tracks player performance and ranks users based on their game outcomes.
- Authentication & Security: Secure login using local credentials or Google OAuth 2.0.
- User Profiles: Customizable profiles with avatars (managed via Cloudinary) and player statistics (visualized with Chart.js).
- Admin Dashboard: Moderation tools, user ban management, and a reporting system.
- Multilingual Support: Fully localized interface utilizing Vue I18n.
Frontend:
- Framework: Vue.js 3 with Vite
- Styling: Bootstrap 5 & Sass
- Mapping: Leaflet
- Data Visualization: Chart.js
Backend:
- Environment: Node.js & Express.js
- Language: TypeScript
- Database: MongoDB & Mongoose
- Authentication: Passport.js (Local & Google OAuth2)
- Image Hosting: Cloudinary
- Emails: Nodemailer
Testing & Deployment:
- Testing: Mocha & Supertest
- Hosting: Render
If you'd like to run this project locally, follow these steps:
- Node.js (v18+ recommended)
- MongoDB instance (local or Atlas)
-
Clone the repository: git clone https://github.com/your-username/TrentoArena.git cd TrentoArena
-
Install dependencies: This will install both backend and frontend dependencies. npm install
-
Environment Setup: Create a .env file in the root directory and configure the repository's required variables (e.g., MONGO_URI, SESSION_SECRET, Cloudinary credentials, Google OAuth keys).
-
Build the project: ./render-build.sh
-
Start the development server: npm run dev
-
Testing npm test