# Mineflappy **Minecraft Flappy Bird** — a single-file HTML5 canvas game. No build step, no dependencies, no assets. Everything (sprites, font, music, sound) is generated in code. ``` open index.html # that's it - it runs straight from the filesystem ``` It fills the whole screen on any device - phone, tablet or desktop - with no letterboxing and no border, and it can be installed as a standalone app. --- ## Deploy to Coolify ### Option A - Dockerfile (recommended) The repo ships a `Dockerfile` that serves the game with nginx. 1. In Coolify: **New Resource → Application → Public/Private Repository** 2. **Repository URL**: `http://forgejo-b82b4lpyyzyg40thdsjdd38i.163.245.214.68.sslip.io/David/MINEFLAPPY-GAME.git` - Branch: `main` - Build Pack: **Dockerfile** 3. **Dockerfile Location**: `/Dockerfile` (default is fine) 4. **Port**: `80` — set this under **Networking → Ports exposes** 5. **Health Check Path**: `/healthz` 6. Hit **Deploy**. 7. Add a domain: **Settings → Domains → Add Domain** - e.g. `game.yourdomain.com` - Tick **Force HTTPS** and let Coolify/Traefik issue the Let's Encrypt cert. - Coolify routes the domain to the container's port 80 automatically. Push a new commit and Coolify rebuilds and redeploys it. > **If you get "502 Bad Gateway"**: the container is healthy, but the proxy > can't reach it. The usual cause is an empty **Ports exposes** field — when > it's blank Coolify routes to port **3000** instead of 80. Put `80` in that > field and redeploy. The bundled `nginx.conf` listens on **both 80 and > 3000**, so the game is served either way, but setting the port correctly > is still the right fix. ### Option B - Static Site (no Dockerfile) If you'd rather not run a container: 1. **New Resource → Static Site** with the same repo 2. **Build Command**: `echo "static"` (there is nothing to build) 3. **Root Directory**: `/` 4. Deploy, then attach a domain as above. ### Option C - docker compose A `docker-compose.yml` is included if you deploy by compose instead: ```bash docker compose up -d --build # game is on http://localhost:8080 ``` --- ## Run it locally with Docker ```bash docker build -t mineflappy . docker run --rm -p 8080:80 mineflappy # open http://localhost:8080 ``` --- ## Layout | File | What it is | |---|---| | `index.html` | The entire game - markup, CSS and JS in one file | | `Dockerfile` | nginx:alpine image that serves `index.html` | | `nginx.conf` | Server config: no-cache on the game, gzip, `/healthz` | | `docker-compose.yml` | Optional compose deployment | | `manifest.webmanifest` | Web app manifest - name, icons, standalone display | | `sw.js` | Service worker - caches the app so it works offline | | `icon-192.png` / `icon-512.png` | App icons (generated from the chicken sprite) | | `apple-touch-icon.png` / `favicon-32.png` | iOS home screen + browser tab icons | --- ## Install it as an app (PWA) The game is a full-screen Progressive Web App: - **iPhone / iPad** - Safari -> Share -> **Add to Home Screen** - **Android** - Chrome -> menu -> **Install app** - **Desktop Chrome/Edge** - the install icon in the address bar, or the **INSTALL APP** button in the corner of the game Installed, it launches fullscreen with no browser chrome, keeps working offline, and remembers your score. --- ## The game Six birds, each with one ability: | Bird | Ability | Effect | |---|---|---| | Chicken | Double Flap | Every 4th flap is 34% stronger | | Enderman | Teleport | Blink 70px forward (refused if a pipe is in the way) | | Allay | Allay Magnet | Nearby gems fly to you | | Blaze | Melt | Burns away the next pipe, widening its gap | | Phantom | Phase | Fly through anything for 1.2s | | Wolf | Howl | Slows the whole game to 55% for 2s | Also in: five biomes that change with your score (Plains → Desert → Mineshaft → Nether → Ice Peaks), a day/night cycle, weather, gold/bubble/wings/lucky-cube pickups, difficulty settings, bird unlocks, per-bird best scores, a daily challenge with a shareable code, a ghost of your best run, and 2-player on one screen. **Controls** - `Space` / `W` / `↑` / tap to flap, `F` to use your ability, `P` to pause, `C` on the game-over screen to change bird. In 2-player mode `Space` is player 1 and `↑` is player 2. Progress is stored in `localStorage` under `mineflappy_v2` (per origin, so `https://mineflappy.apphub.co.za` keeps its own scores).