Landing page for Marco Polo Research Lab.
The home page features an animated hero section, an about overview and a gallery of our public apps.
This repository hosts the static website built with HTML, CSS and JavaScript. Three.js is used to draw and animate the lab's logo and project icons.
You can open index.html directly in your browser or serve the site through GitHub Pages.
index.html– main page with hero section, about information and a gallery of appsscript.js– initializes Three.js and animates the SVG assetsassets/– fonts and SVG illustrations
Run the static site behind the gHTTP server via Docker Compose:
-
Ensure Docker (with the Compose plugin) is installed locally.
-
Update
.env.ghttpif you need to change the bind address, exposed port, or container serve path. -
Start the stack from the repo root:
docker compose --env-file .env.ghttp up
The site is available at
http://localhost:8080by default (matchingHOST_HTTP_PORT). -
Press
Ctrl+Cor rundocker compose --env-file .env.ghttp downto stop the server.
The Compose stack mounts the repository into the container (ghcr.io/tyemirov/ghttp:latest) read-only, so changes to local files are reflected immediately without rebuilding the image.
Install JavaScript tooling once per clone:
npm installThe Makefile exposes the required workflows:
make lint– runs ESLint onscript.jsplus Playwright specs and Stylelint onstyles.css.make test– launches a static server viahttp-serverand executes the Playwright scenarios intests/.make ci– runs lint + tests (the same command GitHub Actions will invoke).
Playwright downloads Chromium automatically during npm install; the tests load index.html through the local static server to exercise the real hero/video behavior.
Each entry in the project gallery consists of an SVG logo, a <canvas> element and a call to initProjectAnimation() in script.js. To add a new app:
- create a new SVG logo in the
assets/folder - add a project card in
index.htmlfollowing existing examples - reference the SVG from
script.js
Vectorizing images or text to SVG can be done using the tools available in the svg_tools repository.
This project is licensed under the MIT License - see the LICENSE file for details.