# NOSE:pluto ## Installation 1. Make a fresh RPi image with a "nose" user. 2. Clone this repo 3. From the root of this repo, run: bun remote:install` 4. When it's done (it'll reboot) visit: http://nose-pluto.local And to make sure DNS is working: http://ping.nose-pluto.local/ 5. Have fun! ## Local Dev Running the server will create `~/nose` for you to play with. bun install bun dev open localhost:3000 ## Production Dev Make sure you bundle the JS: bun run bundle If you want to test (or run) production with DNS features, use `NO_DNS`: env NO_DNS=1 NODE_ENV=production bun start You can also use the package commands: # run without DNS bun prod-nodns # run normally bun prod ## Commands Commands can return one of these types: - `string` - `{ error: string }` - `{ html: string }` - `{ text: string }` They can also `throw` to display an error. Additionally, you can return JS that gets immediately run in the browser using `script:`: - `{ html: string, script: string }` - `{ text: string, script: string }` - `{ script: string }` ## Fonts Use this to examine what's inside the C64 .woff2 font file in public/vendor: https://wakamaifondue.com/ ## Pluto Goals: Phase 1 - [x] Hosts valtown-style Bun apps (for your home network) - [x] Provides a NOSE terminal/shell GUI - [x] Runs one-shot TypeScript commands (via NOSE terminal) - [x] Has a 960x540 (16:9) virtual screen size that scales to the actual size of the display - [x] Runs on a Raspberry Pi 5 ## Pluto Goals: Phase 2 - [ ] `nose` CLI - [ ] game/bin/www cartridges - [x] public tunnel for your NOSE webapps - [x] public tunnel lives through reboots - [ ] tunnel to the terminal - [x] web browser - [x] remember your "mode" - [x] status bar on terminal UX - [x] "project"-based rehaul - [x] self updating NOSE server - [x] `pub/` static hosting in webapps - [x] upload files to projects - [-] pico8-style games - [x] init/update/draw - [x] simple drawing api - [x] gamepad support - [ ] sounds - [ ] maps - [ ] etc...?