---
title: "Project"
description: "Projekt och uppgifter. Varje app är en modul i en gemensam datamodell."
canonical: "https://obop-platform.sliplane.app/sv/apps/projects/"
lang: "sv"
---

# Project

## Vad den är till för

Plan work as projects, milestones and tasks with assignees and deadlines. Progress is tracked by status, which keeps the model simple; it is a good fit for small teams that want a shared board rather than effort accounting.

## Vad paketet gör och inte gör

Projects, milestones and tasks with assignees, deadlines and status flows. Progress is tracked by status, not computed from task effort.

## Modeller

### `projects_project`

A body of work with a goal

Läsgrupp: `projects.user`. Skrivgrupp: `projects.manager`.

| Fält | Typ | Dataklass | Personuppgift | Grupp | Agenter ser | Beskrivning |
|---|---|---|---|---|---|---|
| `name` | text | `none` | nej | `projects.user` | i klartext | Project name |
| `code` | text | `none` | nej | `projects.user` | i klartext | Short reference used in reports, for example WEB-24 |
| `project_manager` | text | `internal` | ja | `projects.user` | maskerad | Name of the person accountable for the project |
| `start_on` | date | `none` | nej | `projects.user` | i klartext | Planned start date (YYYY-MM-DD) |
| `deadline` | date | `none` | nej | `projects.user` | i klartext | Date the project must be finished (YYYY-MM-DD) |
| `budget` | money | `none` | nej | `projects.user` | i klartext | Agreed budget for the project (minor currency units, e.g. cents) |
| `description` | longtext | `none` | nej | `projects.user` | i klartext | Goal and scope of the project |
| `state` | select (planned, active, done) | `none` | nej | `projects.user` | i klartext | Project status: planned, active, done |

### `projects_milestone`

A checkpoint in a project

Läsgrupp: `projects.user`. Skrivgrupp: `projects.manager`.

| Fält | Typ | Dataklass | Personuppgift | Grupp | Agenter ser | Beskrivning |
|---|---|---|---|---|---|---|
| `project_id` | ref → projects_project | `none` | nej | `projects.user` | i klartext | The project the milestone belongs to |
| `name` | text | `none` | nej | `projects.user` | i klartext | Milestone name, for example Design approved |
| `due_on` | date | `none` | nej | `projects.user` | i klartext | Date the milestone is due (YYYY-MM-DD) |
| `description` | longtext | `none` | nej | `projects.user` | i klartext | What must be true for the milestone to count as reached |
| `state` | select (pending, reached, missed) | `none` | nej | `projects.user` | i klartext | Milestone status: pending, reached, missed |

### `projects_task`

A unit of work inside a project

Läsgrupp: `projects.user`. Skrivgrupp: `projects.user`.

| Fält | Typ | Dataklass | Personuppgift | Grupp | Agenter ser | Beskrivning |
|---|---|---|---|---|---|---|
| `title` | text | `none` | nej | `projects.user` | i klartext | What needs doing |
| `project_id` | ref → projects_project | `none` | nej | `projects.user` | i klartext | The project this task belongs to; empty for a private task |
| `milestone_id` | ref → projects_milestone | `none` | nej | `projects.user` | i klartext | The milestone this task contributes to |
| `assignee` | text | `internal` | ja | `projects.user` | maskerad | Name of the person responsible |
| `priority` | select (low, normal, high) | `none` | nej | `projects.user` | i klartext | How important the task is: low, normal, high |
| `due_on` | date | `none` | nej | `projects.user` | i klartext | Date the task is due (YYYY-MM-DD) |
| `estimate_minutes` | number | `none` | nej | `projects.user` | i klartext | Planned effort in minutes |
| `description` | longtext | `none` | nej | `projects.user` | i klartext | Details, acceptance criteria and links |
| `state` | select (todo, doing, done, cancelled) | `none` | nej | `projects.user` | i klartext | Task status: todo, doing, done, cancelled |

## Arbetsflöden

### `projects_project`

| Åtgärd | Flyttar | Vem får köra den | Godkännande |
|---|---|---|---|
| `projects_project.start` | state: planned → active | `projects.manager` | nej |
| `projects_project.finish` | state: active → done | `projects.manager` | nej |
| `projects_project.reopen` | state: done → active | `projects.manager` | nej |

### `projects_milestone`

| Åtgärd | Flyttar | Vem får köra den | Godkännande |
|---|---|---|---|
| `projects_milestone.reach` | state: pending → reached | `projects.manager` | nej |
| `projects_milestone.miss` | state: pending → missed | `projects.manager` | nej |

### `projects_task`

| Åtgärd | Flyttar | Vem får köra den | Godkännande |
|---|---|---|---|
| `projects_task.begin` | state: todo → doing | `projects.user` | nej |
| `projects_task.complete` | state: doing → done | `projects.user` | nej |
| `projects_task.cancel` | state: todo → cancelled | `projects.user` | nej |

## Behörighetsgrupper

Grupper som den här appen använder:

- `projects.manager`
- `projects.user`

## Steg som kräver godkännande

Inget steg i den här appen kräver godkännande, förutom att ta bort poster.

## Vad agenter kan och inte kan göra

En agent kan läsa, söka, skapa och uppdatera poster i den här appen, och köra de åtgärder som inte kräver godkännande, inom behörighetsgrupperna för sin token.

Den kan bara föreslå de här stegen, och en person måste godkänna dem: `projects_project.delete`, `projects_milestone.delete`, `projects_task.delete`.

Personuppgifter maskeras som platshållare: `projects_project.project_manager`, `projects_task.assignee`.

## Beroenden

Inga.

## Installera

Installera den från appen Customize (Marknadsplats), eller från kommandoraden:

```bash
obop modules install-from projects
```

Kräver en databas och administratörsbehörighet.

## Bygg din egen

[Modulguiden visar hur appar som den här skrivs](/sv/docs/reference/module-manifest/)
