2019-02-17 20:53:04 +01:00
|
|
|
---
|
|
|
|
date: "2019-02-12:00:00+02:00"
|
|
|
|
title: "Development"
|
|
|
|
toc: true
|
|
|
|
draft: false
|
|
|
|
type: "doc"
|
|
|
|
menu:
|
|
|
|
sidebar:
|
|
|
|
parent: "development"
|
|
|
|
name: "Development"
|
|
|
|
---
|
|
|
|
|
|
|
|
# Development
|
|
|
|
|
2021-11-13 18:20:23 +01:00
|
|
|
{{< table_of_contents >}}
|
|
|
|
|
|
|
|
## General
|
2019-02-17 20:53:04 +01:00
|
|
|
|
2021-05-17 12:53:12 +02:00
|
|
|
To contribute to Vikunja, fork the project and work on the main branch.
|
2021-11-13 18:20:23 +01:00
|
|
|
Once you feel like your changes are ready, open a PR in the respective repo.
|
|
|
|
A maintainer will take a look and give you feedback. Once everyone is happy, the PR gets merged and released.
|
|
|
|
|
|
|
|
If you plan to do a bigger change, it is better to open an issue for discussion first.
|
|
|
|
|
|
|
|
## API
|
|
|
|
|
|
|
|
The code for the api is located at [code.vikunja.io/api](https://code.vikunja.io/api).
|
|
|
|
|
2021-11-28 12:56:46 +01:00
|
|
|
We use go modules to manage third-party libraries for Vikunja, so you'll need at least go `1.17` to use these.
|
2019-02-17 20:53:04 +01:00
|
|
|
|
2020-09-03 17:34:44 +02:00
|
|
|
A lot of developing tasks are automated using a Magefile, so make sure to [take a look at it]({{< ref "mage.md">}}).
|
|
|
|
|
2021-11-13 18:20:23 +01:00
|
|
|
Make sure to check the other doc articles for specific development tasks like [testing]({{< ref "test.md">}}),
|
2021-07-14 00:25:12 +02:00
|
|
|
[database migrations]({{< ref "db-migrations.md" >}}) and the [project structure]({{< ref "structure.md" >}}).
|
2021-11-13 18:20:23 +01:00
|
|
|
|
|
|
|
## Frontend requirements
|
|
|
|
|
|
|
|
The code for the frontend is located at [code.vikunja.io/frontend](https://code.vikunja.io/frontend).
|
|
|
|
|
|
|
|
You need to have yarn v1 and nodejs in version 16 installed.
|
|
|
|
|
|
|
|
## Git flow
|
|
|
|
|
|
|
|
The `main` branch is the latest and bleeding edge branch with all changes. Unstable releases are automatically
|
|
|
|
created from this branch.
|
|
|
|
|
|
|
|
A release gets tagged from the main branch with the version name as tag name.
|
|
|
|
|
|
|
|
Backports and point-releases should go to a `release/version` branch, based on the tag they are building on top of.
|
|
|
|
|
|
|
|
## Conventional commits
|
|
|
|
|
|
|
|
We're using [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) because they greatly simplify
|
|
|
|
generating release notes.
|
|
|
|
|
|
|
|
It is not required to use them when creating a PR, but appreciated.
|