Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
51238da
Clean up http client headers
cyrossignol Mar 10, 2026
faec03d
Clean up testing code in HTTP client
cyrossignol Mar 10, 2026
8b7bad7
Add TDEI branding and UI style updates
shweta2101 May 19, 2026
1dc20a4
Revamp navbar, add mobile side menu, and tweak styles
shweta2101 May 19, 2026
e6038c9
Refactor dashboard workspace UI and toolbar styles
shweta2101 May 19, 2026
4e25f25
Use dynamic workspace type icons
shweta2101 May 20, 2026
17d5aea
updated dark colour
shweta2101 May 20, 2026
6fb320b
Redesign homepage hero and update styles
shweta2101 May 20, 2026
45f974b
Refactor button/radio styles and minor UI tweaks
shweta2101 May 20, 2026
0bb788b
Improve accessibility and update styles
shweta2101 May 20, 2026
69e3d1b
Improve mobile menu accessibility and minor fixes
shweta2101 May 20, 2026
be821dc
Refactor button styles, focus logic, and dashboard text
shweta2101 May 20, 2026
b858e7d
added aria lable
shweta2101 May 20, 2026
aaa741d
Redesign sign-in and update layout
shweta2101 May 21, 2026
302ed32
Improve auth errors, aria-modal, and button class
shweta2101 May 21, 2026
ded4388
Merge branch 'master' into feature-task-3634-tdei-theme
shweta2101 May 21, 2026
1d5c584
Merge branch 'master' into feature-task-3634-tdei-theme
shweta2101 May 25, 2026
f7c259f
Add dialog role to side menu and clean CSS
shweta2101 May 25, 2026
a07bb2b
Move Google Fonts to @nuxtjs/google-fonts
shweta2101 May 25, 2026
20e7ba3
Fix input autofill, navbar element, and typings
shweta2101 May 25, 2026
3ec2e5f
Migrate styles to theme variables & Bootstrap
shweta2101 Jun 1, 2026
558b158
Adjust mobile breakpoint to <768px
shweta2101 Jun 1, 2026
34c4d4c
Feature task 3634 tdei theme (#54)
cyrossignol Jun 10, 2026
d534ed3
Bump shell-quote from 1.8.3 to 1.8.4
dependabot[bot] Jun 10, 2026
ddf47b2
Bump shell-quote from 1.8.3 to 1.8.4 (#56)
cyrossignol Jun 10, 2026
dfe2d57
Create tag.yml
susrisha Jun 11, 2026
9165bfa
Update tag.yml
susrisha Jun 11, 2026
eef9cc9
Tagging workflow included (#57)
susrisha Jun 11, 2026
3fd6d35
Bump nuxt from 4.4.6 to 4.4.8
dependabot[bot] Jun 16, 2026
87dcc97
Bump nuxt from 4.4.6 to 4.4.8 (#59)
cyrossignol Jun 16, 2026
ac98e16
Bump @opentelemetry/core and @sentry/nuxt
dependabot[bot] Jun 16, 2026
d3fbc99
Bump js-yaml from 4.1.1 to 4.2.0
dependabot[bot] Jun 16, 2026
c0952eb
Bump @opentelemetry/core and @sentry/nuxt (#60)
cyrossignol Jun 16, 2026
3375b98
Bump ws from 8.20.1 to 8.21.0
dependabot[bot] Jun 16, 2026
acfd91a
Bump ws from 8.20.1 to 8.21.0 (#61)
cyrossignol Jun 16, 2026
50acfe4
Bump js-yaml from 4.1.1 to 4.2.0 (#62)
cyrossignol Jun 16, 2026
0fd252a
Bump launch-editor from 2.13.2 to 2.14.1
dependabot[bot] Jun 16, 2026
1f86006
Bump launch-editor from 2.13.2 to 2.14.1 (#63)
cyrossignol Jun 16, 2026
1f5d931
First pass at tests
jeffmaki Jun 17, 2026
0a7aaf5
Merge branch 'master' into jeff-tests
jeffmaki Jun 17, 2026
0dbc854
New tests
jeffmaki Jun 24, 2026
cf04587
Linter fixes + CI integration of lint, typecheck and tests
jeffmaki Jun 24, 2026
8d30f2e
E2E test fixes and updates
jeffmaki Jun 24, 2026
6e4b2b2
New test + linter fixes
jeffmaki Jun 25, 2026
9fcd14e
Update pathways.ts
jeffmaki Jun 25, 2026
df03665
Typechecker fixes (any is left for now)
jeffmaki Jun 25, 2026
72d4735
Update ci.yml
jeffmaki Jun 25, 2026
8d269e0
Update ci.yml
jeffmaki Jun 25, 2026
5bfd83e
Linter
jeffmaki Jun 25, 2026
78d9309
Remove editor load fail test
jeffmaki Jun 26, 2026
0b494bb
Update README.md
jeffmaki Jun 26, 2026
c446fb0
Change image snapshots to aria tag diffs
jeffmaki Jun 26, 2026
d6f463c
Disable Sentry during CI tests
jeffmaki Jun 26, 2026
19af67d
Linter
jeffmaki Jun 26, 2026
d7efd20
Cleanup HTTP client headers and testing code (#55)
jeffmaki Jun 26, 2026
e3e48fc
Merge branch 'master' into jeff-tests
jeffmaki Jun 26, 2026
f2605d0
Update osm.ts
jeffmaki Jun 26, 2026
6335277
Update tdei.ts
jeffmaki Jun 26, 2026
d1dff1b
Update ci.yml
jeffmaki Jun 26, 2026
252b25d
Update ci.yml
jeffmaki Jun 26, 2026
2b29b6a
Update tag.yml
jeffmaki Jun 26, 2026
b072cc9
workflow testing
susrisha Jul 1, 2026
c7ec82f
Update deploy-to-azure.yml
susrisha Jul 1, 2026
388c807
Azure Static Webapp workflow testing (#71)
susrisha Jul 1, 2026
e89c2be
Update deploy-to-azure.yml
susrisha Jul 1, 2026
6917476
Update deploy-to-azure.yml
susrisha Jul 1, 2026
3b7131d
Update deploy-to-azure.yml (#73)
susrisha Jul 1, 2026
345b939
Unit and integration tests (#64)
jeffmaki Jul 7, 2026
4e08cee
Linter and type checking changes
jeffmaki Jul 8, 2026
799a451
Update package-lock.json
jeffmaki Jul 8, 2026
bf2c5ac
Regenerate package-lock.json on Linux to fix npm ci sync
jeffmaki Jul 8, 2026
01f410b
Align vue-router to ^5.1.0 (Nuxt 4 requirement)
jeffmaki Jul 8, 2026
9da1368
Restore space in review toolbar item label for accessibility
jeffmaki Jul 8, 2026
78f9d21
Update ci.sh
jeffmaki Jul 8, 2026
f62c7a9
Flakey test fixes
jeffmaki Jul 8, 2026
db7244a
Deploy->master (#76)
susrisha Jul 8, 2026
bb0e4bd
Add workspace projects UI, components & mocks
shweta2101 Jun 10, 2026
0c8b772
Extract project display logic to composable
shweta2101 Jun 10, 2026
e7c5e3b
Switch px to rem, add line-clamp, simplify options
shweta2101 Jun 10, 2026
9aae9f6
Replace status/project glyphs with SVG icons
shweta2101 Jun 11, 2026
ae9a013
Add project wizard UI and map preview
shweta2101 Jun 11, 2026
7f0b421
Improve project wizard, services, and UI behaviors
shweta2101 Jun 11, 2026
2f0b74c
Add AOI draw/upload UI and map component
shweta2101 Jun 12, 2026
9f1c4ff
Add draft AOI polygon support and Aoi composable
shweta2101 Jun 15, 2026
0e44a3a
Add task generation UI & preview grid
shweta2101 Jun 15, 2026
b226098
Add project settings UI, user assign & rich editor
shweta2101 Jun 15, 2026
1723692
Project wizard: add review & status dialog
shweta2101 Jun 16, 2026
aced231
Persist created project and add task generation
shweta2101 Jun 17, 2026
91245e8
Use tasking API and normalize project/task payloads
shweta2101 Jun 18, 2026
cd92af8
Add project-created notice; clear persisted draft
shweta2101 Jun 18, 2026
3056cda
Added comments, tasks page, change in generate& save tasks flow and o…
shweta2101 Jun 22, 2026
ff0fd78
Integrated lock task and other UI improvements
shweta2101 Jun 23, 2026
4ff30eb
Refine task setup and task list UX for large task sets
shweta2101 Jun 23, 2026
7ae8a66
Update README.md
susrisha Jun 14, 2026
0d9b5b1
Simple integration
susrisha Jun 22, 2026
4e4f10d
work in progress with more changes
susrisha Jun 22, 2026
531c51e
Update rapid.vue
susrisha Jun 23, 2026
632b405
Add task editor route and task submission flow on new tasking API
shweta2101 Jun 24, 2026
5c83dde
fixed editor path
shweta2101 Jun 24, 2026
1d2eb1e
fixed tasks status issues, added project roles addition, updation and…
shweta2101 Jun 25, 2026
c0fce27
enforce role-based project access and persist Rapid changesets
shweta2101 Jun 26, 2026
78a36bd
Fixed demo comments
shweta2101 Jun 26, 2026
7fd5736
Fixed task selection highlighting issue & other minor fixes
shweta2101 Jun 26, 2026
ee0fdd0
Update workspaces.ts
susrisha Jun 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"permissions": {
"allow": [
"Bash(npm ls *)",
"Bash(node -e \"const e=require\\('./node_modules/vue-router/package.json'\\).exports; console.log\\(JSON.stringify\\(Object.keys\\(e\\)\\)\\)\")",
"Bash(node -e \"console.log\\(require\\('./node_modules/vue-router/package.json'\\).version\\)\")",
"Bash(node -e \"console.log\\(require\\('./node_modules/@sentry/nuxt/package.json'\\).version\\)\")"
]
}
}
57 changes: 46 additions & 11 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,56 @@ on:
pull_request:
branches: [ master ]

# Cancel any in-progress run for the same branch/PR when a newer commit lands.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
run-lint:
ci:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Checkout code
uses: actions/checkout@v5

- name: Set up Node.js
uses: actions/setup-node@v5
with:
node-version: '24'
cache: 'npm'

# Runs `nuxt prepare` via the postinstall hook, which generates the .nuxt
# types + eslint typegen that both `lint` and `typecheck` rely on.
- name: Install dependencies
run: npm ci

# The quality steps below use `if: ${{ !cancelled() }}` so every check runs
# and reports its own result even when an earlier one fails.
- name: Lint
if: ${{ !cancelled() }}
run: npm run lint

- name: Type check
if: ${{ !cancelled() }}
run: npm run typecheck

- name: Unit tests
if: ${{ !cancelled() }}
run: npm test

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '24'
- name: Install Playwright browser
if: ${{ !cancelled() }}
run: npx playwright install --with-deps chromium

- name: Install dependencies
run: npm ci
- name: E2E tests
if: ${{ !cancelled() }}
run: npm run test:e2e

- name: Run lint script
run: npm run lint
- name: Upload Playwright report
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v5
with:
name: playwright-report
path: playwright-report/
retention-days: 7
66 changes: 66 additions & 0 deletions .github/workflows/deploy-to-azure.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: Deploy to Azure Static Web Apps
on:
workflow_dispatch:
inputs:
environment:
description: 'Environment to deploy to'
required: true
default: 'development'
type: choice
options:
- production
- staging
- development
- testing
jobs:

set-github-environment:
runs-on: ubuntu-latest
outputs:
environment: ${{ steps.set-env.outputs.target_env }}
steps:
- name: Set Environment
id: set-env
run: |
case "${{ inputs.environment }}" in
testing) echo "target_env=Testing" >> $GITHUB_OUTPUT ;;
development) echo "target_env=dev" >> $GITHUB_OUTPUT ;;
staging) echo "target_env=stage" >> $GITHUB_OUTPUT ;;
production) echo "target_env=prod" >> $GITHUB_OUTPUT ;;
esac

build-and-deploy:
needs: set-github-environment
runs-on: ubuntu-latest
environment: ${{ needs.set-github-environment.outputs.environment }}
steps:
- name: Checkout Code
uses: actions/checkout@v3
with:
ref: ${{ github.event.inputs.environment }}
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '24'
- name: Install Dependencies
run: npm install
- name: Ingest Environment Variables
run: |
touch .env
echo '${{ vars.ENV_CONFIG }}' | jq -r 'to_entries | map("\(.key)=\(.value)") | .[]' > .env
echo CI=false >> .env
- name: Build Project
run: npm run generate
- name: Copy WebApp Config
run: cp staticwebapp.config.json .output/public/staticwebapp.config.json

- name: Deploy to Azure Static Web Apps
id: deploy
uses: Azure/static-web-apps-deploy@v1
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_DEPLOYMENT_TOKEN }}
action: "upload"
app_location: ".output/public" # App source code path
api_location: "" # Api source code path - optional
output_location: "" # Built app content directory - optional
skip_app_build: true
2 changes: 1 addition & 1 deletion .github/workflows/tag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
contents: write
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
fetch-depth: 1
- name: Get the current branch name
Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,9 @@ logs
.env
.env.*
!.env.example

# Playwright
/test-results/
/playwright-report/
/blob-report/
/playwright/.cache/
1 change: 1 addition & 0 deletions .nuxtrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
setups.@nuxt/test-utils="4.0.3"
197 changes: 197 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
# CLAUDE.md

Guidance for working in this repo. Focused on the test infrastructure and
conventions established for it; see `README.md` for app setup.

## Project

- **TDEI Workspaces frontend** — Nuxt 4 / Vue 3 **SPA** (`ssr: false`),
bootstrap-vue-next UI, maplibre-gl + Leaflet maps.
- API access is via class-based HTTP clients in `services/` (all extend
`BaseHttpClient` in [services/http.ts](services/http.ts), which wraps `fetch`).
Clients are constructed in [services/index.ts](services/index.ts) from
`import.meta.env.VITE_*` URLs.
- Types in `types/`; the workspace API shapes mirror the backend OpenAPI spec
(integer `id`, `title` not `name`, uuid `tdeiProjectGroupId`, etc.).

## Testing

Stack: **Vitest** (unit) + **Playwright** (e2e) + **MSW** (shared API stubs) +
an **OpenAPI contract validator**. Config: [vitest.config.ts](vitest.config.ts),
[playwright.config.ts](playwright.config.ts).

### Run

```bash
./run-tests.sh # eslint (test/ only) + unit + e2e
./run-tests.sh unit # vitest only
./run-tests.sh e2e # playwright only
./run-tests.sh --update-snapshots # extra args pass through to playwright
```

The e2e suite is written **to the `@test` outline comments (the spec), not the
current code**, so a new e2e failure flags a real app/spec divergence. It
currently passes aside from intentionally-skipped (`test.fixme`) flows. Unit is
always green.

### Layout

```
test/
setup.ts # MSW server lifecycle for vitest
mocks/
fixtures.ts # canned API data — SINGLE SOURCE OF TRUTH (spec-shaped)
handlers.ts # MSW http handlers (vitest)
server.ts # setupServer(...handlers)
contract/openapi.json # vendored backend OpenAPI spec
unit/ # vitest: services/ + util/ (default env happy-dom)
e2e/
fixtures.ts # Playwright test fixture + seed helpers
contract.ts # recordContract(page) -> OpenAPI validator
*.spec.ts # one per page; *.aria.yml + *.png snapshots alongside
```

### Conventions

- **Unit tests** default to the **happy-dom** environment (several `services/`
modules construct `DOMParser`/`XMLSerializer` at import time; bare node lacks
them). A test can opt into the full Nuxt env with `// @vitest-environment nuxt`.
- **e2e auth/stubs:** import from `./fixtures` — `test`, `expect`,
`seedAuthenticatedSession(page)` (call FIRST for any authed page; user is
"Tester"/`USER_ID`), `seedProjectGroupSelection(page, {id, name})`. Import
canned data + ids (`aWorkspace`, `myWorkspaces`, `projectGroups`,
`PROJECT_GROUP_ID`, `USER_ID`, `TEST_API_BASE`) from `../mocks/fixtures`.
- **API stubbing:** in e2e ALL API base URLs point at host `http://api.test/`
(set in `playwright.config.ts` `webServer.env`). Stub **every** endpoint a page
hits or the page 500s on the failed fetch. New-API response bodies **must be
spec-conformant** (the contract validator checks them).
- **Contract testing:** for a page's "validate API calls match the Swagger spec"
outline, `const c = recordContract(page)` before navigating, drive the page,
then `expect(c.violations()).toEqual([])`. Only `api.test` new-API calls are
checked (TDEI/OSM hosts are out of spec scope).
- **Snapshots:** use **ARIA** snapshots (`toMatchAriaSnapshot()`), not pixel
screenshots — they're text-based and cross-platform stable. Don't snapshot
volatile content (blob URLs, transient toasts). Regenerate with
`--update-snapshots`.
- **Lint:** the stylistic config requires **semicolons** and **no trailing
commas** (set in `nuxt.config.ts` `eslint.config.stylistic`). New code must
comply. App source has a large pre-existing backlog of other lint errors, so
`run-tests.sh` lints `test/` only.

### The `@test` comment workflow

Pages carry `@test e2e:` / `@test unit:` outline comments at the top describing
intended behavior. Tests are generated **to the comment (the spec), not the
current code** — if the code diverges, the test is left RED to document the bug.
Don't soften assertions to make buggy code pass.

## Gotchas (learned the hard way)

- **OSM URLs include `/api/0.6/`.** The OSM client base is
`http://api.test/osm/api/0.6/`. Route globs must be e.g.
`**/osm/api/0.6/changesets.json**`. Also: glob `*` matches a single path
segment, so `**/osm/changeset/*/upload` will NOT match
`osm/api/0.6/changeset/777/upload`.
- **`DatasetTypeRadio` is a Bootstrap `.btn-check`** (hidden `<input>` + visible
`<label>`). `.check()` times out — click the label text instead
(`getByText('GTFS Pathways').click()`).
- **`app-icon` renders material-icon ligature text** (e.g. "menu_book") into
element text/accessible names. Match headings/buttons by regex name or stable
class/href, not exact accessible name.
- **Playwright `getByRole({ name })` is substring/normalized** unless
`exact: true`. "Delete this workspace" also matches "...want to delete this
workspace" — anchor or use `exact: true`.
- **`selectOption` needs a string/value/index**, not a regex object.
- **maplibre-gl needs WebGL**, unreliable headless. Pages with a map: stub the
bbox/data endpoints empty so the map shows its empty state instead of
initializing; assert DOM, not the GL canvas. The dashboard auto-selects a
workspace when a project group has workspaces (→ mounts the map), so the
empty-state tests use empty `workspaces/mine`.
- **Nuxt dev server compiles routes lazily**, so cold parallel hits can be slow;
`playwright.config.ts` sets a 10s `expect` timeout to absorb it. Run e2e
against a production build if you want pre-compiled routes.
- **Playwright route precedence is most-recently-registered-first** — register
per-test override routes AFTER (or in a way that wins over) shared stub helpers.

## Permission Structure

Project Group Admin ("POC")
* Superuser for the whole project group
* Implied by "poc" role in TDEI

Lead/Owner/Workspace Admin
* Admin-level access for a workspace
* Configures workspace settings and quest definitions
* Assigns users to workspace teams
* Ability to merge changes from other workspace
* Exports data to TDEI (with appropriate TDEI core roles)
* Granted by Workspaces setting.

Contributor/Data Generator
* Modifies workspace data--all modifications need validation
* Implied by membership in TDEI project group

Validator
* Modifies workspace data and approves changes from contributors
* Granted by Workspaces setting.

Viewer/Member/Everyone Else
* Read-only access to workspace data
* With express TDEI sign-up, the need for this access level diminishes greatly
* Granted by Workspaces setting.

## What Each Role Can Do

Below is the *intended* capability matrix annotated with **what the frontend
actually enforces** (validated against the code on 2026-06-25). The frontend
recognizes only three workspace roles — `lead | validator | contributor`
([types/workspaces.ts](types/workspaces.ts)) — exposed via
[composables/useWorkspaceRole.ts](composables/useWorkspaceRole.ts), which
provides `isLead` and `isValidator` only (and **`isValidator` is true for leads
too**). There is no `isContributor`/`isPoc` helper at the workspace-role layer.

Project Lead
* Edit Metadata — ✅ enforced (`isLead`, [General.vue](components/settings/panel/General.vue))
* Edit Longform Quests — ⚠️ enforced but also requires the workspace be
published for external apps: `appControlsDisabled = !isLead || !externalAppAccess`
([Apps.vue](components/settings/panel/Apps.vue))
* Toggle App-Enabled Flag — ✅ enforced (`isLead`, [Apps.vue](components/settings/panel/Apps.vue))
* Delete Workspace — ✅ enforced (`isLead`, [Delete.vue](components/settings/panel/Delete.vue))
* Define User Teams — ✅ enforced (`isLead`, [teams/index.vue](pages/workspace/[id]/settings/teams/index.vue), [MembersDialog.vue](components/teams/MembersDialog.vue))
* Define Groups or Roles — ✅ enforced (`isLead`, [members.vue](pages/workspace/[id]/settings/members.vue))
* Export to TDEI — ❌ **not gated by the workspace `lead` role.** Eligibility is
`pg.roles.includes('poc') || pg.roles.includes('<type>_data_generator')` —
i.e. **TDEI project-group roles**, not the workspace role
([export/tdei.vue](pages/workspace/[id]/export/tdei.vue)). A Lead without one
of those TDEI roles cannot export; a non-lead with `poc` can.
* Validate Changeset — ✅ enforced (`isValidator`, [review/Toolbar.vue](components/review/Toolbar.vue))
* Move Workspace from Project Group to Project Group — ❌ **not implemented.**
No `move`/`transfer`/`changeProjectGroup` code exists anywhere in the frontend.
* Edit POSM Element — ✅ available, but **not role-gated** (see note below)

Validator
* Export to TDEI — ❌ same as above — gated on TDEI `poc`/`data_generator`,
never on the `validator` workspace role
* Validate Changeset — ✅ enforced (`isValidator` covers `validator`)
* Edit POSM Element — ✅ available, but **not role-gated** (see note below)

Contributor
* Edit POSM Element — ✅ available, but **not role-gated** (see note below)

Authenticated User With PG/Workspace Association
* Edit POSM Element — ✅ available, but **not role-gated** (see note below)

**Note on "Edit POSM Element":** the editor page
([edit.vue](pages/workspace/[id]/edit.vue)) has **zero role gating** — the only
gate is `auth.global.ts` (authentication, not role), so any authenticated user
who reaches it loads the editor. The "contributor edits need validation" and
"viewer is read-only" distinctions are **not enforced in this frontend**; they
would have to be enforced by the backend / changeset-validation flow.

## Test status

The e2e suite currently passes aside from **6 intentionally-skipped tests**: 6
`test.fixme` dashboard flows blocked by maplibre/external-editor rendering. Some
heavy authed pages (e.g. `settings/members`) can flake under high parallelism
(the lazy-compile issue above) — run serially (`--workers=1`) for deterministic
results.
9 changes: 8 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,12 @@

Look at the [Nuxt 3 documentation](https://nuxt.com/docs/getting-started/introduction) to learn more.

### ⚠️ Reminder: you must set the tag of the environment you wish to deploy in this repo, then run the deploy workflow in workspaces-stack to deploy to dev, stage or prod.
### ⚠️ Reminder: you must set the tag of the environment you wish to deploy in this repo, then run the deploy workflow in workspaces-stack to deploy to dev, stage or prod.

### Note: The new workflow enabled creates the tags once the PR is merged to develop, stage or production

# TODOs
* Remove "any" typing, currently ignored by linter/tsc

## Dev Setup

Expand All @@ -22,3 +27,5 @@ npm run dev

If you run `npm run dev` and nothing happens, double check your `.env` file.
Undefined environment variables are not handled gracefully right now.


3 changes: 3 additions & 0 deletions assets/img/check-circle.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions assets/img/close-circle.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading