Skip to content

[ Vue | Laravel | Java APK | WebSockets | Cucumber Automated Testing ] Memory Game Platform - Single/multiplayer games, user profiles, leaderboards, currency system, management, and real-time communications for the well-known Memory Game

Notifications You must be signed in to change notification settings

APimenta4/Memory-Game

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧠 Memory Game

A full-stack memory card game application featuring both single-player and multiplayer modes, implemented with a Laravel backend and WebSocket for real-time communication.

The project includes a responsive Vue.js web application and a native Android app, providing user friendly gameplay across web and mobile platforms.

✨ Features

  • 🎮 Single Player Mode: Play memory game with different board sizes (3x4, 4x4, 4x6, 6x6, with the option to add more)
  • 👥 Multiplayer Mode: Real-time multiplayer games with WebSocket connection
  • 🪙 Brain Coins System: Virtual currency for playing games and rewards
  • 🏆 Leaderboards: Global and personal scoreboards
  • 👤 User Management: Registration, login, and profile management
  • 📊 Statistics: Personal and admin game statistics
  • 🔔 Notifications: Real-time notifications for achievements and transactions
  • 📜 Game History: Complete history of played games with filtering options

🛠️ Tech Stack

  • Backend: Laravel (PHP)
  • Frontend: Vue.js 3 with Composition API
  • Mobile: Android Java Application (Native Android client with full game functionality)
  • Database: MySQL (via Docker)
  • Real-time: Socket.IO (WebSockets)
  • UI Components: Custom UI components with Tailwind CSS and ShadcnUI
  • Development: Docker (Laravel Sail), Vite
  • Database Admin: Adminer
  • Testing: Cucumber + Gherkin for automated feature testing

📋 Project Requirements

This project was developed as part of an academic assignment with the the requirements specified in the PDF Document.

🏗️ Architecture

Memory-Game/
├── laravel/          # Laravel backend API
├── vue/              # Vue.js frontend
├── websockets/       # Node.js WebSocket server
├── android/          # Android Java application (native mobile client)
├── tests/            # Automated BDD testing with Cucumber
└── README.md

🔌 Ports Used

  • Laravel API: 8085
  • Vue.js Frontend: 5173 (dev) / 4173 (preview)
  • WebSocket Server: 8086
  • Adminer (Database Admin): 8080
  • MySQL Database: 3306

📋 Prerequisites

  • Docker Desktop
  • Node.js
  • Composer
  • Git

🚀 Installation & Setup

1. 📂 Clone the Repository

git clone <repository-url>
cd Memory-Game

2. ⚡ Laravel Backend Setup

Navigate to the Laravel directory:

cd laravel

Copy environment file:

cp .env.example .env

Install dependencies:

composer update

Start Docker containers:

./vendor/bin/sail up -d

Run database migrations and seed:

./vendor/bin/sail artisan migrate:fresh
./vendor/bin/sail artisan db:seed

Choose locale (select [0] for en_US):

# Follow the prompt to select locale

Create storage symlink:

./vendor/bin/sail artisan storage:link

3. 🌐 Vue.js Frontend Setup

Navigate to the Vue directory:

cd ../vue

Copy environment file:

cp .env.example .env

Install dependencies:

npm install

Start development server:

npm run dev

4. 🔗 WebSocket Server Setup

Navigate to the WebSockets directory:

cd ../websockets

Install dependencies:

npm install

Start the WebSocket server:

node index.js

5. 📱 Android Application Setup

Navigate to the Android directory:

cd ../android

Open the project in Android Studio or build using Gradle:

./gradlew build

Install the APK on your device or emulator:

adb install app/build/outputs/apk/{application_name}.apk

6. 🧪 Automated Testing Setup

Navigate to the tests directory:

cd ../tests

The automated testing is implemented using Katalon Studio, a comprehensive test automation platform.

Download Katalon Studio: https://katalon.com/download

To run the automated tests:

  1. Download and install Katalon Studio
  2. Open Katalon Studio
  3. Import the project from the tests/ directory
  4. Execute the test suites directly from the Katalon Studio interface

💡 Development Notes

Laravel Sail Alias

For convenience, you can create an alias for Laravel Sail:

alias sail='./vendor/bin/sail'

Then use sail instead of ./vendor/bin/sail for commands.

🗄️ Database Management

Access Adminer for database management:

  • URL: http://localhost:8080
  • Server: mysql
  • Username: sail
  • Password: password
  • Database: laravel

🔄 Reset Database

If you need to reset the database:

cd laravel
./vendor/bin/sail artisan migrate:fresh --seed

About

[ Vue | Laravel | Java APK | WebSockets | Cucumber Automated Testing ] Memory Game Platform - Single/multiplayer games, user profiles, leaderboards, currency system, management, and real-time communications for the well-known Memory Game

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •