oxynote/web
FredApps 2ebcbfac3c fix(notifications): type pages and guard missing rollback state
Specify the infinite query response and page parameter types. Preserve
the original mutation error when optimistic preparation fails before
rollback state is available.

Add a regression for failed optimistic preparation. All 19 API tests,
42 component tests, formatting and source review pass. Full types, lint,
coverage and remaining WIP gates still need validation.
2026-10-10 16:48:27 +02:00
..
app fix(notifications): type pages and guard missing rollback state 2026-10-10 16:48:27 +02:00
electron improve file block 2026-09-17 13:02:18 +02:00
i18n feat(notifications): filter inbox by read status 2026-10-10 16:07:16 +02:00
modules optimise doc icon loading 2026-09-06 20:58:46 +02:00
public update logo 2026-08-13 22:03:27 +02:00
.dockerignore update docker configs 2026-08-05 17:50:32 +02:00
.nuxtrc deps(web): bump the breaking group across 1 directory with 4 updates (#110) 2026-09-12 15:29:55 +03:00
.prettierignore move promql grammar parsing to a separate package 2026-09-01 14:57:21 +02:00
AGENTS.md overhaul the search box 2026-10-07 23:58:08 +02:00
CLAUDE.md add AGENTS.md files 2026-09-08 20:51:36 +02:00
colada.options.ts initial commit 2026-08-03 18:40:10 +02:00
components.json initial commit 2026-08-03 18:40:10 +02:00
Dockerfile.dev deps(docker): bump the safe group across 2 directories with 1 update (#143) 2026-09-12 16:01:33 +03:00
eslint.config.mjs add status column to hooks 2026-10-04 15:15:26 +03:00
forge.config.ts initial commit 2026-08-03 18:40:10 +02:00
index.d.ts improve file block 2026-09-17 13:02:18 +02:00
knip.ts move promql grammar parsing to a separate package 2026-09-01 14:57:21 +02:00
nuxt.config.ts overhaul the search box 2026-10-07 23:58:08 +02:00
package.json generate default org and user avatars 2026-10-05 14:29:52 +02:00
pnpm-lock.yaml generate default org and user avatars 2026-10-05 14:29:52 +02:00
pnpm-workspace.yaml pin higher tmp and tar versions in web 2026-09-09 11:29:50 +03:00
prettier.config.js initial commit 2026-08-03 18:40:10 +02:00
README.md improve auth 2026-08-07 18:17:59 +02:00
sentry.client.config.ts update docker files 2026-08-31 11:25:59 +02:00
sentry.server.config.ts update docker files 2026-08-31 11:25:59 +02:00
tsconfig.json initial commit 2026-08-03 18:40:10 +02:00
vite.electron.config.ts update env vars 2026-08-06 12:07:32 +02:00
vitest.config.ts deps(web): bump the breaking group across 1 directory with 4 updates (#110) 2026-09-12 15:29:55 +03:00
vitest.nuxt-setup.ts deps(web): bump the breaking group across 1 directory with 4 updates (#110) 2026-09-12 15:29:55 +03:00

Web

Nuxt 4 + Vue 3 frontend of Oxynote. Ships two ways: a server-rendered web app and an Electron desktop app.

Tools and dependencies:

I18N

All text needs to be placed in the i18n/ directory.

We use a separate package for validation and it uses its own internal error messages: https://vee-validate.logaretm.com/v4/guide/i18n/

Setup

Install dependencies and run the prepare step:

pnpm run setup

Environment variables are read from .env — make setup at the repository root creates it from docker/env/web.example.env.

Development

Start the web development server on http://localhost:3000 (the backend stack must be running — make dev at the repository root does both):

pnpm run start:dev:web

Run the desktop app against the same dev server:

pnpm run start:dev:desktop

Production

Build the web application:

pnpm run build:web

Package the desktop application (or build installers with make:desktop):

pnpm run package:desktop

QA

pnpm run qa      # check-types + check-lint + check-fmt
pnpm run qa-fix  # check-types + lint --fix + prettier --write