Astrolabe (%astrolabe) is a one-stop shop %docket app for exploring Urbit address space. Main features: ID Search, Sigil Search, Sky Chart, and Ship View (for viewing a given ship's details). Astrolabe integrates with %pals wherever possible, and contains documentation to explain the many quirks of Urbit address space to a new user.
There should be a place on Urbit to explore Urbit address space. It will help new Urbiters get their bearings, and be a useful tool for anyone who wants to explore. Having open-source tools for this in one place on Urbit is important. I like the name Astrolabe, because it's an old-timey guide to the heavenly bodies. Planisphere could also be cool.
You can read about the proposal here, and discuss in the dedicated group on Urbit: ~poster-hoster-midlev-mindyr/astrolabe
The desk currently has the minimum amount of files necessary to distribute an application and should be distributable immediately. Any further Hoon development should happen here.
Astrolabe is built primarily using Svelte, Typescript, and Tailwind CSS. Vite ensures that all code and assets are loaded appropriately, bundles the application for distribution and provides a functional dev environment.
To get started using Astrolabe first you need to run npm install inside the ui directory.
To develop you'll need a running ship to point to. If it's running somewhere other than http://localhost:8081, make a copy of .env in the ui directory and name it .env.local. This file will not be committed. Change VITE_SHIP_URL to the URL of the ship you would like to point to.
Once your URL is correctly configured, you can run npm run dev. This will proxy all requests to the ship except for those powering the interface, allowing you to see live data.
Regardless of what you run to develop, Vite will hot-reload code changes as you work so you don't have to constantly refresh.
- Spin up a comet or distribution ship.
- Mount an
%astrolabedesk. In Dojo:|merge %astrolabe our %baseto create a new desk.|mount %astrolabeto mount it.- Set
ASTROLABE_DESKin.env.localif the path to your desk is different.
- Create and upload
glob-http, if applicable (see below) - Bump the
versionindesk.docket-0. - Install the desk
- From the
uifolder:npm run install:desk - (first time only, on dev ship):
|install our %astrolabe - From the distribution ship's dojo:
:treaty|unpublish %astrolabe - From middleman or distribution ship's dojo:
|commit %astrolabe - (if using a comet as a middleman)
|public %astrolabe - (if using a comet as a middleman) from the actual distribution ship:
|install ~comet-name %astrolabeor|resume %astrolabe - (if using a comet as a middleman) from the actual distribution ship:
|pause %astrolabe
- From the
- Build UI and upload
glob-ames - Publish the desk from dojo:
:treaty|publish %astrolabe
Initial Setup:
- Put the line
glob-ames+[~dister-midlev-mindyr 0v0]indesk.docket-0if it's not there, where~dister-midlevi-mindyris the@pof the distribution ship.
Every Time:
4. Build the UI with npm run build in the ui directory which will bundle all the code and assets into the dist/ folder.
5. Upload the dist/ folder as a glob to your distribution ship. Example url: https://distribution.urbit-ship.com/docket/upload
Initial Setup:
- Spin up a globber ship (comet or fakezod) (or just reuse your dev ship for this).
- Mount an
%globberdesk. In Dojo:|merge %globber our %baseto create a new desk.|mount %globberto mount it.- Set
GLOBBER_DESKin.env.localif the path to your globber desk is different.
Every Time:
3. From the ui directory, run npm run release to build the ui, make the glob, and copy it to the globs folder. The command will also print out the glob hash/id.
4. Copy the string printed by the last step, and paste it into desk.docket-0.
5. Upload the glob in /globs/ to any publicly available HTTP endpoint that can serve files. This allows the glob to be distributed over HTTP.
6. Once you've uploaded the glob, paste the url into desk/desk.docket-0. Both the full URL and the hash should be updated to match the glob we just created, on the line that looks like this:
hoon glob-http+['https://bootstrap.urbit.org/glob-0v5.fdf99.nph65.qecq3.ncpjn.q13mb.glob' 0v5.fdf99.nph65.qecq3.ncpjn.q13mb]