## TODO
### 2020-12-10
- [ ] typescript support
- [x] install tsconfig.json
- [x] node -r tsnode/register
- [x] add to run scripts
- [-] build script
- [ ] make sure it brings boltzmann.js in
- options
1. leave boltzmann as JS, generate TS for everything else <-- went this route
1. write a declaration file if they'll let us
2. somehow make it work without a declaration file
2. rewrite boltzmann in TS, compile to JS on scaffolding for non-TS targets
CJ and Chris' type goals:
- autocomplete in editor is gold
- typechecking is good
- but we don't like transpiling server services
- debugging becomes harder -- what's checked into your repo is not what's running
- language version becomes something you have to care about (compile target)
- bitrot: typescript may be a fad
- explodes the state space
- as javascript experts, the juice is not worth the squeeze, so to speak
- rust has better type inference
- it's not an "infection" of a base language
- perf/reliability guarantees
- we were asked to add typescript support (scaffolding a typescript project)
### 2020-12-04
- [x] documentation version picker
- ideally fully static:
- [x] download all versions of the docs
- [x] find all version selectors
- [x] update the selector with the new set of versions
- [x] create a "latest" tag
- [x] DONE
### 2020-06-05
- [x] investigate static site generators
- remark?
- [ ] finish off the docs
- [ ] add more examples
- [ ] use github pages
- [ ] cut docs into some kind of IA
- [ ] lint the docs somehow
- [ ] releasing
- [ ] cut a release
- [ ] release notes
- [ ] release a npx tool
### 2020-06-03
- [x] write a github CI action for releases
- [x] create artifacts
- [ ] cut a release
- [ ] release a npx tool
- [ ] finish off the docs
- [ ] add more examples
- [ ] use github pages
- [ ] cut docs into some kind of IA
- [ ] add npm run scripts
- [x] start, if it doesn't exist
- [x] test, if it doesn't exist
- [x] boltzmann:upgrade, to upgrade the thing
- [x] call decorators middleware
- [x] maybe make "jwt middleware" a flag
- [x] pick a better linter and install it by default
### 2020-05-28
- [ ] improve tool output
- answer the following: what does the user care about?
- what changed. why it changed.
- [x] npm installs (and uninstalls HA HA HA)
- [x] make ping and status controlled by options
- [x] bake templates into CLI binary
- [ ] github releases of the tool
- [ ] release npx package (boltzmann and boltzmann-cli)
### EOD 2020-05-27
CEEJ expresses intent to push docs changes directly to master.
We'll regroup to add information architecture.
Code changes will be PR'd in.
- [ ] CHRIS: ~Add two subcommands: `init` and `update`.~ **Edit**: We ended up not doing this
- [x] CEEJ: detect git state of destination dir, respecting force flag
- [x] CHRIS: load existing package.json
- [x] implement turning a thing off
- [x] attach "skip if present" data to Nodes (& skip creating them if they're present)
- [x] inspect the flags and map them to npm actions
- [x] run npm install in a subprocess
- [x] render our actual templates, for real
- [x] run the tests
- [x] write a github CI action for this repo
- [ ] write a github CI action for releases
- [ ] finish off the docs
- [ ] add more examples
- [ ] maybe make "jwt middleware" a flag
- [ ] pick a better linter and install it by default
### BOD 2020-05-27
- write the command-line tool lol.
- write examples
- Hide ajv by presenting a better facade for it.
Facts to make true:
- This is a rust tool
- it operates on `.`
- it takes its options as single-word arguments, with `--` in front of them optional
- mentioning a feature turns it on; `=off` removes the feature
- it generates a directory with some files in it
- it makes a package.json if none exists (npm -init -y)
- it installs its deps using bash to run npm
- it stores its options in package.json in the field `boltzmann`
- if you rerun it without options, it'll respect the ones in the package.json if found; cli options override the ones in package.json
`ludwig redis hc pg=off` scaffolds with redis and honeycomb, and turns off postgres.