Giter Site home page Giter Site logo

go-vikunja / vikunja Goto Github PK

View Code? Open in Web Editor NEW
629.0 7.0 49.0 56.7 MB

Mirror of vikunja from https://code.vikunja.io/api

License: GNU Affero General Public License v3.0

Dockerfile 0.03% Shell 0.17% Go 75.28% Smarty 0.32% JavaScript 0.16% TypeScript 9.34% HTML 0.03% Nix 0.01% Vue 13.82% SCSS 0.85%
golang todo todolist api todoapp self-hosted

vikunja's Introduction

Build Status License: AGPL v3 Download Docker Pulls Swagger Docs Go Report Card

Vikunja

The Todo-app to organize your life.

If Vikunja is useful to you, please consider buying me a coffee, sponsoring me on GitHub or buying a sticker pack. I'm also offering a hosted version of Vikunja if you want a hassle-free solution for yourself or your team.

Table of contents

Security Reports

If you find any security-related issues you don't want to disclose publicly, please use the contact information on our website.

Features

See the features page on our website for a more exhaustive list or try it on try.vikunja.io!

Docs

All docs can be found on the Vikunja home page.

Roadmap

See the roadmap (hosted on Vikunja!) for more!

Contributing

Please check out the contribuition guidelines on the website.

License

This project is licensed under the AGPLv3 License. See the LICENSE file for the full license text.

vikunja's People

Contributors

adrinux avatar andreymal avatar azymondrian avatar cernst72 avatar cr1xu5 avatar davidangel avatar dependabot[bot] avatar dpschen avatar earnestma avatar edelgrace avatar eljef avatar elscrux avatar erri120 avatar freaktechnik avatar furai avatar jayden-chan avatar jonastheis avatar jtojnar avatar kaibutsux avatar kolaente avatar lucabernstein avatar profi248 avatar robomagus avatar shilch avatar subnut avatar theedgeofrage avatar thezoker avatar viehlieb avatar vlasov-y avatar wofwca avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

vikunja's Issues

Build fails on FreeBSD

I'd be interested in trying out vikunja hosted on my TrueNAS server at home, to replace Kanboard (which doesn't look nearly as pretty as vikunja!).

Since there are no binary downloads for FreeBSD my only option is to build it from source, however when I try to do so, it fails with a rather unhelpful error message (I'm running FreeBSD 12.2):

# mage -v build:build
Running target: Build:Build
Running dependency: initVars
Error getting packages: exit status 1

[Question] When I upload images to list's description, error happen

Hello Sir, your vikunja is really a fantastic app, recently, while using your app, I found a bug, when I upload image file to list's description, a bug will happen, in browser console:
image
In frontend:
image

my platform:
client: linux x86 64, firefox 89.0;
server: docker-compose, follow your website's example;
If you need more info about this situation, please tell me : )
could u help me deal with this question? Thank you Sir!

Using Vikunja as a caldav client

As far as I understand, Vikunja intends to be used as a caldav server and not as a caldav client.

I'd like to point out that there is already rock solid floss caldav servers (sabredav, radicale, etc.).

I think that a better strategy would be to repurpose Vikunja as a caldav client-only. In my opinion, it's a waste of energy to develop a new caldav server: simply ship vikunja with sabredav/radicale server if you really want a caldav server, and just make them collaborate together.

Vikunja could be incredibly useful as a cross-platform front-end task management software able to connect and sync to a caldav server. You'll get integration with Nextcloud Tasks for free (based on sabredav). Caldav is the only floss widespread solution to get a way to synchronize tasks through different devices (mobile, web, desktop), and Vikunja could fill a gap right away.

I've desperately dig into the internet, and such a software simply does not exist in 2022 !

Look for instance here :

tasks/tasks#1256
https://www.reddit.com/r/kde/comments/gs2acz/todo_manager_with_caldav_sync/
https://www.reddit.com/r/selfhosted/comments/grlrtr/has_anyone_gotten_personal_task_management_right/

Why writing an opensource caldav server (which is quite hard, and exists already), instead of just focusing on writing a cross-platform caldav client (which does not exist at this level of quality) ?

Moreover, a restful api frontend library for the caldav task protocol would be awesome, there is simply none in the web AFAIK.

Anyway, thank you very much for offering to the world this really neat software, it's the best cross-platform floss alternative task management client I know of.

Apprise Integration

Apprise is a platform-rich notifier. I think it would be a huge addition to notifications on Vikunja. It is a Python package which would make it awkward for integrating, but it also exposes a CLI util which could make this easier if you wanted to go down that route.

I have no experience with Go so I'm just filing this as a feature request and not accompanying it with a PR!

"Save" copy instead of "Done" for Description

Hey, I noticed a minor UX inconsistency today:

  • While editing a task description on the List-view, the save button is called "Save" and has a blue background.
  • While editing a task description on the Task-view, the save button is called "Done" and has a grey background.

There's also proximity with the green "Done" status button. By mistake I marked a task as Done instead of saving the description.

image

Suggestion: Keep the copy "Save" and the blue button background consistent through the frontend.

Due hour is not changed until the curser moves to another field

When trying to change the due time of a task, changing the value of the due time and pressing on "confirm" doesn't produce any change. Instead, the following steps need to be taken: 1) change the due time, 2) move the cursor to another field, 3) press "confirm". The same issue exists when changing minutes. I am using the latest Vijunja version (0.18.2) on Cloudron.

Importing from Trello does not work properly

I start the process, authorize the Vikunja Migration app via Trello, and it says "Importing in progress"

The result is one board without cards – and that is the only one that is a "personal board" – the rest is in different workspaces (where I'm admin – and I gave permissions to when authorizing the "Vikunja app").

So in summary:

  • Only imports 1 "personal" board, but without the cards (i.e it's empty).
  • Don't import any of the "workspace" boards.

I've tried to look at the logs, but nothing related pops up as far as I can see (maybe I'm looking in the wrong place, or need debugging on).

I see it says ´Vikunja Migration will be able to use your account for an hour (or until you disable it).` on the Trello authorization page – is it too little time.

Screenshot:
image

Let me know if you want me to check something specific.

Error Request failed with status code 500 Internal Server Error

Hello, beforehand I want to thank you for this amazing project !
I'm not sure if this error is really a bug or just a simple permission error.

The problem:
When uploading an attachment or setting a wallpaper I get the following error message: " Error Request failed with status code 500 Internal Server Error". In the docker container log I got the following error message: "ERROR ▶ handler/UploadBackground 1f7 open files/3: permission denied"

My docker compose file looks like the following:
version: '3'

services:
api:
image: vikunja/api
environment:
VIKUNJA_DATABASE_TYPE: sqlite
VIKUNJA_SERVICE_FRONTENDURL: URL
VIKUNJA_SERVICE_ENABLETASKATTACHMENTS: 1
VIKUNJA_SERVICE_ENABLEREGISTRATION: 1
VIKUNJA_SERVICE_ENABLELINKSHARING: 1
VIKUNJA_SERVICE_ENABLETASKCOMMENTS: 1
VIKUNJA_SERVICE_ENABLEEMAILREMINDERS: 1
VIKUNJA_SERVICE_ENABLEUSERDELETION: 1
VIKUNJA_MAILER_ENABLED: 1
VIKUNJA_MAILER_HOST: SERVER
VIKUNJA_MAILER_PORT: 587
VIKUNJA_MAILER_USERNAME: EMAIL
VIKUNJA_MAILER_PASSWORD: PASSWORD
VIKUNJA_RATELIMIT_ENABLED: 0
VIKUNJA_FILES_MAXSIZE: 8000MB
VIKUNJA_SERVICE_ENABLETOTP: 1
VIKUNJA_SERVICE_TIMEZONE: Europe/Berlin
ports:
- 3456:3456
volumes:
- ./files:/app/vikunja/files
restart: unless-stopped
frontend:
image: vikunja/frontend
ports:
- 4242:80
environment:
VIKUNJA_API_URL: URL/api/v1
restart: unless-stopped

Delete user through CLI runtime error

I've been toying around with using Oauth2 login on Vikunja, and as a result of that some additional unintended users have been created.
When trying to delete these accounts through CLI (./vikunja user delete 3 --now) I get the following output:

2022/03/20 15:13:17 Using config file: /app/vikunja/config.yaml
2022-03-20T15:13:17.330165405Z: INFO    ▶ migration/Migrate 048 Ran all migrations successfully.
2022-03-20T15:13:17.330984133Z: INFO    ▶ models/RegisterReminderCron 049 Mailer is disabled, not sending reminders per mail
2022-03-20T15:13:17.331467773Z: INFO    ▶ models/RegisterOverdueReminderCron 04a Mailer is disabled, not sending overdue per mail
You requested to delete the user immediately. Are you sure?
To confirm, please type "yes, I confirm" in all uppercase:
2022-03-20T15:13:17.333698517Z: INFO    ▶ [EVENTS] 04e Adding handler, handler_name=poison.logger, topic=poison
2022-03-20T15:13:17.333989771Z: INFO    ▶ [EVENTS] 050 Adding handler, handler_name=team.member.added.team.member.added.notification, topic=team.member.added
2022-03-20T15:13:17.334122269Z: INFO    ▶ [EVENTS] 051 Adding handler, handler_name=user.export.requested.handle.user.data.export, topic=user.export.requested
2022-03-20T15:13:17.33420049Z: INFO     ▶ [EVENTS] 052 Adding handler, handler_name=namespace.created.namespace.counter.increase, topic=namespace.created
2022-03-20T15:13:17.334244952Z: INFO    ▶ [EVENTS] 053 Adding handler, handler_name=team.created.team.counter.increase, topic=team.created
2022-03-20T15:13:17.334289637Z: INFO    ▶ [EVENTS] 054 Adding handler, handler_name=task.created.task.counter.increase, topic=task.created
2022-03-20T15:13:17.334329507Z: INFO    ▶ [EVENTS] 055 Adding handler, topic=task.created, handler_name=task.created.task.created.mentions
2022-03-20T15:13:17.334365339Z: INFO    ▶ [EVENTS] 056 Adding handler, handler_name=team.deleted.team.counter.decrease, topic=team.deleted
2022-03-20T15:13:17.334401691Z: INFO    ▶ [EVENTS] 057 Adding handler, handler_name=task.assignee.created.task.assigned.notification.send, topic=task.assignee.created
2022-03-20T15:13:17.334445116Z: INFO    ▶ [EVENTS] 058 Adding handler, handler_name=task.assignee.created.task.assignee.subscribe, topic=task.assignee.created
2022-03-20T15:13:17.33448219Z: INFO     ▶ [EVENTS] 059 Adding handler, topic=list.deleted, handler_name=list.deleted.list.counter.decrease
2022-03-20T15:13:17.334546207Z: INFO    ▶ [EVENTS] 05a Adding handler, handler_name=namespace.deleted.namespace.counter.decrease, topic=namespace.deleted
2022-03-20T15:13:17.334645576Z: INFO    ▶ [EVENTS] 05b Adding handler, handler_name=task.updated.task.updated.mentions, topic=task.updated
2022-03-20T15:13:17.334710649Z: INFO    ▶ [EVENTS] 05c Adding handler, handler_name=user.created.increase.user.counter, topic=user.created
2022-03-20T15:13:17.334776889Z: INFO    ▶ [EVENTS] 05d Adding handler, handler_name=list.created.list.counter.increase, topic=list.created
2022-03-20T15:13:17.334838295Z: INFO    ▶ [EVENTS] 05e Adding handler, handler_name=list.created.send.list.created.notification, topic=list.created
2022-03-20T15:13:17.334918942Z: INFO    ▶ [EVENTS] 05f Adding handler, handler_name=task.comment.created.task.comment.notification.send, topic=task.comment.created
2022-03-20T15:13:17.334982663Z: INFO    ▶ [EVENTS] 060 Adding handler, handler_name=task.deleted.task.counter.decrease, topic=task.deleted
2022-03-20T15:13:17.335042422Z: INFO    ▶ [EVENTS] 061 Adding handler, handler_name=task.deleted.task.deleted.notification.send, topic=task.deleted
2022-03-20T15:13:17.335102717Z: INFO    ▶ [EVENTS] 062 Adding handler, topic=task.comment.edited, handler_name=task.comment.edited.handle.task.comment.edit.mentions
2022-03-20T15:13:17.338781215Z: INFO    ▶ [EVENTS] 079 Starting handler, subscriber_name=team.deleted.team.counter.decrease, topic=team.deleted
2022-03-20T15:13:17.338815344Z: INFO    ▶ [EVENTS] 07a Starting handler, subscriber_name=namespace.created.namespace.counter.increase, topic=namespace.created
2022-03-20T15:13:17.339021119Z: INFO    ▶ [EVENTS] 07b Starting handler, subscriber_name=poison.logger, topic=poison
2022-03-20T15:13:17.339120562Z: INFO    ▶ [EVENTS] 07c Starting handler, subscriber_name=namespace.deleted.namespace.counter.decrease, topic=namespace.deleted
2022-03-20T15:13:17.339321892Z: INFO    ▶ [EVENTS] 07e Starting handler, subscriber_name=list.deleted.list.counter.decrease, topic=list.deleted
2022-03-20T15:13:17.339510445Z: INFO    ▶ [EVENTS] 081 Starting handler, subscriber_name=task.comment.edited.handle.task.comment.edit.mentions, topic=task.comment.edited
2022-03-20T15:13:17.339652257Z: INFO    ▶ [EVENTS] 083 Starting handler, subscriber_name=task.comment.created.task.comment.notification.send, topic=task.comment.created
2022-03-20T15:13:17.339708145Z: INFO    ▶ [EVENTS] 084 Starting handler, subscriber_name=user.export.requested.handle.user.data.export, topic=user.export.requested
2022-03-20T15:13:17.339735923Z: INFO    ▶ [EVENTS] 085 Starting handler, subscriber_name=task.created.task.counter.increase, topic=task.created
2022-03-20T15:13:17.339826773Z: INFO    ▶ [EVENTS] 086 Starting handler, subscriber_name=list.created.send.list.created.notification, topic=list.created
2022-03-20T15:13:17.33992092Z: INFO     ▶ [EVENTS] 087 Starting handler, subscriber_name=user.created.increase.user.counter, topic=user.created
2022-03-20T15:13:17.339417409Z: INFO    ▶ [EVENTS] 07f Starting handler, subscriber_name=team.created.team.counter.increase, topic=team.created
2022-03-20T15:13:17.339646202Z: INFO    ▶ [EVENTS] 082 Starting handler, topic=team.member.added, subscriber_name=team.member.added.team.member.added.notification
2022-03-20T15:13:17.340030363Z: INFO    ▶ [EVENTS] 08a Starting handler, subscriber_name=task.assignee.created.task.assigned.notification.send, topic=task.assignee.created
2022-03-20T15:13:17.339927827Z: INFO    ▶ [EVENTS] 088 Starting handler, subscriber_name=task.deleted.task.counter.decrease, topic=task.deleted
2022-03-20T15:13:17.339977937Z: INFO    ▶ [EVENTS] 089 Starting handler, subscriber_name=task.deleted.task.deleted.notification.send, topic=task.deleted
2022-03-20T15:13:17.340216841Z: INFO    ▶ [EVENTS] 08c Starting handler, subscriber_name=task.assignee.created.task.assignee.subscribe, topic=task.assignee.created
2022-03-20T15:13:17.339122784Z: INFO    ▶ [EVENTS] 07d Starting handler, subscriber_name=task.updated.task.updated.mentions, topic=task.updated
2022-03-20T15:13:17.33948113Z: INFO     ▶ [EVENTS] 080 Starting handler, subscriber_name=list.created.list.counter.increase, topic=list.created
2022-03-20T15:13:17.340178971Z: INFO    ▶ [EVENTS] 08b Starting handler, subscriber_name=task.created.task.created.mentions, topic=task.created
YES, I CONFIRM
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0xca3774]

goroutine 1 [running]:
code.vikunja.io/api/pkg/user.(*User).GetName(...)
        /go/src/code.vikunja.io/api/pkg/user/user.go:144
code.vikunja.io/api/pkg/user.(*AccountDeletedNotification).ToMail(0x4000296010, 0x119de18)
        /go/src/code.vikunja.io/api/pkg/user/notifications.go:259 +0x54
code.vikunja.io/api/pkg/notifications.notifyMail(0x14dee68, 0x400015f0e0, 0x14e6f78, 0x4000296010, 0x400050f938, 0xcf15e8)
        /go/src/code.vikunja.io/api/pkg/notifications/notification.go:65 +0x30
code.vikunja.io/api/pkg/notifications.Notify(0x14dee68, 0x400015f0e0, 0x14e6f78, 0x4000296010, 0x0, 0x0)
        /go/src/code.vikunja.io/api/pkg/notifications/notification.go:56 +0x144
code.vikunja.io/api/pkg/models.DeleteUser(0x4000107450, 0x400015f0e0, 0x1, 0x400015f0e0)
        /go/src/code.vikunja.io/api/pkg/models/user_delete.go:170 +0x684
code.vikunja.io/api/pkg/cmd.glob..func24(0x1b86620, 0x4000456860, 0x1, 0x2)
        /go/src/code.vikunja.io/api/pkg/cmd/user.go:342 +0x158
github.com/spf13/cobra.(*Command).execute(0x1b86620, 0x4000456840, 0x2, 0x2, 0x1b86620, 0x4000456840)
        /go/pkg/mod/github.com/spf13/[email protected]/command.go:860 +0x1d0
github.com/spf13/cobra.(*Command).ExecuteC(0x1b86da0, 0x40d1fc, 0x4000000180, 0x4000044800)
        /go/pkg/mod/github.com/spf13/[email protected]/command.go:974 +0x274
github.com/spf13/cobra.(*Command).Execute(...)
        /go/pkg/mod/github.com/spf13/[email protected]/command.go:902
code.vikunja.io/api/pkg/cmd.Execute()
        /go/src/code.vikunja.io/api/pkg/cmd/cmd.go:44 +0x30
main.main()
        /go/src/code.vikunja.io/api/main.go:22 +0x20

Probably also imporant to mention here, is that both my regular (non Oauth) user on Vikunja, and the added Oauth accounts have the exact same email address linked to it.

[Bug] Update of list properties after change

After changing the list properties (color and name), the change in the Upcoming and Overview view is only updated after a full page reload.
Only a small bug, but it still would be nice to see it fixed.
Btw: I'm very new to Vikunja, but I love it so far, keep up the excellent work!

Expand the area into which kanban items can be dragged to change column

Here is an example of a simple kanban board in vikunja:
image

The green arrows show where I can drag the selected item ("item 4") to move it to one of the other columns. The red arrows show places where I would like to be able to drag the item but that I can't (it doesn't recognise that this is part of the other column).

It'd be helpful if the columns extended all the way to the bottom of the screen (conceptually, for the purposes of drag-and-drop) because that would make it much easier & faster to drag items between columns. Currently you have to drag the item to a fairly small & specific position to get it to detect that this item should go to another column.

[FEATURE] Clearing notifications

Just a feature request, definitely in the nice-to-have department: being able to either mark notifications as read either individually or all as a group so that the red dot next to the bell goes away.

I also noticed that there's no space between the name of the user and the word "assigned".

Log out automatically after a few seconds

I installed vikunja with docker-compose and nginx configuration.

After 10 seconds my acocunt will be automatically log out.

In develper console I see some errors:

GET http://192.168.178.15:10001/api/v1/avatar/user?size=50 502 (Bad Gateway)
Image (async)
_i @ user-settings.9c5ddbb4.js:1
wi @ user-settings.9c5ddbb4.js:1
bi @ user-settings.9c5ddbb4.js:1
v @ user-settings.9c5ddbb4.js:1
o @ user-settings.9c5ddbb4.js:1
p @ user-settings.9c5ddbb4.js:1
o @ user-settings.9c5ddbb4.js:1
p @ user-settings.9c5ddbb4.js:1
o @ user-settings.9c5ddbb4.js:1
p @ user-settings.9c5ddbb4.js:1
o @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
e._update @ user-settings.9c5ddbb4.js:1
i @ user-settings.9c5ddbb4.js:1
_n.get @ user-settings.9c5ddbb4.js:1
_n @ user-settings.9c5ddbb4.js:1
e @ user-settings.9c5ddbb4.js:1
$n.$mount @ user-settings.9c5ddbb4.js:1
init @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
o @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
x @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
x @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
e._update @ user-settings.9c5ddbb4.js:1
i @ user-settings.9c5ddbb4.js:1
_n.get @ user-settings.9c5ddbb4.js:1
_n.run @ user-settings.9c5ddbb4.js:1
bn @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
tt @ user-settings.9c5ddbb4.js:1
Promise.then (async)
Ze @ user-settings.9c5ddbb4.js:1
st @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
_n.update @ user-settings.9c5ddbb4.js:1
pe.notify @ user-settings.9c5ddbb4.js:1
set @ user-settings.9c5ddbb4.js:1
authenticated @ index.3c6ccad3.js:18
(anonymous) @ user-settings.9c5ddbb4.js:6
(anonymous) @ user-settings.9c5ddbb4.js:6
(anonymous) @ user-settings.9c5ddbb4.js:6
Qr._withCommit @ user-settings.9c5ddbb4.js:6
Qr.commit @ user-settings.9c5ddbb4.js:6
Qr.commit @ user-settings.9c5ddbb4.js:6
r.commit @ user-settings.9c5ddbb4.js:6
checkAuth @ index.3c6ccad3.js:18
(anonymous) @ user-settings.9c5ddbb4.js:6
Qr.dispatch @ user-settings.9c5ddbb4.js:6
Qr.dispatch @ user-settings.9c5ddbb4.js:6
r.dispatch @ user-settings.9c5ddbb4.js:6
(anonymous) @ index.3c6ccad3.js:18
Promise.then (async)
login @ index.3c6ccad3.js:18
(anonymous) @ user-settings.9c5ddbb4.js:6
Qr.dispatch @ user-settings.9c5ddbb4.js:6
Qr.dispatch @ user-settings.9c5ddbb4.js:6
submit @ index.3c6ccad3.js:13
keyup @ index.3c6ccad3.js:13
Xe @ user-settings.9c5ddbb4.js:1
n @ user-settings.9c5ddbb4.js:1
Ri.a._wrapper @ user-settings.9c5ddbb4.js:1
Show 3 more frames
user-settings.9c5ddbb4.js:6 POST http://192.168.178.15:10001/api/v1/user/token 401 (Unauthorized)
(anonymous) @ user-settings.9c5ddbb4.js:6
cs @ user-settings.9c5ddbb4.js:6
js @ user-settings.9c5ddbb4.js:6
Is.request @ user-settings.9c5ddbb4.js:6
$s.forEach.Is.<computed> @ user-settings.9c5ddbb4.js:6
(anonymous) @ user-settings.9c5ddbb4.js:6
nf @ user-settings.9c5ddbb4.js:20
(anonymous) @ index.3c6ccad3.js:18
setTimeout (async)
renewToken @ index.3c6ccad3.js:18
(anonymous) @ user-settings.9c5ddbb4.js:6
Qr.dispatch @ user-settings.9c5ddbb4.js:6
Qr.dispatch @ user-settings.9c5ddbb4.js:6
renewTokenOnFocus @ index.3c6ccad3.js:8
created @ index.3c6ccad3.js:8
Xe @ user-settings.9c5ddbb4.js:1
ln @ user-settings.9c5ddbb4.js:1
$n._init @ user-settings.9c5ddbb4.js:1
s @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
init @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
o @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
x @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
x @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
e._update @ user-settings.9c5ddbb4.js:1
i @ user-settings.9c5ddbb4.js:1
_n.get @ user-settings.9c5ddbb4.js:1
_n.run @ user-settings.9c5ddbb4.js:1
bn @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
tt @ user-settings.9c5ddbb4.js:1
Promise.then (async)
Ze @ user-settings.9c5ddbb4.js:1
st @ user-settings.9c5ddbb4.js:1
(anonymous) @ user-settings.9c5ddbb4.js:1
_n.update @ user-settings.9c5ddbb4.js:1
pe.notify @ user-settings.9c5ddbb4.js:1
set @ user-settings.9c5ddbb4.js:1
authenticated @ index.3c6ccad3.js:18
(anonymous) @ user-settings.9c5ddbb4.js:6
(anonymous) @ user-settings.9c5ddbb4.js:6
(anonymous) @ user-settings.9c5ddbb4.js:6
Qr._withCommit @ user-settings.9c5ddbb4.js:6
Qr.commit @ user-settings.9c5ddbb4.js:6
Qr.commit @ user-settings.9c5ddbb4.js:6
r.commit @ user-settings.9c5ddbb4.js:6
checkAuth @ index.3c6ccad3.js:18
(anonymous) @ user-settings.9c5ddbb4.js:6
Qr.dispatch @ user-settings.9c5ddbb4.js:6
Qr.dispatch @ user-settings.9c5ddbb4.js:6
r.dispatch @ user-settings.9c5ddbb4.js:6
(anonymous) @ index.3c6ccad3.js:18
Promise.then (async)
login @ index.3c6ccad3.js:18
(anonymous) @ user-settings.9c5ddbb4.js:6
Qr.dispatch @ user-settings.9c5ddbb4.js:6
Qr.dispatch @ user-settings.9c5ddbb4.js:6
submit @ index.3c6ccad3.js:13
keyup @ index.3c6ccad3.js:13
Xe @ user-settings.9c5ddbb4.js:1
n @ user-settings.9c5ddbb4.js:1
Ri.a._wrapper @ user-settings.9c5ddbb4.js:1
user-settings.9c5ddbb4.js:20 Error renewing token:  Error: Request failed with status code 401
    at Ha (user-settings.9c5ddbb4.js:6)
    at ts (user-settings.9c5ddbb4.js:6)
    at XMLHttpRequest.u (user-settings.9c5ddbb4.js:6)

I changed port to 10001 in docker-compose.yml but not in nginx.conf

    ports:
      - 10001:80

Frontend Version: 0.18.1
API Version: v0.18.1

Email notifications sent to gmail accounts are not displaying the Vikunja logo

Every time an image is referenced via html code, Google forces it Gmail users to load that image through their web caching service.
As it turns out, Google doesn't support svg files, which is what Vikunja uses in the notification email (images/logo-full.svg).
Therefore, all notifications sent to gmail users have the image broken and it looks like this:

Vikunja broken logo

A quick fix would be to convert the images that are meant to be displayed on gmail to jpg or other compatible format, more info here: https://stackoverflow.com/questions/51471607/email-thumbnail-url-changed-to-googleusercontent-com-in-gmail

Can you please look into this and consider a fix in a future release of Vikunja?

Thanks!

Reminders for repeating tasks

Hi! Thanks for this awesome app, I really like it. It seems that it is not possible at the moment to set a reminder for repeating tasks, is that correct? If yes, any plans to add this? It would be awesome. Thanks! :)

[FR] Add capabilities to receive 'share' intents

Much like how you can hit the share button in any app to e.g. save a URL to Google Keep, I'd like to have this functionality for my Vikunja lists as well.
I figured, since the Vikunja frontend is just a webapp it might not be possible, but then I came across this webpage that seems to suggest this can be implemented in a fairly straightforward way.

Ideally users would be able to select what should be done with the received content (e.g. to which list to add, to add a 'Shared' tag, etc.), but by default adding it to a separate list called 'shared' so the items can be sorted by hand and moved to their intended location later on.

Bulk edit for tasks

It would be useful to enable bulk edit for tasks. This could be used, for instance, to reschedule multiple tasks at once.

API url not replaced in docker image `:latest` tag

The run.sh in docker image :latest tag fail to replace API_URL in index.html. The API_URL stay at /api/v1, vice versa in :unstable tag the API URL replaced correctly.
Compose file exact same:

version: "3.5"
services: 
  frontend:
    image: vikunja/frontend:latest
    ports:
      - 80:80
    environment:
      VIKUNJA_API_URL: http://192.168.0.22:3456/api/v1
    restart: unless-stopped

version: "3.5"
services: 
  frontend:
    image: vikunja/frontend:unstable
    ports:
      - 80:80
    environment:
      VIKUNJA_API_URL: http://192.168.0.22:3456/api/v1
    restart: unless-stopped

Access denied inside the DB container

Tried to give this a spin under docker, I saw a similar problem over on kolaente.dev but this one is even working less.

Using the docker-compose.yml from the docs, only replacing the IP of my host, the two containers come up.

The frontend has the same problems as described on other issues site:

  • I've got an "Info" box with no content, am I even connected to the back end?

  • If I just click Log In, it just says "Request failed with status code 405". What does that mean?

Also the Register Button is missing, the entire layout is misaligned. I can browse there with the subpath but otherwise it wouldn't be accessible.

The problem is that with the provided docker-compose.yml from the docs the db user vikunja cant access the database, docker logs of the container show the error "Access denied for user 'vikunja'@'docker-ip' (Using password: yes)". If I exec into the container and log myself in (mysql -u vikunja -p) I get in just fine. The user vikunja isn't restricted from which host ('vikunja'@'%').

So far I have no idea why the provided standard docker-compose would do that. Any ideas?

Assign user from edit task menu does not work

I am experiencing an issue with the frontend of Vikunja. When I use the "edit task" menu to assign a user, this fails. The console reports the following two errors upon triggering this:

Could not add assignee to task in kanban, task not found Object { bucketIndex: null, taskIndex: null, task: null } app.e6497677.js:1:45839
This browser does not support triggered notifications app.e6497677.js:1:213568

This happens with both Firefox and Chromium. However, I am able to assign users by clicking on a task and clicking the "Assign This Task To A User" button on the right.

I am running Vikunja in docker behind an nginx reverse proxy. Apologies if I'm missing any pertinent info in this bug report.

[Feature request] Allow reordering of tasks in "List" view

Much of the time, I don't want a full KanBan board, but I do want to control the order of items in my to-do list. It would be nice to be able to manually re-order the items in the "List" view. Maybe this should also re-order the items in the KanBan view relative to that task's bucket.

after I deploy, internel error happen

hello sir,
I am a fans of your vikunja, I face some issue recently, when I try do some http request, vikunja_api respond: "internel error", I try to find the cause, here is log:
image
it just show that access denied, but I don't know why, could you help me to fix it? thank you sir : )

Add tasks with due date to gantt

Currently you can only see tasks in the gantt that have the start date and end date parameters, it would be great if tasks that have the due date parameters could also be seen. In case you think that not all users would like this it could be an additional checkbox like "Show tasks wich don't have a dates set" which is already present.

Mobile page to right meue dies not work

Hey,
I run the latest unstable in docker which is updated daily. Ony android phone the menue next to the avatar does not work. It opens but notvin the front so not usable. After the api update I can not log out and in again. Thanks for the awesome work!!
Regards:)

Moving tasks to lists starting with numbers

Issue: Unable to move a task to a list which has its title beginning with numbers.
Example: List titled "2021/01/04". A task cannot be moved to it, it does not find such list. If you change the title to "Daily 2021/01/04" then you can reassign any task to this list.

Frontend Version: 0.18.2
API Version: v0.18.1

After renaming a namespace, "Overview" shows the old name in front of tasks until you refresh.

To Reproduce

  • Have lists & tasks in a namespace.
  • Hit the overview tab.
  • Rename the namespace.
  • Hit the overview tab again.

Without a hard refresh, the "Overview" view will show the old name in front of the tasks from that namespace.

Expected results

Whatever cache is holding the old name of the namespace should be updated or invalidated when a namespace is renamed. The Overview should always show up-to-date names for namespaces.

Task description and comments text are the wrong colour in the kanban task modal

The task description and comments text show up white rather than black (or at least light rather than dark) over the light background when opening task details from Kanban view specifically.

Opening tasks from the other views navigates to a page dedicated to that task. These have the correct text colour. However when opening (clicking on) a task in Kanban view, tasks open in a modal and in that modal the text is the wrong colour, as shown in the screenshot below (red arrows are mine):
image

This is on frontend version: 0.18.1+1124-28af46bcd3

Notifications & 401

Hi, i have a strange issue:

Frontend: 0.18.2
Api: 0.18.1

Usually after a few days i get the constant "invalid or expired jwt"-Message from /api/v1/notifications on Firefox. Everything else works and uses the new token, but this request keeps using the expired one.

How to setup Https on Vikunja Frontend Docker

I have nginx Installed in my server and also Vikunja installed as docker container. I dont know to setup it as Https.

If i use Frontend in HTTP. Its working fine and all my setting are going great but When i try to shift it to HTTPS using nginx it Doesnt work properly.

Here is my Nginx Conf

server {
  server_name planner.realmx.space;

  access_log /var/log/nginx/planner.realmx.space.access;
  error_log /var/log/nginx/planner.realmx.space.error;

  location / {
    proxy_pass              http://localhost:8890/;
    proxy_set_header        X-Forwarded-Host        $server_name:$server_port;
    proxy_hide_header       Referer;
    proxy_hide_header       Origin;
    proxy_set_header        Referer                 '';
    proxy_set_header        Origin                  '';
    add_header              X-Frame-Options         "SAMEORIGIN";
  }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/realmx.space/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/realmx.space/privkey.pem; # managed by Certbot
    #include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    #ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot


    add_header Strict-Transport-Security "max-age=31536000" always; # managed by Certbot


    ssl_trusted_certificate /etc/letsencrypt/live/realmx.space//chain.pem; # managed by Certbot
    ssl_stapling on; # managed by Certbot
    ssl_stapling_verify on; # managed by Certbot

}
server {
    if ($host = planner.realmx.space) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


  listen 80;
  server_name planner.realmx.space;

  access_log /var/log/nginx/planner.realmx.space.access;
  error_log /var/log/nginx/planner.realmx.space.error;

  location / {
    proxy_pass              http://localhost:8890/;
    proxy_set_header        X-Forwarded-Host        $server_name:$server_port;
    proxy_hide_header       Referer;
    proxy_hide_header       Origin;
    proxy_set_header        Referer                 '';
    proxy_set_header        Origin                  '';
    add_header              X-Frame-Options         "SAMEORIGIN";
  }




}

Deleting Task Doesn't Update Timestamp

I may be wrong, but it seems that deleting a task doesn't update the tasklist updated timestamp. Creating a new task does.

I'm writing a script that uses the api to send notifications when a list has been updated. Maybe I'm missing something. I'm not a developer and this may be r/badcode lol.

example code:

import requests
from time import sleep
import json


def get_token(url, username, password):
    credentials = {"username": f"{username}", "password": f"{password}"}
    token = requests.post(f"{url}/api/v1/login", json=credentials).json()["token"]
    return (url, token)


def get_tasks(auth):
    db = {}

    tasklists = requests.get(
        f"{auth[0]}/api/v1/lists", headers={"Authorization": f"Bearer {auth[1]}"}
    ).json()
    tasks = requests.get(
        f"{auth[0]}/api/v1/tasks/all", headers={"Authorization": f"Bearer {auth[1]}"}
    ).json()

    for tasklist in tasklists:
        db[tasklist["id"]] = dict(
            name=tasklist["title"], updated=tasklist["updated"], tasks={}, num_tasks=0
        )

    for task in tasks:
        db[task["list_id"]]["tasks"][task["id"]] = dict(
            name=task["title"],
            created=task["created"],
            done=task["done"],
            done_ts=task["done_at"],
            created_by=task["created_by"]["name"],
            updated=task["updated"],
            labels=task["labels"],
            priority=task["priority"],
            notes=task["description"],
        )

    for tasklist in tasklists:
        db[tasklist["id"]]["num_tasks"] = len(db[tasklist["id"]]["tasks"])

    return db


def main():
        auth = get_token("https://vikunja.tld", "user", "password")
    current_db = get_tasks(auth)

    while True:
        sleep(30)
        auth = get_token("https://vikunja.tld", "user", "password")
        new_db = get_tasks(auth)

        for tasklist in current_db.keys():

            # Get Deleted Tasks
            # FIXME: Should be able to check if tasklist has been updated first to avoid unnecesary runs
            deleted_tasks = [
                ("current_db", tasklist, task)
                for task in current_db[tasklist]["tasks"]
                if task not in new_db[tasklist]["tasks"]
            ]
            if len(deleted_tasks) > 0:
                print(deleted_tasks)

            # Check if tasklist has been updated
            if current_db[tasklist]["updated"] == new_db[tasklist]["updated"]:
                continue

            # Get new Tasks
            new_tasks = [
                ("new_db", tasklist, task)
                for task in new_db[tasklist]["tasks"]
                if task not in current_db[tasklist]["tasks"]
            ]
            print("New Tasks:", set_tasks)

            # Get tasks that in both dicts
            set_tasks = [
                ("new_db", tasklist, task)
                for task in new_db[tasklist]["tasks"] and current_db[tasklist]["tasks"]
                if task not in [tup[2] for tup in new_tasks]
                or task not in [tup[2] for tup in deleted_tasks]
            ]
            print("Task Set:", set_tasks)

            # Look for Task Changes
            for task in new_db[tasklist]["tasks"]:
                pass

        current_db = new_db


main()

Due time is reset when due day is changed

When changing the due day of a task, the due time is automatically reset (typically to 12 pm) instead of remaining as previously set. It would be more natural if the due day could be changed without affecting the due time. A user case would be someone trying to reschedule a task due today in the evening (say 7 pm) to another day at the same time in the evening (7 pm). I am using the latest Vijunja version (0.18.2) on Cloudron.

Cannot Specify Non-Default List when Creating Item

This is a pretty annoying bug that has started happening to me recently. I can provide any additional information/test things for debugging if you let me know what to do! I run Vikunja with docker-compose behind Traefik on a home server. I ran docker pull vikunja/frontend and docker pull vikunja/api to get the newest latest. The frontend tells me:

Frontend Version: 0.18.2

API Version: v0.18.1

The issue I'm seeing is whenever I specify a list when creating an item, the item doesn't go to that list and just gets added to the default list regardless. e.g. If list A is my default list and B is another list, and I create the item Do this #B it will just add the item Do this to list A and nothing to list B. Other "Quick Add Magic" works fine (e.g. specifying the time) but this aspect does not.

Change Item List Easily

It's quite a few clicks to move an item from one list to another. My ideal workflow is to put everything to a default list, then be able to click and drag that item into a new list, most likely in the sidebar.

Does this make sense? Can post screenshots if it would help explain

[FR] Option to add subtask from within task details pannel

Currently it seems to be only possible to add a 'subtask' relation for existing tasks using the 'add task relations' option.
However it would be a great improvement to be able to add such a subtask from the same menu as well, if a task with the provided name does not already exist.

nginx proxy manager configuration

Hi,

I have running a nginx proxy manager instance in docker.
Now I want to configure vikunja with nginx proxy manager.

The vikunja instance in available from the WAN. Just the login failed: Network Error

// 20211005000721
// http://192.168.178.15:3456/api/v1/login

{
  "message": "missing or malformed jwt"
}

In npm I set the domain name with
Scheme http
Forward Hostname / IP: 192.168.178.15
Forward Port: 10002
SSL Certificate
No Advanced configuration

docker-compose von vikunja:

version: '3'

services:
  db:
    image: mariadb:10
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    environment:
      MYSQL_ROOT_PASSWORD: supersecret
      MYSQL_USER: vikunja
      MYSQL_PASSWORD: secret
      MYSQL_DATABASE: vikunja
    volumes:
      - ./db:/var/lib/mysql
    restart: unless-stopped
  api:
    image: vikunja/api
    environment:
      VIKUNJA_DATABASE_HOST: db
      VIKUNJA_DATABASE_PASSWORD: secret
      VIKUNJA_DATABASE_TYPE: mysql
      VIKUNJA_DATABASE_USER: vikunja
      VIKUNJA_DATABASE_DATABASE: vikunja
    ports:
      - 3456:3456
    volumes:
      - ./files:/app/vikunja/files
    depends_on:
      - db
    restart: unless-stopped
  frontend:
    image: vikunja/frontend:unstable
    ports:
      - 10002:80
    environment:
      VIKUNJA_API_URL: http://192.168.178.15:3456/api/v1/
    restart: unless-stopped

Does anyone have a proxy configuration for npm?

Support LDAP authentication for users

Hi,

I wanted to request LDAP capability be added to your roadmap to link with the Vikunja user database.

This ideal for an organization with >5 people to share / collaborate on tasks which is an awesome capability of Vikunja. Duplicating users/passwords or keeping this in sync with a central database always becomes problematic, LDAP / ActiveDirectory is very mature and works well for this.

Special characters in VIKUNJA_DATABASE_PASSWORD

I am trying to deploy via docker-compose the vikunja/api image, using as database PostgreSQL.
When the VIKUNJA_DATABASE_PASSWORD environment variable contains any special character like:

  • #
  • $
  • !
  • @

the deployment fails with the following error: pq: password authentication failed for user "<my_database_user>" usermod: no changes.
Only if i remove every special character the deployment suceeds.
I also tried escaping the password but nothing changed. A tool you can use for escaping the password can be found here.
Below you can find an example of the docker-compose.yml i tried:

vikunja_api:
  image: "vikunja/api:latest"
  container_name: "vikunja_api"
  restart: "unless-stopped"
  networks:
    - "public"
    - "local"
  ports:
    - "${VIKUNJA_API_PORT?Variable not set}:${VIKUNJA_API_PORT?Variable not set}"
  depends_on:
    - "postgresql"
  environment:
    - "VIKUNJA_DATABASE_TYPE=${VIKUNJA_DATABASE_TYPE?Variable not set}"
    - "VIKUNJA_DATABASE_HOST=${POSTGRESQL_SERVER?Variable not set}:${POSTGRESQL_PORT?Variable not set}"
    # Escape special charactes in passwords using the following tool: https://www.urlencoder.org/.
    - "VIKUNJA_DATABASE_PASSWORD=${VIKUNJA_DATABASE_ESCAPED_PASSWORD?Variable not set}"
    - "VIKUNJA_DATABASE_USER=${VIKUNJA_DATABASE_USER?Variable not set}"
    - "VIKUNJA_DATABASE_DATABASE=${VIKUNJA_DATABASE?Variable not set}"
    - "VIKUNJA_SERVICE_ENABLEREGISTRATION=${VIKUNJA_API_ENABLE_REGISTRATION?Variable not set}"
    - "VIKUNJA_SERVICE_TIMEZONE=${DOCKER_TIMEZONE?Variable not set}"
    - "PUID=${DOCKER_USER_UID?Variable not set}"
    - "PGID=${DOCKER_USER_UID?Variable not set}"
    - "VIKUNJA_FIRST_CHILD=${VIKUNJA_FIRST_CHILD?Variable not set}"
  volumes:
    - "vikunja_api_data:/app/vikunja/files"
  labels:
    - "traefik.enable=true"
    - "traefik.http.routers.vikunja_api.rule=Host(`${VIKUNJA_API_HOST?Variable not set}`) && PathPrefix(`/api/v1`, `/dav/`, `/.well-known/`)"
    - "traefik.http.routers.vikunja_api.service=vikunja_api"
    - "traefik.http.routers.vikunja_api.tls=true"
    - "traefik.http.routers.vikunja_api.entrypoints=web_secure"
    - "traefik.http.services.vikunja_api.loadbalancer.server.port=${VIKUNJA_API_PORT?Variable not set}"

How should i face this problem and proceed with the deployment?
Thank you in advance.

Deploy in context-path instead of /

Hello,

I need to deploy Vikunja frontend in /vikunja context and I failed to make it work.
It seems the plugin used should support it: vite-pwa/vite-plugin-pwa#4 so I tried adding base: '/vikunja' in both build section and plugins.VitePWA but after building the resulting index.html always references assets with absolute path on /.

Any idea ?

Regards.

Receive emails on actions to cards

Problem: When assigning a card to a user that works well, however when that user does something on a card, a comment, adds a new sub-task; there is no notification at all that it has transpired.

As a result, we have users commenting on issues and it goes un-noticed for weeks on end. Is there a way to enable notification via email on these types of actions?

Emails work well for the reminder emails, but there is nothing for actual actions that take place.

Edit: i would have commented on the gitea repo, but I can't get the email confirmation to actually get sent to me to create an account.

Authentication of API for external use

Hello,

I'd like to use the Vikunja api outside of the UI. I'm having problems with authentication though. So far, what I've done is copy the Authorization token via the chrome inspector... I'm planning to write a cron job through code with the vikunja data (Tasks, etc.) to post them on a slack thread regularly. I haven't ready anything on the api documentation that could solve this problem...

Thanks!

Filter bar scroll bug

image

Steps to reproduce:

  1. Navigate to any any List, Gaant, Table or Kanban screen
  2. Click filter bar
  3. The entire screen itself extends with blank white space

Perhaps the filter bar itself should be only as tall as the page with a scroll?

Task URL for reminders

Hi! I am testing Vikunja and I really like it! How do I configure the URLs for tasks in email notifications? They don't include the domain. I have tried setting the variable VIKUNJA_FRONTEND_URL but it seems to be ignored. Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.