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

Time Tracking with a Team #21

Open
yorrd opened this issue Apr 28, 2018 · 12 comments
Open

Time Tracking with a Team #21

yorrd opened this issue Apr 28, 2018 · 12 comments

Comments

@yorrd
Copy link

yorrd commented Apr 28, 2018

Hi, thanks for this awesome software, we just like you want to get away from wakatime.
Is there a way to have multiple members on the same server? We're 3 people and currently reporting into the same server. This sucks because there is no way to split the data. What do you suggest? Running two servers won't work because the IP is already taken.

Maybe we could use multiple tokens for this?

Thanks a lot!
Yorrd

@hangxingliu
Copy link
Owner

I will reply you about team tracking details later because my current deadline is tomorrow.

Now, You can just set different computer id for different members for reporting in total.

And current server API could split data but front end report split by computer/member has been made yet.

P.s.

Multiple tokens are not support now.

@yorrd
Copy link
Author

yorrd commented May 1, 2018

@hangxingliu how much work do you expect would that be to allow for multiple users connecting to the same server?

@hangxingliu
Copy link
Owner

multiple users connect to same server is easy. but split data follow by different user/computer id in report page is difficult (because page UI and logic need changed)

I think I will create a new branch 0.7.0 for multiple token feature in server repository. And this feature could be use around 10th May.

@hangxingliu
Copy link
Owner

@yorrd A small survey:

  1. How do you launch server side program on your server (npm start/pm2/forever ...)
  2. Do you met some server side bug util now (dirty database file or other)
  3. Do you think is add token-file future a good idea?

The token-file future in my brain now is like following:

  1. you can launch server side program by optional argument --token-file ${fileName} to enable multi-token future.
  2. token-file is a json file to descripe token array, and which token should upload data with special computerId or project path.

@yorrd
Copy link
Author

yorrd commented May 7, 2018

@hangxingliu thanks for getting back to me on this!

  1. we use pm2 for process management
  2. no, we have not yet had any trouble on the server! Haven't done too much though, it's just running for the past two weeks day after day without interruption :)
  3. do you mean having a file which contains all possible tokens? What about just accepting anything and then storing the data with that token. Then you could aggregate all existing tokens from the data which was submitted to the database

makes complete sense! Only thing I'm wondering: what do you need the project path in the token file for?

Thanks for putting so much effort into this!

@hangxingliu
Copy link
Owner

@yorrd maybe wrong grammar in my reply lead to meaning be misunderstood.

Actually, why i add token into server side program is used for keeping security. Because your server maybe on the public network (everyone can visit it by ip or hostname), so if the server side program allow upload tracking data without correct token. then everyone included hacker could upload bad data.

And the reason why I allow token in token-file associate with project or computerId is used for limiting role of token, In my mind now, the token file will looks like this:

{
	"token": [
		{
			"remark": "Token for Mike",
			"token": "mike-has-a-cat",
			"computerId": "MikeComputer"
		}, {
			"remark": "Token for Nick with project A",
			"token": "nick-works-hard-in-project-A",
			"computerId": ["NickComputer", "NickLaptop"],
			"project": "projectA"
		}, {
			"remark": "Token for myself",
			"token": "a-token-can-upload-everything"
		}
	]
}

@hangxingliu
Copy link
Owner

@yorrd Actually, I have little doubt about point 3 of your reply:

What about just accepting anything and then storing the data with that token. Then you could aggregate all existing tokens from the data which was submitted to the database

Do you means allow everyone upload data with any token. and split tracking data by different token?


P.s.

Thanks for your result of survey. and by the way, there maybe a bug in multi-instances launched by pm2 (Dirty database file be created, and I will fix it in the future).

And if you find other bug please send issue to this project, because I will refactory this old project for more useful and effective.

@yorrd
Copy link
Author

yorrd commented May 10, 2018

Okay, I think I know what you're going at now. So from the multi-user perspective you would have

  • tokens: just used for authorization
  • computerIDs: used to separate the different machines you have
  • users would not exist but rather computer IDs. So when a user works on two different workstations, he would have to add his coding times manually, right?

So to achieve multi-user capabilities, this is more of a frontend-question? If I understand correctly, the current frontend would have to be changed in a way to allow filtering and comparing by computerId for each graph or something along these lines, right?

@hangxingliu
Copy link
Owner

Yeah, The frontend pages would be changed. And multi cimputerId could be associated.

And I am working on server side project. So you can sustained attention and give me some feedback.

@hangxingliu
Copy link
Owner

@yorrd Latest commit in server side repo support token file. And --token-file cli argument could set special token. and server program will load default token file in home directory: $HOME/.coding-tracker-token.json

P.s.

And frontend modifications and other optimize I will update in recent days. And you can report bug to me if you are still using it.

@yorrd
Copy link
Author

yorrd commented May 27, 2018

@hangxingliu sorry for the late reply, things got busy here.

First of all, thank you very much, the system seems to work perfectly. I have done preliminary testing and the permission system works very well! I was able to restrict reports via token, upload from different machines via token, etc etc. Very nice :) If we encounter bugs in the future, I'll let you know!

Now the next question is about the frontend. Are you working on this? Do you need help with anything specific? Looking forward to the future, we will possibly even use this in a research paper :)

@hangxingliu
Copy link
Owner

Yes, I am still developing this extension and server. But I have a front-end work too. So the development progress will not very fast.

And if you want to this help the server side development, it maybe a good opportunity now, Because I am thinking about refactory server side front-end.

I want to refactory it step by step, and base on React/Preact technology for easy maintain by anyone. (by the way, current front-end be created long time ago, it is not friendly for development by other people)


And if you want to know/join somethings else, you can also comment in here or my Email hangxingliu@gmail.com (You can create a Discord channel for discuss development about this extension if you use Discord)

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

2 participants