Devember 2021 - Punch Clock Web App

This is a most excellent after action report. I am not big on web development let alone front-end and back-end stuff. I have learned some new things along the way and dare I say have been tempted to try to code a project like this.

I am big on the concept of “dog fooding”. If I make something that is useful to me, then it could be useful to others. The only way to develop a better product and answer the end user’s needs is if you actually use it in your day to day practice/business.

Thanks for sharing this journey with me. If I were still hiring people, this would be the exact type of material that I would be looking for in someone’s portfolio.

2 Likes

This is solid dude! I use some kind of OK app on my phone for work. I would love to use this for work and well reading like you showed. Keep it up man!

2 Likes

I could not help myself any longer, having read the entire thread, I could not make it past the Libraries/tools used of the final overview post (I’ll go back to that after this).

When I open this thread I woundered if I should have been checking in on it as it progressed, but I am glad to say I did not need to (I did do it for a few other project, especially later towards the “closure time” and afterwards.

I am glad to say that my initial reservations about the target use of this project were unwarrented, but having seen the conclusion of the project, I would say that they could be applied (eg a clock in timecard for someone on the road) - and mostly that cam down to you realisation of the negative reinforcement color change.

I liked the weekly reports you provided, and I am glad you did not get discourage by any perceived lack of “audience participation”, in the end (like you said) it benefited you to produce a steady flow of results, and for a projects success, that is the most useful thing. The demos help clarify what you were trying to achieve, a nice bonus.

I also like the comment you made about “not over-doing personal project participation”. A lot of developers get burned out by that, and alot of projects fail because of that, especially “single man” projects.

I was glad to see you “bit the bullet” and finally figured out how to change the color scheme, nothing like “nessecity” driving your desire (not to feel like your mouth was full of wiggling toes in this case) - they do say “nessecity is the mother of invention” for a reason

I agree with the judges choice to include this as a finalist in the Devember2021 challenge. I wrote (at length - saome may say too lengthy) about the imapct the seabang project could have. Honestly, I feel the same about this project too (an that brings me to a seperate post).

But what I have been eager to say since about halfway through you project thread is …

2 Likes

Did you test the app from someone elses device or internet endpoint? What are the security reprications of that? Adding a mechanism to default to read only where appropriate, would also side step the need for users and/or authentication.

Did you try (or test) the app through a VPN gateway (where the server is not actually available publically (and therefore cant be hacked - I’m the one with the “butally simple firewall”).

If you have some sort of “read-only” feature as default (on top of some sort of “read-write” device whitelist), you could use (what I call) keyless entry, where you just have to know what the current “key” is, and not a “password” that can be hacked. You can then change the initiator that provides the “key” within the page content. That way you can also change the type of “key” or how the key is presented at will. Without the initiator, you dont even get access to the key, and as the only user, only you know what the key is, where it is, and how to operate it. One you are done in read/write mode, you just remove the initiator, and there is no trace of the “key”

(sorry to be vague and not “show” or “tell” details, but it would defeat the purpose of you impliment an keyless entry).

I totally understand the exponential impact of adding users. I think if you add some thing like I mentioned, you can make the source available publicly, and others can add the “I want to track this thing” parts for you, allowing a “presets” library (maybe?).

I say that, because I believe alot of people (and I dont mean a small “alot of people” - I mean a huge “alot of people” - over time) would use this, especially if they could choose from a “list of things to track”, or for less net interactive based tracking, just add something themselves.

(And maybe this is one of the underlying thoughts of the judges, based on its usefulness, as why your a #devember2021 finalist) this project would allow maintenace and expansion of the public single-user version (available as source), if you got some other “entity” to pay for helping add those additions, whereby they also provide a private multi-user version.

Its just a usefult tool:

  • I can see a company wanting to make it available to 15,000 employees per month (at their leasure).
  • I can see some companies paying dearly for a custom in-house version.
  • I can also see some “granny” tracking her cross-word skills, or her local bingo hall “winning numbers”.
  • I can see little Jenny tracking her “lemonade stand” over the summer break.
  • I can see little Johnny tracking his after school “dog walking business”.
  • (hell) I might even use it to track unfinished project interaction :slight_smile:

Actually, this is the sort of project that would go well on “The Dragons Den”, if you knew what those above 2 paragraphs entailed, you could maintain 100% ownership, while only taking 5-10% of profits.

If you could load a “tracked item” with historical data, then it has the ability to be used for projections as well, or “market trends”.

I am 100% sure (now that you have made it) that someone else will come along with a commercial or free multi-user version (payed for with ads or by selling tracking data), and especially so at this time when a lot of people are force to be at home with the internet.

I am pretty sure there are people in Poland willing to provide enough (backing, accumen, resources, personnel), so you can still do “your thing” without being loaded down with “providing others options they want”.

Anyway, I hope you get alot of use out of it, and expand it as you change your “I would like to track …” focus, and yes I think it would work nicely as a “soft” time-card for “employees & volunteers” etc… (my initial reservations being it would be a “hard” or “strict” version - thanks again for prooving me wrong).

Cheers

Paul

1 Like

Hi everybody, sorry for the radio silence.
I was planning to continue gradually developing this app further, but at this point it basically satisfies all of my needs, so I only do some minor bug fixing and adjustments.

The next logical step would be to setup a multiuser version and open it up to the public.
It would certainly be an interesting chanllenge.
I’ve been working on a list of steps to make it possible.

It would be necessary to:

  • Implement a secure user registration and authentication system
  • Revise to core data model so that users’ data is isolated from one another
  • Implement data isolation in all api endpoints
  • Implement some usage limits to prevent nasty spammers from overwhelming the application
  • Dedicate some portion of my time to the maintenance of the public application
  • Cleanup some of the UI elements (pagination, timezones, better visual feedback when data is edited, etc…)
  • Accessibility
  • Fix loads of tiny janky bugs (I’m currently tolerating them and working around them, but I would feel bad if I exposed other users to them)

I came to the realization that it would unfortunately take more effort than I’m willing to spare in the near future.

I know it’s a bit of a disappointing note, especially since this project has been selected in list of finalists.
I’ll think about continuing it next devember, but I’m not promising anything.

I hope in its current state it can at least serve as inspiration for others to build simple tooling to make meaningful changes in their lives.

1 Like

Did you test the app from someone elses device or internet endpoint? What are the security reprications of that? Adding a mechanism to default to read only where appropriate, would also side step the need for users and/or authentication.

Did you try (or test) the app through a VPN gateway (where the server is not actually available publically

To be completely honest, I haven’t started working on a multi user system apart from some very preliminary planning.
Thanks for the questions though, they seem like useful pointers for further development.
I made note of them and I’ll keep them in mind in the future.

I say that, because I believe alot of people (and I dont mean a small “alot of people” - I mean a huge “alot of people” - over time) would use this, especially if they could choose from a “list of things to track”, or for less net interactive based tracking, just add something themselves.

Thanks, this is very encouraging.

I am 100% sure (now that you have made it) that someone else will come along with a commercial or free multi-user version (payed for with ads or by selling tracking data), and especially so at this time when a lot of people are force to be at home with the internet.

I very deliberately avoided doing research into existing solutions for personal/commercial time tracking before starting this project, but I’m certain that they already exist - mostly as plugins to other applications.

For me at least, the biggest value of this project is that I found a way to regain control of some portion of my spare time.
The application I built for the purpose is secondary.
The technique is more important than the tool.
I wonder if I would feel so strongly about the technique if I had adopted somebody else’s tool, instead of spending so much effort designing and building my own.

This also touches on the thing you mention about the “soft” vs “strict” time tracking as it may be applied in a commercial setting.
Building a tool for punching in and out is relatively straight-forward, but it takes a lot of care to interpret and act on the resulting data in a constructive way.
I worry (as I think you have), that a tool which would encourage some “strict” interpretation would in the end do more harm than good.

1 Like

I meant as a single user. You mentions you tested it various other ways. I do see a single user use case as being useful. That was the basis for the questions, not too convince you “multi-user is a must”, just that certain use cases might come up in the future, and had you considered any potential concerns as a result.

IE atm you could not show any part of your use case on a public computer. Its “safe” to show others on your phone, as long as no ones gets access to it (while its open). It should not be too hard to test various senarios, and/or think of a simple solution that isn’t “multi-user” (or even password) based. Adding multi-user after that would automatically include that level of protection.

Yeah as “part of something else”. Your use case was very specific, with remote resource interaction, which made its use very simple. I think (even if only) you add tracking tasks as you require them, it will increasingly show how other solutions are lacking.

I agree, but I would not overemphisize your personel investment in the code side of things as to contributing to how you feel about it, sure there is a percentage of that, but what you had as a usable app was exactly what you wanted. Your demo’s show a very thourough implimentation of “what could be done”, you could have just left it as a book cover and time tracking (like alot of other solutions would do).

The “strict” & “hard” I was expecting was like that of a vehicle travel log or milage book in a work vehicle, where every second has to be accounted for (something that would end up contributing to the abuse of the user). That was not what you produced, and that simple color change you made and why speaks volumes. I guess my initial expectation is based on my experience with a “punch clock” (and they have never been great).

I would not worry too much about “soft” or “strict”, you did not cut any corners, and there was nothing you left out for your use case (not the same to be said of a lot of other task based time tracking solutions - often paid for). Time tracking is not a new thing, but how you did it is (ie not general, boring, strict or bland) - targeted. This reminds me of the POSIX philosophy, “make it do one thing and do that well”. You are lucky enough to use a foundation that makes it easy to do the same “targeting” fo any future task you might need.

I think if you continue to add tasks as a single user app (with a underlying idea of multi-user somewhere in the future) with the same fullness of effort you did witht he Book Reading, the less likely someone else will want to choose it as as platform for “strict enforcement” - its a karma thing.

And I expect if you chose to add a “clock in - clock out” task, I expect you would impliment it is such a way as you would be happy to use it, and for others to use it (that was my implied feeling in my opening reply - but remember that was not why I was eager to reply).

:slight_smile: