Thinks to self: OK, this “full-stack” project is going to be fairly complex. I need:
- a database. I don’t need it yet, I’ll defer that.
- a thing that runs on the server, listens for HTTP requests from a browser, builds responses, and sends them to the browser.
- a thing that runs on the browser, built out of bits assembled by the server thing, that the user can interact with.
What I actually got was:
- a thing that runs on the server.
- a thing that defines the environment for the server.
- a thing that defines the environment on development machines so that you can run server-development tasks.
- a thing that turns code that can’t run in a browser into code that can run in a browser.
- a thing that turns code that can run in a browser into code that does run in real browsers.
- a headless browser that lets me test browser code.
- BTW, it doesn’t work with that server environment.
- a thing that shows how Linux binaries are loaded, to work out how to fix the environment.
- also BTW, it doesn’t run headless without setting some environment variable
- a thing that is used for cross-platform native desktop apps, that I can configure to work headless.
- a thing that builds the bits assembled by the server thing so that the test thing can see the code being tested.
And somehow, people argue that this is about reducing development costs.