aman 14bd49de43
Some checks failed
Static App CI / sanity-checks (push) Has been cancelled
Update Readme
2026-07-08 21:01:31 +00:00
2026-07-08 21:01:31 +00:00

Conway's Game of Life

A simple implementation of Conway's Game of Life, built with vanilla JS and a canvas element.

Features

  • Play/pause, step one generation, clear, randomize
  • Draw or erase cells by clicking and dragging
  • Speed and zoom sliders
  • Preset patterns: block, blinker, toad, beacon, glider, LWSS, pulsar, Gosper glider gun
  • Fixed edges or toroidal wrapping
  • Grid toggle, generation counter, live-cell counter
  • Import/export board as JSON or compact text
  • Dark/light theme
  • Keyboard shortcuts

Running locally

No build step, just static files.

git clone https://gitea.nalakath.org/aman/conways-game-of-life.git
cd conways-game-of-life
python3 -m http.server 8080

Open http://localhost:8080.

Deploying (WIP)

Nginx / Caddy, serving the repo directly

server {
    listen 80;
    server_name life.example.com;
    root /srv/www/conway_gameoflife;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }
}
life.example.com {
    root * /srv/www/conway_gameoflife
    file_server
    try_files {path} /index.html
}

Gitea Actions, copying files to a server path or object storage. There's a basic ci.yml in .gitea/workflows/ that checks required files exist and that the JS is syntactically valid. Extend it for your own deploy target.

All paths are relative (./style.css, ./js/app.js), so it works at the domain root or under a subpath like /apps/life/. Keep index.html, style.css, and js/ together.

Ideas for later

  • Infinite canvas with panning
  • Better touch controls for mobile
  • Rotate/mirror patterns before stamping
Description
Conways game of life visualized
Readme 41 KiB
Languages
JavaScript 70.4%
HTML 16.9%
CSS 12.7%