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.
- 🎮 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
- 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
This project was developed as part of an academic assignment with the the requirements specified in the PDF Document.
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
- Laravel API: 8085
- Vue.js Frontend: 5173 (dev) / 4173 (preview)
- WebSocket Server: 8086
- Adminer (Database Admin): 8080
- MySQL Database: 3306
- Docker Desktop
- Node.js
- Composer
- Git
git clone <repository-url>
cd Memory-GameNavigate to the Laravel directory:
cd laravelCopy environment file:
cp .env.example .envInstall dependencies:
composer updateStart Docker containers:
./vendor/bin/sail up -dRun database migrations and seed:
./vendor/bin/sail artisan migrate:fresh
./vendor/bin/sail artisan db:seedChoose locale (select [0] for en_US):
# Follow the prompt to select localeCreate storage symlink:
./vendor/bin/sail artisan storage:linkNavigate to the Vue directory:
cd ../vueCopy environment file:
cp .env.example .envInstall dependencies:
npm installStart development server:
npm run devNavigate to the WebSockets directory:
cd ../websocketsInstall dependencies:
npm installStart the WebSocket server:
node index.jsNavigate to the Android directory:
cd ../androidOpen the project in Android Studio or build using Gradle:
./gradlew buildInstall the APK on your device or emulator:
adb install app/build/outputs/apk/{application_name}.apkNavigate to the tests directory:
cd ../testsThe automated testing is implemented using Katalon Studio, a comprehensive test automation platform.
Download Katalon Studio: https://katalon.com/download
To run the automated tests:
- Download and install Katalon Studio
- Open Katalon Studio
- Import the project from the
tests/directory - Execute the test suites directly from the Katalon Studio interface
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.
Access Adminer for database management:
- URL:
http://localhost:8080 - Server:
mysql - Username:
sail - Password:
password - Database:
laravel
If you need to reset the database:
cd laravel
./vendor/bin/sail artisan migrate:fresh --seed