351 lines
9.0 KiB
Markdown
351 lines
9.0 KiB
Markdown
# Arbeidspuls
|
||
|
||
[Les denne README-en på norsk](README.md)
|
||
|
||
**Arbeidspuls** is a lightweight, privacy-friendly web app for self-reporting work ability, function, energy, symptoms and strain over time.
|
||
|
||
It is designed for practical situations where a person needs to document actual function in a work setting, such as work trials, gradual return-to-work processes, long-term illness, fatigue or other conditions that affect short-term and long-term capacity.
|
||
|
||
Arbeidspuls is quick to use from a phone, while still giving advisors a structured way to review trends, report details, follow-ups and notes.
|
||
|
||
> Arbeidspuls is a tool for structured self-reporting and review. It does not replace medical assessment, occupational health evaluation or formal decisions.
|
||
|
||
---
|
||
|
||
## Why host Arbeidspuls?
|
||
|
||
Arbeidspuls is suitable for organizations or professionals who need a simple, low-friction way to collect work-function self-reports without operating a heavy case management system or central database.
|
||
|
||
It is especially relevant for:
|
||
|
||
- work-fitness evaluations
|
||
- work trials
|
||
- gradual return-to-work processes
|
||
- documenting function, strain and recovery
|
||
- advisors, case workers or professionals reviewing reports
|
||
- environments where data minimization and local storage matter
|
||
|
||
Arbeidspuls is built as a static web app/PWA. It can normally be hosted as ordinary static files.
|
||
|
||
It normally does not require:
|
||
|
||
- a server database
|
||
- login
|
||
- a backend API
|
||
- a production Node process
|
||
- central storage of sensitive reports
|
||
|
||
The user owns their data locally in the browser and actively shares it by exporting a JSON file.
|
||
|
||
---
|
||
|
||
## Key features
|
||
|
||
- quick self-reporting from a phone
|
||
- 1–5 scales for core function areas
|
||
- optional details for workplace, work time, task type, limitations and accommodations
|
||
- follow-up after a work session to capture delayed worsening/recovery
|
||
- overview with time-based trend graph
|
||
- local JSON import/export
|
||
- advisor view for reviewing exported reports
|
||
- advisor notes per user, report and follow-up
|
||
- fullscreen graph analysis for advisors
|
||
- local report integrity checks
|
||
- Norwegian and English user interface
|
||
- installable as a PWA/WebApp on phones and tablets
|
||
|
||
---
|
||
|
||
## Screenshots
|
||
|
||
Screenshots are located in [`screenshots/`](screenshots/).
|
||
|
||
### Register report
|
||
|
||

|
||
|
||
The user can save a report with only a few taps. Core fields use quick 1–5 choices, while optional details can be opened when needed.
|
||
|
||
### Follow-up
|
||
|
||

|
||
|
||
Follow-up is used after a work session, for example later the same day, the next day or later. This is useful when symptoms or fatigue appear after a delay.
|
||
|
||
### Overview and trend
|
||
|
||

|
||
|
||
The overview shows reports, follow-ups, total score, category scores and trend over time. The graph uses the actual time distance between reports.
|
||
|
||
### Report details
|
||
|
||

|
||
|
||
The user can open a report to review details and optionally delete local reports.
|
||
|
||
### Privacy and data management
|
||
|
||

|
||
|
||
The privacy page explains local storage, export/import, sharing with an advisor and deletion of local data.
|
||
|
||
### Advisor review
|
||
|
||

|
||
|
||
The advisor view lets an advisor import JSON files from users, view reports, read details, add notes and compare development over time.
|
||
|
||
### Fullscreen graph analysis
|
||
|
||

|
||
|
||
In advisor mode, the graph can be opened in fullscreen for more precise review, time filtering and inspection of individual data points.
|
||
|
||
---
|
||
|
||
## For users
|
||
|
||
### Open the service
|
||
|
||
Go to:
|
||
|
||
```text
|
||
https://arbeidspuls.rolfsvaag.no
|
||
```
|
||
|
||
Arbeidspuls works on phones, tablets and desktop computers. It is phone-first, so reporting should be quick and low effort.
|
||
|
||
### Install it as an app on a phone or tablet
|
||
|
||
Arbeidspuls can be installed as a PWA/WebApp.
|
||
|
||
On Android/Chrome:
|
||
|
||
1. open Arbeidspuls in Chrome
|
||
2. open the browser menu
|
||
3. choose **Install app** or **Add to Home screen**
|
||
|
||
On iPhone/iPad/Safari:
|
||
|
||
1. open Arbeidspuls in Safari
|
||
2. tap the share button
|
||
3. choose **Add to Home Screen**
|
||
|
||
After this, Arbeidspuls can be opened like a normal app from the home screen.
|
||
|
||
### Save a report
|
||
|
||
Choose **Register**, fill in the core fields and press **Save report**.
|
||
|
||
The core fields are:
|
||
|
||
- current work ability
|
||
- energy level
|
||
- mental clarity / concentration
|
||
- symptom burden
|
||
- effort / strain
|
||
- whether you can continue, need a break, need an easier task or want to stop
|
||
|
||
Optional details can be used if you want to add more context, such as workplace, work time, physical/mental energy, task type, limitations, what helped and a short comment.
|
||
|
||
### Save a follow-up
|
||
|
||
Choose **Follow-up** to record how you are doing after a work session.
|
||
|
||
This can be used to document:
|
||
|
||
- whether you are worse than before the work session
|
||
- delayed symptoms
|
||
- recovery
|
||
- a short comment
|
||
|
||
Follow-up is especially useful if the reaction comes after the work session itself.
|
||
|
||
### View overview
|
||
|
||
Choose **Overview** to see previous reports, follow-ups and the trend graph.
|
||
|
||
The overview shows, among other things:
|
||
|
||
- total score
|
||
- work ability
|
||
- energy
|
||
- mental clarity
|
||
- symptoms
|
||
- strain
|
||
- follow-ups linked to reports
|
||
|
||
### Export data to an advisor
|
||
|
||
If an advisor or another person needs to review your reports:
|
||
|
||
1. go to **Privacy**
|
||
2. choose **Export JSON**
|
||
3. send the JSON file to the advisor, for example by email or another agreed channel
|
||
|
||
The JSON file may contain sensitive health and function-related information. Only share it with people who should have access.
|
||
|
||
### Import earlier data
|
||
|
||
If you have changed devices, changed browser or lost local data, you can import a previously exported JSON file from **Privacy**.
|
||
|
||
---
|
||
|
||
## For advisors
|
||
|
||
Advisor mode is available at:
|
||
|
||
```text
|
||
https://arbeidspuls.rolfsvaag.no/veileder
|
||
```
|
||
|
||
or:
|
||
|
||
```text
|
||
https://arbeidspuls.rolfsvaag.no/evaluator
|
||
```
|
||
|
||
### Import reports
|
||
|
||
1. Ask the user to export JSON from **Privacy**
|
||
2. Open advisor mode
|
||
3. Choose the JSON file
|
||
4. Give the user a name or internal identifier
|
||
|
||
The data is stored locally in the advisor's browser. Arbeidspuls does not send the reports to a central server.
|
||
|
||
### Review reports
|
||
|
||
Advisors can:
|
||
|
||
- view a trend graph for the selected user
|
||
- filter by time period
|
||
- open fullscreen graph analysis
|
||
- read report details
|
||
- read follow-ups
|
||
- view total score and category scores
|
||
- write a general note for the user
|
||
- write notes per report
|
||
- write notes per follow-up
|
||
- export/import advisor backup
|
||
|
||
### Score and function level
|
||
|
||
Arbeidspuls shows total score and category scores as internal function indicators.
|
||
|
||
Scores are intended for overview and trend support, not as a medical conclusion.
|
||
|
||
Advisor mode uses score bands such as:
|
||
|
||
- **Exceptionally high function level**
|
||
- **Expected function level**
|
||
- **Moderately reduced function**
|
||
- **Significantly reduced function**
|
||
- **Very low function**
|
||
|
||
75% roughly corresponds to an expected/good reported function level, while 100% corresponds to an exceptionally high function level.
|
||
|
||
### Integrity checks
|
||
|
||
Reports may contain local integrity metadata. If a report is missing verification or appears to have been changed, a warning is shown in advisor mode.
|
||
|
||
This is a technical check. It is not a legal guarantee and does not prove the medical truth of a report.
|
||
|
||
---
|
||
|
||
## Privacy and local storage
|
||
|
||
Arbeidspuls stores data locally in the browser on the device being used.
|
||
|
||
This means:
|
||
|
||
- reports are not automatically sent to a server
|
||
- the standard app uses no central database
|
||
- data remains on the user's device/browser
|
||
- clearing browser data may delete reports
|
||
- changing device or browser requires export/import
|
||
|
||
The user must export JSON to share data with an advisor or move data to another device.
|
||
|
||
---
|
||
|
||
## Technical overview
|
||
|
||
Arbeidspuls is a static React/Vite app with local browser storage.
|
||
|
||
Typical production build:
|
||
|
||
```bash
|
||
npm ci
|
||
npm run build
|
||
```
|
||
|
||
The contents of `dist/` are then hosted as static files.
|
||
|
||
For an SPA, the web server should fall back to `index.html`, for example in Nginx:
|
||
|
||
```nginx
|
||
location / {
|
||
try_files $uri $uri/ /index.html;
|
||
}
|
||
```
|
||
|
||
### Technology
|
||
|
||
- React
|
||
- TypeScript
|
||
- Vite
|
||
- PWA manifest
|
||
- service worker
|
||
- local browser storage
|
||
- JSON import/export
|
||
- local advisor view
|
||
- Norwegian/English UI
|
||
|
||
### Production
|
||
|
||
Arbeidspuls normally only requires static hosting. Running a Node server in production is not required.
|
||
|
||
---
|
||
|
||
## Development
|
||
|
||
Install dependencies:
|
||
|
||
```bash
|
||
npm ci
|
||
```
|
||
|
||
Run the development server:
|
||
|
||
```bash
|
||
npm run dev
|
||
```
|
||
|
||
Build production files:
|
||
|
||
```bash
|
||
npm run build
|
||
```
|
||
|
||
Run tests:
|
||
|
||
```bash
|
||
npm test
|
||
```
|
||
|
||
---
|
||
|
||
## Important note
|
||
|
||
Arbeidspuls is a tool for structured self-reporting and review. It should not be used as the sole basis for medical, legal or employment-related decisions.
|
||
|
||
Total score and category scores are internal function indicators for overview and trends. They are not medically validated test results.
|
||
|
||
---
|
||
|
||
## License
|
||
|
||
See [`LICENSE`](LICENSE).
|