This is a PWA map of Churchill HS. This project aims to provide a high quality, easy to use map that can be used on any school devices and most personal devices, online or offline.
Use npm run watch to launch a development server. It will automatically pick up changes to TypeScript files. Changes to map.json need to be compiled into map_compiled.json via indoor-map-lib, a Rust library. It should be installed with the compile_map_json feature so it includes the compile_map_json binary. After installation, it can be used via npm run compileMapJson.
We use Docker to simplify development environment setup and production builds. The only prerequisite for building this project is installing Docker, so do that before running the commands that follow.
A Docker image is basically a snapshot of a computer that was set up according to a Dockerfile. When that file
changes, the image should be rebuilt, but if it hasn't changed, you (usually) won't need to rebuild the image. You will
have to rebuild if dependencies are added, removed, or updated, or if the indoor_map_lib Rust tool is updated.
Run docker build -t churchill-map . to build the image. The first build is slow; subsequent builds will use a cache
and be much faster.
There is a build step that "compiles" map.json and the various SVG floor files into map_compiled.json. The tool that
does this is part of the indoor_map_lib Rust library. It used to be written in TypeScript, but was too slow. This tool
should be invoked once after building the Docker image with
docker run -v $PWD:/usr/src/map churchill-map npm run compileMapJson
(docker run -v $CD:/usr/src/map churchill-map npm run compileMapJson on Windows) and after changes are made to
map.json or a floor SVG file.
Run docker run -p 10001:10001 -it -v $PWD:/usr/src/map churchill-map npm run watch
(docker run -p 10001:10001 -it -v $CD:/usr/src/map churchill-map npm run watch on Windows) to launch the development
server in a Docker container.
To stop a running container, you may need to run docker ps to find the hex string ID of the running container, then
run docker stop <hex string ID> to force it to exit.
If you need to get a terminal inside the container for debugging purposes, run
docker run -p 10001:10001 -it -v $PWD:/usr/src/map churchill-map bash
Run docker run -v $PWD:/usr/src/map -e "NODE_ENV=production" churchill-map npm run build to generate a
production build.
When you need to run other commands within the Docker container, there are two general methods of doing so.
- Open a terminal with
docker run -p 10001:10001 -it -v $PWD:/usr/src/map churchill-map bash, then run commands - Put a command at the end of
docker run, ie.docker run -p 10001:10001 -it -v $PWD:/usr/src/map churchill-map <your command here>
On Windows, replace $PWD with $CD.