Git Product home page Git Product logo

pomodoro-task-tracker's Introduction

Pomodoro Task Tracker

Table of Contents

  1. Purpose
  2. Requirements
  3. Usage
  4. Config
  5. Debugging
  6. License

This repository is not being maintained.

Screenshot: pomdoro-task-tracker-screenshot

Purpose:

This is an electron app to track tasks, using the pomodoro technique.

Warning: This software is very much alpha quality. Do not use this to track tasks in a production environment.

I have only tested this software on Linux.

Requirements:

This software has the following requirements:

  1. nodejs v14.21.3 runtime. This is the current lts/fermium release.

Usage:

You will need to have nodejs and npm installed on your machine to use this software.

I use node version manager to manage my nodejs versions.

Clone this repository. Go into the pomodoro-task-tracker directory.

Run:

npm install

PRODUCTION:

Build the software.

npm run build

Setup the Database. This creates the config directory, and sets up the required indexes.

npm run setup

For testing purposes, you might want to seed the database with some test data:

npm run seed

Then run:

npm start

DEVELOPMENT:

Build the software.

npm run build-dev

Setup the Database. This creates the config directory, and sets up the required indexes.

npm run setup-dev

For testing purposes, you might want to seed the database with some test data:

npm run seed-dev

Then run:

npm start-dev

Config:

This program has a settings editor that can be accessed from the main screen.

On Linux: The settings are stored in ~./config/pomdoro-task-tracker/settings.json

Debugging:

If you need to debug this app, you can turn debugging on by:

You can enable dev tools by going to Help -> Toggle Developer Tools.

Electron: Set these environment variables, then run the software: (Source: electron/electron#4677 (comment))

export ELECTRON_ENABLE_LOGGING=1
export ELECTRON_ENABLE_STACK_DUMPING=1
npm start

PouchDB: In src/windows/app.js, uncomment the db.enableDebug() line. To disable debug, you'll need to add db.disableDebug(), and comment out the enableDebug() call. (I am going to make this a togglable option under Edit, similar to enabling dev tools)

License:

This program is licensed under the GPLv2 License.

pomodoro-task-tracker's People

Contributors

jeremymreed avatar

Watchers

 avatar  avatar

pomodoro-task-tracker's Issues

App Packaging.

Package app for installation on the following platforms:

  • Windows
  • MacOS
  • Linux
    • deb
    • rpm
    • AUR
    • Flatpak
    • Snap
    • Pacman

App: Create enums.

Now that we are using Typescript, get rid of magic numbers, and use enums.

rebuild-usb fails.

Running node run rebuild-usb fails with the following error message:

❯ npm run rebuild-usb

> [email protected] rebuild-usb /home/jeremyr/Projects/Personal/Software/github.com/jeremymreed/pomodoro-task-tracker
> electron-builder install-app-deps

Error: Cannot find module 'fs/promises'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/home/jeremyr/Projects/Personal/Software/github.com/jeremymreed/pomodoro-task-tracker/node_modules/builder-util/src/fs.ts:4:1)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/home/jeremyr/Projects/Personal/Software/github.com/jeremymreed/pomodoro-task-tracker/node_modules/builder-util/src/util.ts:25:1)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] rebuild-usb: `electron-builder install-app-deps`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] rebuild-usb script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

Examine code to see if currentTask state var could be reset when needed.

In the case where TaskRunningView is unmounted, the currentTask state variable is set to an empty string by the state transition function before the TaskRunningView Component is unmounted. This results in a bug where we fail to look up the current task.

This was fixed by passing the task id to the UpdateTaskTimeSpentOnTask function.

However, there may be other places in the codebase where a similar issue may exist.

Also we should examine if we need the currentTask state var in App.

EnvPaths: Don't hide app name.

Should EnvPaths only be a wrapper around env-paths module, or should it also add the app's name to the config path base?
Keeping the app name in EnvPath reduces duplication, but could cause confusion in the future when developers look at EnvPaths, and assume that only the ~/.config part of the path is returned, and not the full ~/.config/pomodoro-task-tracker path.

We don't want the dev to have to go look at paths.ts to confirm the exact behavior of the EnvPaths class.

App freezes when clicking start task.

The app freezes when I click on start task, or any button.

There is this message in the console.
(electron:2701194): libnotify-WARNING **: 16:30:37.695: Failed to connect to proxy

TaskRunningView: Rename stopTask, taskDone to avoid confusion w/ prop functions.

stopTask and taskDone are passed in via props.

We have two functions, stopTask, and taskDone that use the functions passed in via props, and they've got the same name.

This could be confusing to a dev, especially after we've refactored to use object destructuring to pull these functions out of props.

We need to rename these functions to avoid future confusion.

We are using 'as' to cast electronSettings values.

Electron Settings uses SettingsValue as its return type for various functions.
We should use a type guard to ensure correct types.
Also, we could pull values from electron settings, and create a new class to store these settings values in their correct type.
This mapper could define type guards and do the cast in one place, and expose values in their proper types to the rest of the app.

Readme links going to gitlab

Many links in README are still linked to gitlab. Those are coming back with a 404.
Update to point to github.

Port to TypeScript.

Mostly done. There are a few JS files that have not been ported to TypeScript.
These are the setup / install scripts, and the database wrapper.

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.