Skip to content

ADR 1: Workspace Structure

Status

Proposed

Context

What is the issue that we're seeing that is motivating this decision or change?

We have run into a problem where we have multiple sets of code for your job and getting them all to work together is challenging. While we can use private git repos (like with the ADR code) or editable configuration referencing each other, this just wasn't working well. So much of the code has the same build system and dependencies that creating a uv workspace started to make more sense.

Decision

What is the change that we're actually proposing or doing?

This is how I intend to structure the workspace and individual packages.

└── nj_legislature/
    ├── packages/             # each: pyproject.toml, src/, scripts/, src/package/cli/, tests/
    │   ├── njleg-api/
    │   ├── bills/
    │   ├── budget/
    │   ├── resolutions/
    │   ├── models/
    │   └── geography/
    ├── src/
    │   └── nj_legislature/   # shared code + primary CLI
    │       └── cli/
    ├── tests/
    ├── docs/
    ├── notebooks/            # notebooks for exploring/using the code in workspace as needed
    ├── scripts/              # self-contained scripts across workspace
    └── justfile

Consequences

What becomes easier or more difficult to do because of this change?

Difficult We need to also make decisions on how to do the following:

  • branches
  • scope of conventional commit specification
  • releases of each individual package

All of these technically become more difficult, but once I determine a system I think the small amount of overhead will disappear.

Easier And, with all the dependency, logging, configuration etc. etc. removed, I'm hoping it will be easier to add new things to the code that I use for all of this.