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.
You can demo My Minutes here.
Try it on a mobile device with service-worker support to preview its Progressive Web App (PWA) affordances.
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
- 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.
- Install dependencies:
npm install
- Install typings:
typings install
- Create config.ts:
cp config.sample.ts config.ts
and fill in required values. - Create a Firebase app and fill in config values.
- Create a Facebook app and fill in config values.
- Start dev server:
npm start
- Open localhost:8080.
npm install -g firebase-tools
npm run-script build
firebase use <firebase app id>
firebase deploy
- Web push notifications.
- Cache selector results in
src/selectors
. - More tests.
This code is made available under the GNU GPLv3 license.