@andreabiagini5/applicazioni-e-servizi-web-project - v1.1.1
    Preparing search index...

    @andreabiagini5/applicazioni-e-servizi-web-project - v1.1.1

    SandPiles

    Place your grains. Tip the balance. In this world of unstable equilibrium, every move can trigger a chain reaction. Conquer the board one avalanche at a time.

    Bugs Code Smells Duplicated Lines (%) Lines of Code Technical Debt Vulnerabilities

    An online multiplayer turn-based strategy game based on the mathematical Abelian sandpile model, developed for "Applicazioni e Servizi Web" and "Software Process Engineering" exams at UniBo's Computer Science Master Degree courses.

    Full technical documentation and academic report available here: Report

    • Competitive matches
    • Matches against bot
    • Login to save your progress
    • Leaderboard to check your skill level

    Frontend

    • Vue.js + TypeScript
    • SCSS
    • MDBootstrap

    Backend

    • Node.js + Express
    • Socket.IO
    • MongoDB
    • Prolog bot

    DevOps

    • Build automation with npm scripts
    • Docker containerization
    • SonarCloud
    • GitHub Actions CI/CD
    1. Prerequisites:
      • Node.js v20+
      • Docker (for production)
    2. Install dependencies:
      npm install
      
    3. Configure environment:
      • Create a .env file in the root directory containing: DB_NAME, DB_APP_USERNAME, DB_APP_PASSWORD, DB_ADMIN_USERNAME, DB_ADMIN_PASSWORD, JWT_SECRET, JWT_EXPIRATION.

    The system can be executed locally, using the following commands:

    npm run build && npm start
    

    and the client can be accessed from http://localhost:4173.

    To run the system in Docker, you first need to create a valid certificate and key pair using the following commands:

    openssl req -x509 -newkey rsa:2048 -keyout certs/key.pem -out certs/cert.pem -days 365 -nodes -subj "/CN=sandpiles.com"
    

    Then build and start by running the following commands:

    npm run build:docker && npm run start:docker
    

    and accessing the client using https://172.0.0.11.

    See CONTRIBUTING for details on how to contribute to this project.

    MIT Licensed - See LICENSE for details.