Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make Waqti a client for Github Projects, Gitlab Boards, and/or Wekan #112

Open
antonizoon opened this issue Oct 27, 2019 · 12 comments
Open

Comments

@antonizoon
Copy link

antonizoon commented Oct 27, 2019

I've been browsing around and have not yet seen a Kanban board system that has a proper Android app, which has been the key thing forcing me to stick with proprietary Trello.

This is when I encountered your app that does basically all the basics client-side to have a proper mobile Kanban board implementation.

If we are able to implement API integration with the popular Kanban board competitors to Trello that lack mobile apps, such as Github Projects (as you are using right now), Gitlab Boards, or the Trello clone Wekan, it would be a tremendous improvement in my life as well as for many others. I might be able to help a bit on this since I have skills with API consumption.

Also when it comes to taking in Trello exported data, i think it can export to JSON so a migration might be easier than you think?

@basshelal
Copy link
Owner

Hi, thanks for stopping by, this is mostly my monolith side project, so I appreciate you reading through it and contributing.

So far Waqti only fully offers the bare minimum features, I'm in the middle of developing A LOT of new stuff but feature completion is something I'm still getting good at (I'm good at developing stuff to like 80% completion and then moving to the next issue lol).

I've definitely considered some kind of Trello migration as in #28 , the main issue I have had with that is the API, as well as not being able to offer all features that Trello offers because I haven't done or finished them fully. So currently a Trello migration for users wouldn't be beneficial as they could lose data such as labels and due dates etc. Not physically lose them, but it's just I haven't figured out a proper mapping for some features, nor have I thought of how to set up the UI for them.

I never really thought about making it a client. Unfortunately I don't think that's something I'd like Waqti to do, my plan from the beginning was always to make Waqti independent of other systems because its aim is to be a personal time management Kanban , the only integration would be in the form of transferring your data over to Waqti and then using it separately on Waqti.

However I would definitely be up for making a fork of Waqti that would be a client for popular Kanban services like Trello and GitHub. The base code for a lot of the UI is already here and currently I'm working on a huge improvement to the dragging implementation that should make things much nicer and cleaner (the current one works, but not perfectly). If all goes well, I'll try and release the Drag implementation and Board Implementation as a library for others to use. I would be willing to help on such a project.

But if this isn't good enough, Waqti is MIT licensed, so really, I give you permission to do whatever you want with it in a fork, credit to me would be appreciated as I could use the reputation but yeah you can do whatever you want and I could help too.

Thanks

@antonizoon
Copy link
Author

I would like to try to help with such a fork whenever we're ready to start, having this base app even with just description edit is already most of the way there in getting past some of the most difficult parts (for me anyway, I've never been good at UI work). I would probably have to actually learn Kotlin to help out, but my preferred language is Python and I do have years of experience interacting with APIs, and a decade of experience in Java (but have avoided it for its frustrations since), so I guess Kotlin ranks above Java in that regard. How do your data storage functions work and where is data being stored in the app?

For interaction with the Gitlab Projects API, which is probably of great use to yourself as you already seem to be using Gitlab Projects a lot in this project, perhaps see these apps for inspiration:

https://github.com/joanaestafanell/gh-kanban

https://github.com/stefan-niedermann/nextcloud-deck

As for dragging, if you have not seen it yet here are some other Android base drag implementations to learn from or compete with.

https://github.com/LinXueyuanStdio/DragBoardView

https://github.com/jakebonk/BoardView

@basshelal
Copy link
Owner

The language won't be the hard part, Kotlin is easy to use (difficult to master). It's Android that I constantly find myself fighting with and struggling with, things are getting better but still there's calls to ancient code and weird different API styles.

I've seen essentially every BoardView library there is, none, perfectly fit my needs when I was developing the BoardView implementation, so I just made one myself, it's not perfect but it works well and I like having full control of it as the BoardView is the main part of the app anyway.

I'm up for helping you with this, but time is an issue with me, I'm doing a Master's degree full time right now and I'm trying to finish the incomplete features of Waqti as much as possible before the workload gets tough soon in university so that I can have a much better version of the app before I look for Android jobs.

@antonizoon
Copy link
Author

antonizoon commented Oct 27, 2019

Alright then keep up the good work finishing up the features, but also do your best to document the design and possible improvements so I or others could have a foothold in bringing it forward.

I notice that you use issues a lot to note down which is really good to see for prospective employers, but it forms more of a fleeting journal where insights can be brought into the Wiki in this repository, for more solid developer and user documentation. I wonder if there are tasks I could assist with to reduce the workload?

@basshelal
Copy link
Owner

Yeah, I'll do my best in cleaning things up and making it easy for others to read and use, it's quite understandable and somewhat documented and tested in the backend, but the front end code has become a little messy and there are a lot of redundancies everywhere so I'll work on that.

Yeah I thought of making a Wiki but then I thought it would cost too much time and honestly things have changed a lot and too quickly making a possible wiki possibly out of date pretty quickly, the notes and documentation I've made from about 6 months or so ago are already out of date because of design changes that I keep doing. The project has definitely grown a little too much for my time and abilities alone but it's been an excellent learning tool and I thoroughly enjoy it.

In terms of how you could help, I'm not too sure, I've recently been heavily considering making Waqti multiplatfom, so that would mean changing the Database to use Firebase Firestore and making a backend endpoint using Google Cloud App Engine. Then making a front end web app using something like Vue or React (preferably Vue since it's what's cool and much easier). I have little experience in any of these, especially Vue (and frontend web development in general) and it would make maintenance a nightmare because any new features would have to be implemented everywhere but it would honestly make Waqti a genuinely viable replacement and competitor to Trello for personal Kanban (single contributor). I know it's a huge idea but I like to remain ambitious with this project. If you could help in any way with something like that I would be very grateful but you don't have to, I might never do it but it would be a dream of mine to do something like that. Other than that I'm not too sure what you could help with, maybe the Trello migration issue? #28 It's something I'd really like but I won't do it anytime soon so maybe you could get some of the base code done so that I can more quickly use it and get that feature done when the time comes. But you're welcome to browse around and see if there's an issue you want to help with or if you have any other ideas, I'm flexible and open to new suggestions.

Many thanks

@antonizoon
Copy link
Author

antonizoon commented Oct 30, 2019

Given how you're already under time constraints, I would strongly discourage having to build and maintain a server backend for the app.

We should focus on the client side Android app, both local data and API interaction. That fills the real need from all the users of a missing mobile app for Github Projects, Gitlab Boards, Restyaboard, or most of all the open source Wekan, most of which are already viable replacements for Trello and Wekan literally is a clone. They are all backed by decent communities or funded businesses, and most of them can be self hosted, but all have only one flaw in common: they don't have a native mobile app that displays kanban boards, they don't have local caching (it could be something like git where changes accumulate offline and are then pushed out) or solely local functionality, and JavaScript can really only go so far.

Anyway let's get down to the business, how do you currently store and manipulate and have change tracking of the app data? Is it sqlite, NoSQL or JSON flat files? I would prefer some sort of JSON store, although it may seem lame to store JSON in SQLite it actually works quite well, and will help facilitate API communication. In particular, Wekan and Trello (via PostgreSQL JSONB) do think of their cards as JSON key value stores where new card attributes can be added anytime and nested without linking tables. And I suppose if you're talking about Firebase I guess you've bought into NoSQL already so I would expect some sort of JSON as I am used to in Python, but I never had a good experience working with it in Java.

@basshelal
Copy link
Owner

You're right, still I like to remain ambitious. Maybe I'll start doing that after I finish my Master's degree. We'll see, God willing.

I use ObjectBox on the persistence side, it's a NoSQL Object Database that does absolute wonders! It's better and faster and easier than SQLite (and Room), I highly recommend it.

It does have limitations, namely it only supports a few types. An Entity can only be persisted if all its variables can also be persisted, so that means either they have @Entity or they have some kind of Converter @Convert that converts the type to a supported type so what I end up doing is converting my custom types into JSON Strings and then have ObjectBox persist that. For that I use GSON but will switch to Moshi soon. It's honestly very easy and smooth.

See Task.kt for more. It's what represents a basic Task in Waqti. Currently Waqti has 11 Task Properties such as Time, Deadline, Description etc, all of these are custom types that are converted into JSON strings and then kept that way in ObjectBox. Task.kt is well documented (even though the documentation is a little old) so it's a great place to start understanding the basic parts of Waqti. After that I'd reccomend the backend package which contains all the Persistence stuff and Collections such as Boards and TaskLists, they too are Custom Types converted into JSON strings and stored in ObjectBox, they contain only IDs, so a TaskList doesn't persist the contents of itself just the IDs of its Tasks, which themselves are stored seperately (similar to how you'd do it in a SQL table with foreign keys and that).

I also use a Cache which is like an in-memory Database to quickly store and access entities, it's not perfect though and I'm currently rethinking its purpose so don't mind it too much.

The entire backend package is generally well documented and relatively straight forward to understand, I also have a lot of tests for it as well (200+Unit Tests) so the backend is well written, it will change and improve but it's generally quite stable as far as I can tell.

Peace to you :)

@88fingerslukee
Copy link

I've been watching wekan for a long time and the only reason I don't use it to replace Trello is the lack of an Android app. How can we push this integration forward? Waqti seems to be the most promising possiblity. I'd love for this to happen.

@antonizoon
Copy link
Author

I wish I could put more work into this but I can't and it looks like this guy has run out of time. Try to spread the word because I'm sure we can find more Kotlin developers that have had the exact same needs.

@basshelal
Copy link
Owner

@antonizoon @88fingerslukee I'm glad you like my little project here. I wish I could help more but life happens and other obligations have taken precedence over my personal side projects the past few months. Still though I don't want to abandon this and will try my best to make the project more approachable for others with documentation and comments.
I honestly didn't think others would find interest in my little niche project I've used mainly as a tool to learn Android but I'm glad you like it.
Thanks again for both of y'alls interest in the project, it means a lot to a beginner like myself.

@xet7
Copy link

xet7 commented May 11, 2020

Next version of Wekan will have install as PWA icon that launces as fullscreen app and if you then install Wekan Server to Android, then you have Wekan app at Android that stores all data to Android phone. Well, that is, if you really think it's a good idea to store important data to phone that can get lost or broken.

Wekan can import boards from Trello, with most of it's data:

  • Cards
  • Checklists
  • Labels
  • Attachments
  • Votes
  • Etc something other.

Wekan does not have code or graphics from Trello. UI has differences. Wekan has some features that Trello does not have (like Swimlanes) and Trello has some features Wekan does not have.

I just found this Waqti. Is there any way to get some of this code running iOS, like iPhone or iPad?

@antonizoon
Copy link
Author

Try some of this to port Kotlin apps: #112

I can say for sure that my original use cases for this app have totally evaporated since we are mostly inside all day and there's no subway commute to cut off internet connection. The Gitlab Webapp is also not half bad either.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants