ktusznio / my-minutes-react

An open-source, web implementation of My Minutes.

Home Page:http://myminutesapp.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

My Minutes

My Minutes is a simple time-tracker to set goals for your time. You can set "at most" goals to limit time spent, or "at least" goals to build a habit.

Find more info about the app here.

Demo

You can demo My Minutes here.

Try it on a mobile device with service-worker support to preview its Progressive Web App (PWA) affordances.

Architecture

My Minutes is built using:

Most architectural choices stem from these tools.

  • Authentication is handled by Firebase.
  • App state is stored in reducers.
  • UI interactions dispatch Redux actions.
  • Redux-thunk is used to dispatch async actions where necessary (eg. interactions with Firebase, other network calls).
  • Firebase usage is encapsulated in a client exposed by src/api/index.ts

Limitations

  • Offline support: the app is resilient when network connectivity is lost (thanks to Firebase) but still requires a network connection to authenticate on launch. This is a limitation in Firebase's web client.

Developing

  1. Install dependencies: npm install
  2. Install typings: typings install
  3. Create config.ts: cp config.sample.ts config.ts and fill in required values.
  4. Create a Firebase app and fill in config values.
  5. Create a Facebook app and fill in config values.
  6. Start dev server: npm start
  7. Open localhost:8080.

Deploying

npm install -g firebase-tools
npm run-script build
firebase use <firebase app id>
firebase deploy

TODOs

  • Web push notifications.
  • Cache selector results in src/selectors.
  • More tests.

License

This code is made available under the GNU GPLv3 license.

About

An open-source, web implementation of My Minutes.

http://myminutesapp.com

License:GNU General Public License v3.0


Languages

Language:TypeScript 86.8%Language:JavaScript 11.5%Language:HTML 1.6%