Coder Social home page Coder Social logo

alexgustafsson / timekeep Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 2.72 MB

A simple and private timetracker with data you own. Built with Vue 3 and Typescript

Home Page: https://timekeep.axgn.se

License: MIT License

JavaScript 62.66% Vue 15.21% CSS 20.19% HTML 1.28% Dockerfile 0.34% Shell 0.30%
vue single-page-app progressive-web-app timekeep time-management time-tracker

timekeep's Introduction

Timekeep

A simple timekeeping web app using modern techniques such as modern EcmaScript, Poi (Webpack, Babel etc.) and Vue. Try it live: https://timekeep.axgn.se.

Demo

The UI is heavily inspired by the great work of uixNinja over at https://dribbble.com/shots/8659108-Dashboard-user-interface.

Quickstart

# Clone the repository
git clone https://github.com/AlexGustafsson/timekeep

# Enter the directory
cd timekeep

## Option A:
# Install dependencies
npm install
# Option A 1: Run development server
npm run dev
# Option A 2: Build and run minimal server
npm run build
npm run start

## Option B:
# Build and run using Docker
./docker-build.sh
docker run -it -p 3000:3000 axgn/timekeep

# You can now go to http://localhost:3000 or http://localhost:4000 if you're using the development server

Table of contents

Quickstart
Features
Technology
Development
Disclaimer

Features

  • Stunning dark UI
  • Intuitive user experience for simple timekeeping
  • Keeps track of time spent on projects even when the app is closed
  • Works fully offline with client-side storage
  • Exports data for use with Excel
  • 296kB gzipped

Technology

Poi

Poi is a zero-config bundler built on the top of webpack. By using the buzz word zero-config, it does not mean that there's no config, instead we pre-configurared many things for you. To prevent Poi from becoming too bloated to use, we also introduced some kind of plugin system to make extra features opt-in.

Visit Poi here.

Vue

Vue (pronounced /vjuː/, like view) is a progressive framework for building user interfaces. It is designed from the ground up to be incrementally adoptable, and can easily scale between a library and a framework depending on different use cases. It consists of an approachable core library that focuses on the view layer only, and an ecosystem of supporting libraries that helps you tackle complexity in large Single-Page Applications.

Visit Vue here.

Development

# Clone the repository
git clone https://github.com/AlexGustafsson/timekeep

# Enter the directory
cd timekeep

# Install dependencies
npm install

# Follow the conventions enforced
npm run lint
npm run stylelint
npm run test
npm run coverage
npm run check-duplicate-code

# Build for production
npm run build

Disclaimer

Although the project is very capable, it is not built with production in mind. Therefore there might be complications when trying to use the project for large-scale projects meant for the public. The project was developed to easily keep track of time spent on things and as such it might not promote best practices nor be performant.

timekeep's People

Contributors

alexgustafsson avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

timekeep's Issues

Implement tag auto-completion

When a tag is to be added to a project, existing tags by the same or similar names should be shown in order to auto-complete them.

Implement editable times

Could be implemented using a separate number of time to either add or retract, since time is tracked using checkpoints.

Implement context menu

Implement a context menu for the project cards to:

  • Start / stop the project
  • Favorite / unfavorite the project
  • Edit the project
  • Remove the project

Implement tags page

The tags page should allow the user to easily find projects based on tags.

Implement pretty random colors

Currently the random colors used for the tags etc. are poorly generated in order to not add a dependency. Perhaps, specify a large palette or the like in order to generate pretty random colors. Also use the HSL values or the like in order to decide automatically if there should be white or black text on the tags?

Automatically stop counting after midnight

The time tracking should stop by midnight automatically.

This has to be done during import for when the application has been closed, as well as 00:00 when the application is live.

Implement settings page

The settings page should provide settings such as the following:

  • Locale (language and timezone)
  • Nuke the state (GitHub-like danger zone)

Reimplement week scroller

Currently the week scroller is not working, it needs to be reimplemented after the recent rewrite.

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.