grantcarthew / node-rethinkdb-job-queue

A persistent job or task queue backed by RethinkDB.
https://github.com/grantcarthew/node-rethinkdb-job-queue/wiki
MIT License
157 stars 16 forks source link

rethinkdb-job-queue web front-end / UI #51

Closed grantcarthew closed 6 years ago

grantcarthew commented 7 years ago

I created this issue to open discussion about a web application to allow graphical management and reporting of the queue tables.

I don't have the time to build this project however would love to. If we can get something going that would be great.

People who have shown interest:

I am not going to be building this, however if I was I would want to use some of the following technologies as a suggestion:

Web Application Backend

I have used Express a lot however I think I would want to give hapi a try for this project.

Client Front-End Framework

Vue.js is probably the better choice here because it is simple. More importantly I would not use Angular.

TomKaltz commented 7 years ago

+1 for Express and Vue.js. I can help add features if someone wants to set up the base of the project.

sagivf commented 7 years ago

Id be happy to do this or help - which ever is preferred.

Regarding the technologies i'm OK with anything but here are my thoughts:

Web Application Backend:

koa is mostly superior to express, it's similar with better error handling and async support. Haven't used hapi - might be fun to check out but i'm pretty content with koa.

Client Front-End Framework:

My knowledge is in Angular(2), but I don't mind giving Vue.js or React a try. Aurelia sounds a little to fringe.

If we were to go with angular2 and koa I could get it going pretty fast. But again I'm up to almost anything.

grantcarthew commented 7 years ago

Let's centralize the design guys.

I have create a collaborative document here: ~https://github.com/grantcarthew/collaboration/blob/master/rethinkdb-job-queue-ui.md~ https://github.com/grantcarthew/rjq-ui-design

@sagivf and @TomKaltz are collaborators for that document now. If anyone else wants to have input please ask here.

Just edit the document in the browser guys.

chrisabrams commented 7 years ago

@grantcarthew I'd be happy to join this conversation as we are also starting a similar conversation on the rethinkdb admin UI: re-writing it.

TomKaltz commented 7 years ago

@grantcarthew shouldn't you just start a new repo for the UI and then we can use issues for discussion/feature requests. We could also perhaps use project management feature of github. Let me know what you think.

sagivf commented 7 years ago

@grantcarthew A couple of small things: 1) How should we approach the document? Just fill it out or work with pull requests? What about the questions that you asked there, just add a response?

2) I've given Vue a quick look and tough I'm fine with using it, it seems a lot like angular2. Why where you against angular? Does vue have a clear advantage to angular? It doesn't seem that much simpler and I think angular has a few advantages here: larger developer base, battle tested and has had a lot of investment. Generally speaking these type of dashboard like apps seem to me like a clear win for angular as there will most probably not be any use cases for custom behavior where a big framework like angular can get in the way.

Again I don't mind either way and if you or @TomKaltz don't want angular that's fine, but for me it would be faster and I don't see (at least at this point) any winning reason for vue.

grantcarthew commented 7 years ago

See the newly named project with issues guys.

https://github.com/grantcarthew/rjq-ui-design

grantcarthew commented 7 years ago

Update: @sagivf has started work on both the UI and API. rjq-api rjq-api

I noticed you are using Koa in the API stub though @sagivf.

Have you seen Swagger? I only found out about it this week. Sound like an interesting project based on the OpenAPI Specification.

Also, yesterday I had a play with Electron for the first time. It's awesome. If the API project gets completed it would be easy to create a cross platform rich desktop client using Electron.

sagivf commented 7 years ago

Hey @grantcarthew, So the thing is I thought while i'm the only one working on it, I would go with what I'm comfortable with, should someone become a full contributor I would have no problem in moving to express or anything else, it's a pretty small difference.

It would be great if we were to make this into a plugin that would easily be used as middleware in both koa and express kind of like https://github.com/moudy/agenda-ui which you can easily integrate into an existing server. For know a stand alone server is faster and simpler to develop but we could easily refactor it later.

Regarding Swagger, never tried it, sounds like something for bigger projects. Electron is super cool and we could easily just port rjq-ui into it.

I've been overloaded lately with new technologies and learning, so I prefer avoiding anything new for a short while.

grantcarthew commented 7 years ago

You know, the agenda-ui project is well structured. Why don't you just clone that?

Also, if you find you are writing extra code for something that should be within rethinkdb-job-queue, raise an issue and we will put it in. Any extra API that would support the Web API or UI would be well worth it upon review.

sagivf commented 7 years ago

So I have good news. I created two new repos and released to npm: https://github.com/sagivf/rjq-api-koa - middleware for koa https://github.com/sagivf/rjq-api-exprss - middleware for express https://github.com/sagivf/rjq-api - contains most the functionality.

I have also deployed this to heroku:

Next up:

@grantcarthew I needed and api for geating job details, I currently just query it directly https://github.com/sagivf/rjq-api/blob/master/index.js#L50. Not sure this needs to go into the main project, lets revisit it later.

Feel free to let me know what you guys think.

grantcarthew commented 7 years ago

That's great work @sagivf

The hosted app is a little uninteresting with no jobs. Could make a few jobs with timeout processes that just keep adding jobs.

It's not important though. Gets across the idea.

Lots of work to do. Great start.

sagivf commented 6 years ago

Hey guys. Just wanted to let you know I put in some more work. @rjq-ui now has a simple standalone option, and better configuration. I've added some more functionality to the Jobs description. Still a lot of work on making it look nicer, adding functionality and more mock data, but it's getting there. If anyone has specific ideas, let me know.

disarticulate commented 6 years ago

added a pull request @grantcarthew @sagivf https://github.com/sagivf/rjq-ui/pull/8

with docker/docker-compose to simulate a random pub/sub environment.

grantcarthew commented 6 years ago

Closing this. @sagivf has done a great job.