@app.json/core v0.0.10
@app.json/cli
Capture what your app needs to be deployed and run.
Status
This is early, POC-stage code. Lot's more to be still done! But please, get in touch if this looks promising, I'd love to hear about your use-case.
What is app.json?
app.json is a file for storing:
- The environment variables your app needs
- The components (eg. microservices) that make up your app and the environment variables they need
- External dependencies (WIP)
Installation
npm install --save-dev @app.json/cliUsage
ajx init: create an empty app.json file
ajx dotenv: generate a .env file based on an app.json file
ajx generate: generate an app.json file based on an CloudFormation template.yaml file
ajx ts: generate an config.ts file based on an app.json file
config.ts
One aim of this project is to make sure we're only using environment variables defined
in our app.json file. For CloudFormation projects, we also need to make sure
these are defined appropriately in template.yaml.
config.ts is a file we generate that allows us to access the environment variables
we've defined, as well as accessing all the environment variables for a component,
in a type-safe way.
Hence, our proposed workflow is:
- Add environment variables to
template.yaml - Generate
app.jsonfromtemplate.yaml - Generate
config.tsfromapp.json - Import the environment variables for a specific component from
config.ts
Future direction
This is a POC which is very tightly bound up in my own immediate needs. The aim is to:
- Add a plugin architecture to the CLI
- Move all the CloudFormation stuff to a plugin
Inspiration
This is inspired by Heroku's app.json file, but abstracted away from the Heroku
specifics. This app.json is intended as a general-purpose file for capturing
what an app needs to be deployed and run.