Timetracker project

ReactJS | ExpressJS | NodeJS | SASS | PostgreSQL

An open source NodeJS & ReactJS project for tracking the time of hourly workers.

I built this application because it seems like a need for many small businesses with hourly workers — a way to quickly and easily assign tasks and allow workers to receive the project and location information they need, as well as clock in and out.

Although such software exists, I was unable to find an open source NodeJS version, so I decided to create one to better understand the process of building it in NodeJS & ReactJS.

Try using both to side-by-side to see real time clocking in/out and task assignment in action, or scroll down for some visuals.

Demo employee user dashboard Demo admin user dashboard

Patrick Meaney — Full Stack Developer — patrick.wm.meaney@gmail.com

Design

Goals for user interface

My goal was to design the application with minimalism in mind.

• The user interface is based on opening and closing of viewports, which are hidden within and selected from the "Dashboard" menu button.

• Each viewport is simply a box with a close button in the upper right corner. The user can open as many viewports as they want in order to create the "dashboard" or set of viewports they want to see.

• The viewports also help to maintain a sense of visually modularity in the application. This makes it easy to introduce new viewports, each with their own independent functionality, such as data charts, tabular data, or other data visualizations or business processes such as project quotes.

The main design frameworks used are bulma and bootstrap.

Purpose and ideas for expansion

The idea behind this project is simply to provide various modules for providing business data, to small businesses. In this initial version of the project, the administrator can view timesheets on a table and a map, add new database rows for locations, projects, and employee activities, as well as edit and delete data. The timesheets time and map are updated in real time whenever an employee clocks in or out.

An idea for expansion of this project would be to incorporate other business applications with modules alongside the modules of this employee tracking system. One example I've though about is a basic property management application— with the system provided here, an administrator can track the work of their maintenance technicians, gardeners, and property managers for example. With this foundation, additional modules could be added for setting up customer accounts (perhaps even do so with an API for a CRM, or shared DB), and monitoring rental payments, as well as a dashboard for tenants to view and pay their rent, and a scheduling system so that customers can schedule maintenance visits.

Other future modules might include an internal company news feed, a messaging system for communication about projects, charts to display worktime logged, expense tracking, or even video/IoT-related modules such as receipt scanning, warehouse monitoring, or equipment scanning.

Next steps

I will be turning this project into a basic SaaS (multi-tenant monthly subscription app), which will involve a few more steps, including:

• Admin user account layer for multi-tenant access — I'll create an "accounts" table, and use its ID as a prefix on the other tables in the system. In this way, each account will have its own set of database tables, keeping it separate from other accounts (the "timesheets" table becomes "account2_timesheets" for admin account number 2, for example).

• Brandable-pages — the account holder will be able to upload their logo, select brand colors to use as website main colors, and set up a few pages, such as a public facing landing page about the company, a list of jobs available to apply to, and private company pages for internal company information. From this area, employees will login to their accounts, within the administrator company's account

• An email verification step for all users — this will be a simple url query, set up with a hash code and user email address to be queried and matched against the database.

• A dashboard for managers — A cross between the employee and admin dashboards, where project managers can assign activities to and communicate with their team, as well as generate quotes for customers.

• A subscription system

• A flashy promo page

Once all of that is done, I can add on new business modules.


Admin Dashboard

Section: Timesheet Tracker

  • Real-time display of new clockin/clock out events

  • Table and map view (clicking on table displays marker)

  • Timerange search, with default value set to the past two weeks

  • UI Slider allows user to adjust viewport width of table or map shown

Section: Data creation via forms

  • Allows user to create new data in selected table

  • Autopopulated dropdown selector shows tables for which new data can be created

  • Various autopopulated UI elements within forms, such as tables or dropdown selectors

  • On creation of new activity, the assigned employee receives the activity in their task list in real-time

Section: Data administration— editing and deleting data

  • User double clicks to edit data

  • Simply select row and click 'delete' to remove data

  • Easy download of csv file for any table, such as timesheets

Section: View submitted resume documents and job applicant data

  • View applicant resume in browser or download

Section: External API interaction, such as GPS lookup

  • Address inputs are autocomplated and provide GPS coordinate lookup via google maps API


Employee Dashboard

Section: Authentication

  • Registration / Login / Logout system

  • Passwords salted & hashed with bcrypt

  • User type & password comparison check on login

Section: Task list

  • Visual timeline of upcoming tasks updated in real time

  • Clocking in & out, with real-time display in Admin timesheet table & map

  • Project information including map of location

  • Employees have ability to create tasks for themselves

Section: User/Employee Profile

  • Autocompletion of address via google maps API

  • Photo upload, with preview

  • Resume/document upload, with format check validation


Technology stack

Programming Languages & Tools
  • linux
  • PostgreSQL
  • nginx

  • Javascript
  • ReactJS
  • NodeJS
  • npm
  • babel
  • webpack

  • html
  • CSS
  • Sass
  • bulma
  • bootstrap

  • VS Code
  • github
  • git