A collaborative trip planner, and the demo application for Hologram - an Elixir framework that compiles your application to JavaScript and runs it in the browser.
Plan a trip with other people: stops with a day and a time, pins and a route on a map, remarks on a stop, freehand ink, and who else is looking at it right now - their pointer on the map, and a mark on the stop and the field they are editing. Everything but signing in works with the network off and syncs when it comes back.

It runs inside a Phoenix endpoint, and every page, component and layout in it is Hologram's.
Offgrid tracks Hologram's unreleased development: mix.exs pins the dependency to a commit
rather than a Hex version.
Hologram's local-first data layer, which keeps the browser's database in sync with the server, is still being worked on, so expect small changes to how the app reads and writes data. Not everything here is how a Hologram app will look once that work lands, either. Presence (who is here, their pointers and what they are editing) is built by hand from realtime broadcasts, and the forms keep each field in page state themselves - both will get abstractions of their own in Hologram soon.
mix setup installspostgres user whose password is postgres.tool-versions pins the exact Elixir, Erlang and Node.js versions CI uses.
git clone https://github.com/bartblast/hologram_offgrid.git
cd hologram_offgrid
mix setup
createdb -U postgres offgrid_dev
mix seed
The seeds add the three maps a trip can be drawn on, four accounts, and three trips to look at - one of them with stops, ink and a remark on it. Running them again is safe: anything already there is left alone, including a trip you have since changed. To start over:
dropdb -U postgres offgrid_dev && createdb -U postgres offgrid_dev && mix seed
mix holo
Then open localhost:4000 and sign in as bart@offgrid.test with the
password japan-2026. mix holo is mix phx.server with Hologram switched on - in dev and
test it stays off unless HOLOGRAM_START=1 is set, which mix holo and mix seed both do.
The other three accounts - emilia@, indiana@ and lara@offgrid.test, same password - are
on the Japan trip as well. Sign in as one of them in a second browser to see each other's
pointers, edits and ink live.
mix test # everything that does not need a browser
mix test --only feature # feature tests, in a real browser, plus the tests that need the database
Feature tests drive Chrome through Wallaby, so they need Chrome and a matching ChromeDriver on
your PATH. They create and reset their own offgrid_test database.
mix check # compiler, formatters, Credo, Dialyzer, Sobelow, audits, ESLint, migrations and `mix test`
mix f # formats the Elixir, CSS, JavaScript, JSON and YAML
With lefthook installed, lefthook install adds a
pre-commit hook that checks the formatting.
Apache License 2.0 - see LICENSE.
163 commits
Elixir
88.5%
CSS
11.2%
A collaborative trip planner, and the demo application for Hologram - an Elixir framework that compiles your application to JavaScript and runs it in the browser.
Plan a trip with other people: stops with a day and a time, pins and a route on a map, remarks on a stop, freehand ink, and who else is looking at it right now - their pointer on the map, and a mark on the stop and the field they are editing. Everything but signing in works with the network off and syncs when it comes back.

It runs inside a Phoenix endpoint, and every page, component and layout in it is Hologram's.
Offgrid tracks Hologram's unreleased development: mix.exs pins the dependency to a commit
rather than a Hex version.
Hologram's local-first data layer, which keeps the browser's database in sync with the server, is still being worked on, so expect small changes to how the app reads and writes data. Not everything here is how a Hologram app will look once that work lands, either. Presence (who is here, their pointers and what they are editing) is built by hand from realtime broadcasts, and the forms keep each field in page state themselves - both will get abstractions of their own in Hologram soon.
mix setup installspostgres user whose password is postgres.tool-versions pins the exact Elixir, Erlang and Node.js versions CI uses.
git clone https://github.com/bartblast/hologram_offgrid.git
cd hologram_offgrid
mix setup
createdb -U postgres offgrid_dev
mix seed
The seeds add the three maps a trip can be drawn on, four accounts, and three trips to look at - one of them with stops, ink and a remark on it. Running them again is safe: anything already there is left alone, including a trip you have since changed. To start over:
dropdb -U postgres offgrid_dev && createdb -U postgres offgrid_dev && mix seed
mix holo
Then open localhost:4000 and sign in as bart@offgrid.test with the
password japan-2026. mix holo is mix phx.server with Hologram switched on - in dev and
test it stays off unless HOLOGRAM_START=1 is set, which mix holo and mix seed both do.
The other three accounts - emilia@, indiana@ and lara@offgrid.test, same password - are
on the Japan trip as well. Sign in as one of them in a second browser to see each other's
pointers, edits and ink live.
mix test # everything that does not need a browser
mix test --only feature # feature tests, in a real browser, plus the tests that need the database
Feature tests drive Chrome through Wallaby, so they need Chrome and a matching ChromeDriver on
your PATH. They create and reset their own offgrid_test database.
mix check # compiler, formatters, Credo, Dialyzer, Sobelow, audits, ESLint, migrations and `mix test`
mix f # formats the Elixir, CSS, JavaScript, JSON and YAML
With lefthook installed, lefthook install adds a
pre-commit hook that checks the formatting.
Apache License 2.0 - see LICENSE.
163 commits
Elixir
88.5%
CSS
11.2%