mirror of
https://github.com/go-vikunja/vikunja.git
synced 2026-03-12 01:59:34 -05:00
- Session model, type interface, and API service - Sessions settings page showing active sessions with device info, IP address, last active time, and current session indicator - Auth store updated to use cookie-based refresh tokens for user sessions and JWT-based renewal for link shares - refreshToken() uses Web Locks API to coordinate across browser tabs — only one tab performs the refresh, others adopt the result - 401 response interceptor with automatic retry: detects expired JWT (error code 11), refreshes the token, and replays the request - Interceptor gated to user JWTs only (link shares skip refresh) - checkAuth() attempts cookie refresh when JWT is expired, allowing seamless session resumption after short TTL expiry - Proactive token refresh on page focus/visibility via composable - renewToken() tolerates refresh failures when JWT is still valid
Web frontend for Vikunja
The todo app to organize your life.
This is the web frontend for Vikunja, written in Vue.js.
Take a look at our roadmap (hosted on Vikunja!) for a list of things we're currently working on!
For general information about the project, refer to the top-level readme of this repo.
Project setup
pnpm install
Development
Define backend server
You can develop the web front end against any accessible backend, including the demo at https://try.vikunja.io
In order to do so, you need to set the DEV_PROXY env variable. The recommended way to do so is to:
- Copy
.env.local.exampleas.env.local - Uncomment the
DEV_PROXYline - Set the backend url you want to use
In the end, it should look like DEV_PROXY=https://try.vikunja.io if you work against the online demo backend.
Start dev server (compiles and hot-reloads)
pnpm run dev
Compiles and minifies for production
pnpm run build
Lints and fixes files
pnpm run lint
License
This project is licensed under the AGPL-3.0-or-later license. See the LICENSE file for details.