BucStop-Goofin is a modern microservices-based gaming platform developed as part of the Software Engineering II course.
This platform features classic arcade games (Snake, Tetris, and Pong) with a clean, responsive UI and a scalable architecture designed for cloud deployment.
The application is built using a microservices architecture with the following components:
- WebApp: Main frontend service that handles user authentication, game selection, and user interface
- API Gateway: Orchestrates communication between the WebApp and game microservices
- Game Microservices: Independent services for each game (Snake, Tetris, Pong)
- Backend: ASP.NET Core
- Frontend: HTML5, CSS3, JavaScript
- Containerization: Docker, Docker Compose
- Deployment: AWS EC2
- Logging: Serilog
- CI/CD: GitHub Actions
- Docker and Docker Compose
- .NET 6 SDK (for development only)
- Git
-
Clone the repository:
git clone https://github.com/your-org/BucStop-Goofin.git cd BucStop-Goofin -
Start all services using Docker Compose:
docker-compose up
-
Access the application:
- WebApp: http://localhost:8080
- API Gateway: http://localhost:8081
- Snake: http://localhost:8082
- Pong: http://localhost:8083
- Tetris: http://localhost:8084
While Docker Compose manages service discovery and networking between containers, Visual Studio provides a powerful
alternative for development that will probably be more familiar for students through its multiple project startup feature.
-
Open the solution file
BucStop.slnin Visual Studio. -
Configure multiple startup projects:
- Right-click on the Solution in Solution Explorer and select "add existing project"
- Select the
csprojfile for each other service.- Right click solution and select "configure multi-project startup".
- Set the following projects to "Start":
BucStop(WebApp)APIGatewaySnakePongTetris
- Configure the startup order with the API Gateway first, followed by the game services, and finally the WebApp
- Click "OK" to save the configuration
-
Press F5 or click the "Start" button to run all projects simultaneously.
Visual Studio automatically handles:
- Starting each project on a different port
- Configuring the correct environment variables
- Launching debug sessions for each project
-
Create an AWS account if you don't have one
-
Create a new EC2 instance:
- Recommended: t2.micro (or larger for production)
- Amazon Linux 2 or Ubuntu Server
- Configure security group to allow inbound traffic on ports 22 (SSH), 80 (HTTP), and 443 (HTTPS), 8080 (WebApp), 8081 (Gateway), 8082-8084 (Games)
-
Connect to your EC2 instance:
Option 1: AWS Console (Recommended)
- Go to the AWS EC2 Console
- Select your EC2 instance
- Click "Connect" button at the top of the page
- Choose the "EC2 Instance Connect" tab
- Click "Connect" to access the browser-based terminal
Option 2: SSH Connection
ssh -i /path/to/your-key.pem ec2-user@your-ec2-public-dns
-
Install required software packages by running EC2-init.sh:
-
Clone the repository and start the services:
git clone https://github.com/<your-repo>/BucStop-Goofin.git cd BucStop-Goofin docker-compose up
The application supports multiple environments through configuration files:
appsettings.Development.json: Local development settings (please don't use this - for your own sanity)appsettings.containersLocal.json: Local Docker container settingsappsettings.containers.json: Production container settingsappsettings.Production.json: Production settings (currently deprecated - consider removing)
When deploying to production, use the appropriate environment variable (consider persisting environment variable
by adding it to .bashrc or /etc/profile):
env=containers docker-compose up -dBucStop-Goofin/
├── Bucstop WebApp/ # Main web application
│ └── BucStop/
│ ├── Controllers/ # MVC controllers
│ ├── Views/ # UI templates
│ ├── Models/ # Data models
│ ├── Services/ # Business logic
│ └── MicroServices/ # Service communication
├── Team-3-BucStop_APIGateway/ # API Gateway service
├── Team-3-BucStop_Snake/ # Snake game microservice
├── Team-3-BucStop_Tetris/ # Tetris game microservice
├── Team-3-BucStop_Pong/ # Pong game microservice
├── Documentation/ # Project documentation
└── docker-compose.yml # Container orchestration
- Clone the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
-
Services not connecting properly:
- Ensure all services are running (
docker ps) - Check if the API Gateway is configured with correct service URLs
- Verify network connectivity between containers
- Ensure all services are running (
-
Game not loading:
- Check browser console for JavaScript errors
- Verify that the game's microservice is running
- Check API Gateway logs for routing issues
All services use Serilog for structured logging:
# View logs for all containers
docker-compose logs
# View logs for a specific service
docker-compose logs bucstop
docker-compose logs api-gatewayThis project is licensed under the MIT License - see the LICENSE file for details.
- Original BucStop project that served as foundation from previous semesters
- All contributors to the project from the most recent semester:
- @Christopher-Powers, @ChristopherOaks (other Chris), @Brofessortec, @nixonrs-bucs, @CurtisReece, @minknd, @Ismaelizzy, @Zach1204
- Software Engineering II course instructor, Professor Kinser

