Giter Club home page Giter Club logo

react-track's Introduction

react-track

A simple timetracking tool with reactjs and lowdb.

Motivation

A customer of mine was looking for a very simple timetracking application which runs in the web and is responsive on mobile. His idea was that every employee could book and check their times with their mobile device.

Since we couldn't find a software with modern technology and a effortable price we created our own tool.

Stack

This lists the essential technology stack the application uses.

Frontend

  • Typescript Javascript that scales (ES++ with types)
  • React view layer
  • reactstrap bootstrap 4 components for react
  • bootstraps bootstrap 4 css
  • recharts chart library built with React and D3
  • apollo-client full featured GraphQL client
  • moment Parse, validate, manipulate, and display dates and times in JavaScript.

Backend

  • Typescript Javascript that scales (ES++ with types)
  • expressJS Fast, unopinionated, minimalist web framework for node
  • apollo-server-express production ready graphql server for express
  • lowdb lowdb is a small local JSON database powered by Lodash
  • moment Parse, validate, manipulate, and display dates and times in JavaScript.

Tool-Chain

Formatting, Linter

Testing

  • Jest for testing, mocking and coverage report
  • ts-jest typescript preprocessor for Jest
  • enzyme create unit tests for react

Development

Script jobs

npm run / yarn
start:web+server ------ start web app and server
test ------------------ runs tests with coverage reports
build-web ------------- build web app
build-server ---------- build server app

Documentation

01 Create User

alt text

Login with admin-pw qwer1234

alt text

  • Name: Name of the user (used for login)
  • Code: Code / pw of the user (used for login)
  • Role: Role of the user. there are three roles:
    • Admin: Can create / update / delete other users
    • User: Active user, allowed to login an track times
    • Gast: Inactive user
  • Startdate: Date when the User starts (will be used for calculating the yearly saldo)

alt text

  • Set how many vacation days the user has for the selected year.

alt text

  • Define the yearly saldo in hours with which the user starts. Can be positive or negative. We used this feature for migrating from our old timetracking app, we also need it to switch in another year. E.g. if someone has plus hours or minus hours.

alt text

  • Define the worktime of the user, means when is he allowed to work. Set starttime, endtime and the saldo he has to achieve. If he is allowed to work 24h simply leave 0 in both fields.

  • There are two safe buttons, you can save only for the current user or for all users.

  • The application has two timestamps a billed time (worktimes) and the actual time. If a user is allowed to start at 9am but he already started at 7am the actual time was 7am but the billed time was 9am.

  • With the third button you can re-write the billed time with the actual time if you change the worktimes afterwards.

02 Settings

alt text

Breaks

  • You can define automatic breaks, basically you can say after X hours the application substracts Y minutes from the worked time. By adding a break.

Worktime Settings

  • You can define if Public Holidays, School, Vacation, Illness is paid or not paid time.

Public Holidays

  • Define public holidays, currently you can load german public holidays automaticall by clicking the refresh icon.

03 Users

alt text

Buttons on the user-row from left to right:

  • Creates printable report for selected user
  • Holiday module
  • Booking Overview
  • Edit user
  • Delete user

On the left bottom side there is:

  • Create user
  • Create printable report for all users

04 Time Tracking

alt text

Simply tab/click to create a booking. The booking will switch between come and go

05 Report

alt text

You can create a printable report for the selected user or for all users on the users overview page (second tab).

To print this report you can either click the print icon or go to your browsers print menu.

06 Holiday Module

alt text

On the left applet you can create vacation days, illnesses and school days.

alt text

The right applet shows the same public holiday applet then in the settings.

07 Booking Details

alt text

tbd

react-track's People

Contributors

firsttris avatar viciteufel avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

react-track's Issues

app version

code

  • app version in header
  • get version from package.json

devOps (manuel or automatic?)

  • new tag
  • increase version in package.json
  • changelog

license server

-concept: 1 user free for testing
-publish app in docker hub
-add php license server to shared hosting provider (one.com)
-implement ability to enter license in settings

project license?

-which license to choose?
-commercial project with open code.

improve UI/UX

  • Split SettingsPage into multiple pages (Dropdown for main menu)
  • UserPage: better notification when user is saved:
    • hit save button
    • disable save button & edit fields / show spinner instead of button
    • show notification: saved
    • hide notification once editing starts again
  • CreateUser Page: disable tabs until user is saved
  • EvaluationPage: selected year is not shown in Dropdown (shows always current year)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.