- Implemented touch event listeners for movement via gestures on mobile devices.
- Updated UI instructions to include new mobile control features.
- Improved CSS for better readability on smaller screens.
- Added touch event listeners to enable movement via touch gestures.
- Updated the instructions to include mobile controls.
- Adjusted CSS for better readability on smaller screens.
# Add CI/CD Pipeline with Docker Build and Publish
## Summary
This PR adds a complete CI/CD pipeline for building and publishing Docker images of the Three.js game to the Forgejo container registry. The workflow automatically builds, validates, and publishes Docker images with semantic versioning when code is merged to main.
## Changes
### 🚀 CI/CD Workflow (`.forgejo/workflows/ci.yaml`)
- **Build & Validation**: Automatically builds Docker image on PRs and validates it works
- **Semantic Versioning**: Auto-increments patch version on each merge to main
- First version: `0.1.0` (when no tags exist)
- Subsequent merges: Auto-increments patch (e.g., `0.1.0` → `0.1.1` → `0.1.2`)
- **Publishing**: Publishes images to `git.jusemon.com/jusemon/threejs-test:<version>` and `latest` tag
- **Git Tagging**: Automatically creates git tags (e.g., `v0.1.0`) for releases
- **Registry Integration**: Uses Forgejo container registry with secrets-based authentication
### 🐳 Docker Setup
- **Dockerfile**: Custom nginx:alpine image with the game HTML file
- **docker-compose.yml**: Simple orchestration for local development
- **nginx.conf**: Minimal nginx configuration with gzip compression
## Workflow Behavior
### On Pull Requests
- ✅ Builds Docker image
- ✅ Validates image by running container and checking HTTP response
- ❌ Does NOT publish (validation only)
### On Merge to Main
- ✅ Builds Docker image
- ✅ Validates image
- ✅ Publishes to registry with version tag
- ✅ Tags as `latest`
- ✅ Creates git tag for the release
## Required Setup
Before merging, ensure these secrets are configured in the repository:
- `REGISTRY_USERNAME`: Forgejo username
- `REGISTRY_PASSWORD`: Personal Access Token with package write permissions
## Versioning Strategy
- **First Release**: `0.1.0` (when no tags exist)
- **Subsequent Releases**: Auto-increments patch version on each merge
- **Image Tags**:
- `git.jusemon.com/jusemon/threejs-test:0.1.0`
- `git.jusemon.com/jusemon/threejs-test:latest` (always points to latest main)
## Testing
The workflow includes validation steps that:
1. Build the Docker image
2. Run a test container
3. Verify the web server responds correctly
4. Only publish if all validations pass
## Benefits
- ✅ Automated builds and deployments
- ✅ Consistent versioning
- ✅ Image validation before publishing
- ✅ Easy rollback using version tags
- ✅ Latest tag for easy deployment
Reviewed-on: #1
Co-authored-by: Juan Sebastian Montoya <juansmm@outlook.com>
Co-committed-by: Juan Sebastian Montoya <juansmm@outlook.com>
- Convert from function-based to class-based architecture
- Create GameObject base class with common functionality (position, collision, scene management)
- Implement Player, Coin, and Obstacle classes extending GameObject
- Add Game class to manage game lifecycle and state
- Fix shadow rendering by configuring directional light shadow camera bounds
- Fix player collision to prevent sinking below ground (horizontal push only)
- Improve code organization and maintainability with OOP principles