0010: MIDOT property value editing
Signed-in Michigan users create, edit, save, delete, and export their property value projects
- ID: PRD-0010
- Status: Accepted
- Decision maker: Trevor Gerhardt
- Scope: MIDOT,
@concourse/contracts,@concourse/services,@concourse/rsdb - Product owner: Trevor Gerhardt
- Design owner: Trevor Gerhardt
- Engineering owner: Conveyal
- Last reviewed: 2026-10-15
- Related issues or projects: Not applicable. This work follows a direct planning request.
- Related designs: The legacy MMEBA Property Value Tool screen.
- Related ADRs: ADR 0014, ADR 0016
- Related user documentation: MIDOT guide
Summary
The property value tool shows the signed-in user's own property value projects. The user can change the notes, the property values before and after the project, and the property tax rate. Save stores the inputs and shows the new results. The user can save the project, create a project, delete a project, and export a project as a CSV file. The tool is compact on a desktop and works on a phone without horizontal scrolling.
User problem and evidence
The current tool is read-only. It lists the projects of all users, and a user cannot change a value. The legacy tool lets each user create, edit, save, delete, and export their own projects. Users who move from the legacy tool lose these actions.
The current tool also uses a tall layout. One project fills more than one screen on a desktop. The legacy screen shows the inputs and the results of a project together.
Goals and success measures
| Goal | Measure | Target or review method |
|---|---|---|
| Keep the legacy actions | Each legacy action has a working equivalent | Browser tests for each story below |
| Show a project on one screen | Inputs, results, and actions are visible at 1280 by 800 pixels | Browser test and design review |
| Work on a phone | No horizontal page scrolling at 320 and 375 pixels | The responsive layout check |
Non-goals
- Shared projects. A user sees and changes only their own projects.
- Renaming a project. The legacy screen has no rename action.
- An Excel export. The export is one CSV file.
- Changes to the calculation formulas. The tool uses the formulas of the legacy procedure.
Users and use cases
Use case: Estimate the effect of a trail project
- Actor: A signed-in Michigan TREDIS user.
- Need: Enter the property values near a trail before and after the project, and the tax rate.
- Goal: See the change in property value and in tax payments for each distance group.
Requirements
PRD-0010-US-01: Show only my projects
- Story status: Current
- Replaces: N/A
- Replaced by: N/A
- User need: As a property value tool user, I want to see only my own projects, so that I do not change the work of another user.
- Requirement: The project list contains only the projects of the signed-in TREDIS account. The tool opens the project that the user selected last.
- Done when:
- A user does not see a project that another account owns.
- After a user selects a project and reloads the page, the same project is selected.
- A request for a project of another account returns "not found".
PRD-0010-US-02: Edit the project inputs
- Story status: Current
- Replaces: N/A
- Replaced by: N/A
- User need: As a property value tool user, I want to change the notes, the property values, and the tax rate, so that I can estimate a project.
- Requirement: The notes, the six property values, and the property tax rate are editable fields. The server calculates the results when the user saves. Until then, the tool shows the saved results and shows that the project has unsaved changes.
- Done when:
- Each input field accepts a new value from the keyboard.
- A money value typed as
1.500is stored as1500000and shows as$1.500after a reload. - A field that does not contain a number shows an error, and Save is not available.
- The page shows "Unsaved changes" until the user saves.
PRD-0010-US-03: Save a project
- Story status: Current
- Replaces: N/A
- Replaced by: N/A
- User need: As a property value tool user, I want to save my changes, so that I can return to them.
- Requirement: Save stores the notes and the inputs. The server calculates the results with the legacy formulas and stores them. Before the user leaves a project with unsaved changes, the tool asks the user to confirm.
- Done when:
- After Save, the results and totals match the legacy formulas for the saved inputs.
- After Save and a page reload, the fields and the results show the saved values.
- When the user selects another project with unsaved changes, the tool asks for confirmation.
- When the save fails, the tool shows an error and keeps the changes in the fields.
PRD-0010-US-04: Create a project
- Story status: Current
- Replaces: N/A
- Replaced by: N/A
- User need: As a property value tool user, I want to create a project, so that I can estimate a new trail.
- Requirement: Create new project asks for a name. The new project has empty inputs and becomes the selected project.
- Done when:
- A new project with a unique name appears in the list and is selected.
- A name that the user already uses shows an error, and no project is created.
- A blank name shows an error, and no project is created.
PRD-0010-US-05: Delete a project
- Story status: Current
- Replaces: N/A
- Replaced by: N/A
- User need: As a property value tool user, I want to delete a project, so that my list contains only useful projects.
- Requirement: Delete asks the user to confirm. After deletion, the project is not in the list, and no project is selected.
- Done when:
- Cancel in the confirmation keeps the project.
- Confirm removes the project from the list and from storage.
PRD-0010-US-06: Export a project
- Story status: Current
- Replaces: N/A
- Replaced by: N/A
- User need: As a property value tool user, I want to export a project, so that I can use the values in a report.
- Requirement: Export downloads one CSV file. The file contains the project name, the notes, the saved inputs, the saved results, and the totals. Export is not available while the project has unsaved changes.
- Done when:
- The file name contains the project name.
- The values in the file are the same as the saved values on the screen.
PRD-0010-US-07: Use the tool on any screen
- Story status: Current
- Replaces: N/A
- Replaced by: N/A
- User need: As a property value tool user, I want to use the tool on a desktop or a phone, so that I can work from any device.
- Requirement: On a desktop, the project fields, the inputs, the results, and the actions fit on one screen. On a narrow screen, each group of values becomes a stacked list. The page never scrolls horizontally.
- Done when:
- At 1280 by 800 pixels, the inputs, the results, and the Save action are visible without scrolling.
- At 320 and 375 pixels, the responsive layout check passes.
- Each field has a visible label at each width.
Implementation
property-value.tsin@concourse/api/midotserves the list, create, save, delete, and selection routes. Each route uses the TREDIS account ID of the session as the owner ID. The service calculates and stores the results when a project is saved.property-value-tool.tsxshows the project form, the saved results, and the actions. TanStack Form holds the field text, the field errors, and the unsaved state, as ADR 0016 records. The confirmation dialogs use the Michigan Digital Guidelines dialog component.property-value.tsconverts between stored whole dollars and the millions of dollars that the fields show, and builds the CSV export.RACKSPACE_ENVIRONMENT=qamakes RSDB openmi_property_value_qain Preview.- The MIDOT browser tests cover each story, including the layout at 1280 by 800, 375, and 320 pixels.
Experience and content
- Entry point: the Property value card on the active transportation tools page.
- Main flow: select a project, change the inputs, read the results, and save.
- Empty state: a user without projects sees "Create new project".
- Loading state: the tool shows a spinner while it loads the projects.
- Error states: an unavailable database, a failed save, a duplicate name, and an invalid number each show a message next to the action or the field.
- Terms: the tool keeps the legacy labels. The groups are "Adjacent / Abutting", "Within 0.25
miles", and "Within 0.50 miles". Each money label ends with "($M)". The tool shows and accepts
money in millions of dollars with three decimal places, and stores whole dollars. For example,
the user sees and types
1.500, and the database stores1500000. - Access: every action requires a MIDOT session. A user can change only their own projects.
- Accessibility: each field has a label, each error is announced, and the confirmation dialogs can be used with a keyboard.
Constraints and dependencies
- PRD 0008 owns sign-in. The TREDIS account ID is the owner ID of a property value project.
- Production writes go to
mi_property_value. Preview writes go tomi_property_value_qa, the QA copy in the same Rackspace instance.RACKSPACE_ENVIRONMENTselects the copy. Sign-in uses the Productiontredis_global_dynamicin both, because it has no QA copy. Local development and browser tests write to local MySQL. - The responsive layout standard applies.
User documentation
- Audience: Michigan TREDIS users of MIDOT.
- Tasks to explain: create, edit, save, delete, and export a property value project.
- Agreed terms: the legacy labels above.
- Examples or screenshots needed: The property value tool with one project.
- Published documentation: Not applicable until delivery.
Revision history
No revisions.