Mineflappy: Minecraft Flappy Bird with 6 birds, abilities, biomes and Docker deployment
Single-file HTML5 canvas game - sprites, bitmap font, music and sound are
all generated in code, no external assets.
Game:
- 6 playable birds, each with a unique ability (Double Flap, Teleport,
Allay Magnet, Melt, Phase, Howl)
- 5 score-driven biomes (Plains, Desert, Mineshaft, Nether, Ice Peaks)
- Day/night cycle, weather (rain, snow, embers), camera drift
- Pickups: gold, bubble shield, elytra wings, lucky cube buffs
- Difficulty settings, bird unlocks, per-bird bests, advancement toasts
- Daily challenge with a shareable code and a ghost of your best run
- 2-player on one screen
Deployment:
- Dockerfile (nginx:alpine) serving the single file
- nginx.conf with no-cache headers, gzip and a /healthz endpoint
- docker-compose.yml and Coolify instructions in the README
2026-10-23 17:14:43 +00:00
|
|
|
server {
|
|
|
|
|
listen 80;
|
|
|
|
|
listen [::]:80;
|
2026-10-23 17:24:53 +00:00
|
|
|
# Coolify's default app port - serve the game there too so the proxy
|
|
|
|
|
# can route to 80 or 3000 and the site works either way
|
|
|
|
|
listen 3000;
|
|
|
|
|
listen [::]:3000;
|
Mineflappy: Minecraft Flappy Bird with 6 birds, abilities, biomes and Docker deployment
Single-file HTML5 canvas game - sprites, bitmap font, music and sound are
all generated in code, no external assets.
Game:
- 6 playable birds, each with a unique ability (Double Flap, Teleport,
Allay Magnet, Melt, Phase, Howl)
- 5 score-driven biomes (Plains, Desert, Mineshaft, Nether, Ice Peaks)
- Day/night cycle, weather (rain, snow, embers), camera drift
- Pickups: gold, bubble shield, elytra wings, lucky cube buffs
- Difficulty settings, bird unlocks, per-bird bests, advancement toasts
- Daily challenge with a shareable code and a ghost of your best run
- 2-player on one screen
Deployment:
- Dockerfile (nginx:alpine) serving the single file
- nginx.conf with no-cache headers, gzip and a /healthz endpoint
- docker-compose.yml and Coolify instructions in the README
2026-10-23 17:14:43 +00:00
|
|
|
server_name _;
|
|
|
|
|
|
|
|
|
|
root /usr/share/nginx/html;
|
|
|
|
|
index index.html;
|
|
|
|
|
|
|
|
|
|
server_tokens off;
|
|
|
|
|
charset utf-8;
|
|
|
|
|
|
|
|
|
|
# The game is one file - never cache it, so a redeploy shows up at once
|
|
|
|
|
location = /index.html {
|
|
|
|
|
add_header Cache-Control "no-cache, no-store, must-revalidate" always;
|
|
|
|
|
try_files $uri =404;
|
|
|
|
|
}
|
|
|
|
|
|
Fullscreen PWA: no border, installs as an app, works offline
- canvas fills the entire screen on any device; the 480x640 world is
scaled to fit and bottom-aligned so the ground always sits on the
bottom edge, with the sky painted full-bleed behind it
- the canvas buffer now always matches its laid-out size, so the drawing
can never drift out of step with the screen
- HUD (score, badge, buffs, toasts, biome banner) moved to screen space
so it stays pinned to the real screen edges
- sun and stars drawn in screen space so the sky above the play area is
not empty
- PWA: manifest, service worker (offline), generated app icons and an
in-game INSTALL APP button
- overlays now dim the whole screen, not just the game strip
2026-10-23 17:52:18 +00:00
|
|
|
# the service worker must always be revalidated or updates never land
|
|
|
|
|
location = /sw.js {
|
|
|
|
|
add_header Cache-Control "no-cache, no-store, must-revalidate" always;
|
|
|
|
|
add_header Service-Worker-Allowed "/" always;
|
|
|
|
|
try_files $uri =404;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# the web app manifest needs its own content type
|
|
|
|
|
location = /manifest.webmanifest {
|
|
|
|
|
default_type application/manifest+json;
|
|
|
|
|
add_header Cache-Control "public, max-age=604800" always;
|
|
|
|
|
try_files $uri =404;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# icons can be cached hard - they only change with a version bump
|
|
|
|
|
location ~* \.png$ {
|
|
|
|
|
add_header Cache-Control "public, max-age=604800" always;
|
|
|
|
|
try_files $uri =404;
|
|
|
|
|
}
|
|
|
|
|
|
Mineflappy: Minecraft Flappy Bird with 6 birds, abilities, biomes and Docker deployment
Single-file HTML5 canvas game - sprites, bitmap font, music and sound are
all generated in code, no external assets.
Game:
- 6 playable birds, each with a unique ability (Double Flap, Teleport,
Allay Magnet, Melt, Phase, Howl)
- 5 score-driven biomes (Plains, Desert, Mineshaft, Nether, Ice Peaks)
- Day/night cycle, weather (rain, snow, embers), camera drift
- Pickups: gold, bubble shield, elytra wings, lucky cube buffs
- Difficulty settings, bird unlocks, per-bird bests, advancement toasts
- Daily challenge with a shareable code and a ghost of your best run
- 2-player on one screen
Deployment:
- Dockerfile (nginx:alpine) serving the single file
- nginx.conf with no-cache headers, gzip and a /healthz endpoint
- docker-compose.yml and Coolify instructions in the README
2026-10-23 17:14:43 +00:00
|
|
|
location = /healthz {
|
|
|
|
|
access_log off;
|
|
|
|
|
default_type text/plain;
|
|
|
|
|
return 200 "ok\n";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
location / {
|
|
|
|
|
try_files $uri $uri/ =404;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gzip on;
|
|
|
|
|
gzip_vary on;
|
|
|
|
|
gzip_min_length 1024;
|
|
|
|
|
gzip_comp_level 5;
|
|
|
|
|
gzip_types text/plain text/css application/javascript application/json image/svg+xml;
|
|
|
|
|
}
|