GithubHelp home page GithubHelp logo

dwyl / app Goto Github PK

View Code? Open in Web Editor NEW
142.0 142.0 21.0 24.91 MB

Clear your mind. Organise your life. Ignore distractions. Focus on what matters.

Home Page: http://dwyl.github.io/app/

Kotlin 0.07% Swift 1.22% Objective-C 0.02% Dart 67.66% CMake 11.47% C++ 14.84% C 0.87% HTML 1.87% Dockerfile 0.07% Shell 0.22% Ruby 1.71%

app's People

Contributors

besarthoxhaj avatar dana94 avatar howardroark avatar iteles avatar luchoturtle avatar melbarch avatar nelsonic avatar nkamc avatar simonlab avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

app's Issues

Easy feedback from people at every stage of the app

Especially for the MVP stage, the ideal is to have a way of allowing people to take the app away, use it in their natural environment and be able to give us feedback from anywhere within the app without much effort.

Feedback is a pretty huge topic and will require more thought soon but for now, there are two questions:

  1. When do we need to have this in the app by?
  2. Do we build it or use an existing service?
  • We could add a feedback button to every screen in some predetermined corner that opens a message box
  • We could base the feedback box appearing based on shaking the phone
  • We could use something like Instabug which feels a bit like a temporary 'quick fix'

Translating the magic of paper to digital

Paper goods

To be reviewed at the 6 month mark.

There is a certain magic to analog productivity. Good old pen and paper.

It might be the feeling of the textured paper at our fingertips or the immediacy of putting pen to paper without having to hit the on button on our phone and swipe to get into it. It might just be that we are nostalgic for the pen in our hands or the sight of our own handwriting.

Understanding the beauty of paper and seeing if we can bring it to the digital world in a way that enhances the experience is probably worth looking into. The key would be to see this investigation as an opportunity and not a constraint or requirement.

Discussed in this closed pull request.

Image credit: http://shaycochrane.com

Gitter?

I'm not a huge fan of the ephemeral nature of Gitter.
Its easy to lose a thread of conversation about a specific topic I much prefer to use issues where the thread of discussion is clear.
But... I do like:

  • the ability to @/all when asking a question to the group.
  • better notification system than GitHub for mentions, new issues/PRs
  • less intimidating for new people who might not want to create an "issue" and just want to chat...?

Add Redis to Vagrantfile

Related to: #42
given the speed (low latency) advantage of using Redis (in-memory) Caching, it makes sense for session tokens.

Synchronise server with NTP to ensure we have the correct time

Reliability of our time is crucial.
We will allow clients to send us the st (start time) they want the timer to start (from their device)
this allows them to set the time they think the task/activity started (i.e. retrospectively set a start-time...)
But we will also store a ct (created time) which cannot be changed and provides an audit for the person to know when they actually started the timer.

To this end, I propose using the https://github.com/hueniverse/sntp module to get "real" time from a Network Time Protocol (NTP) server.

Should the timer work offline?

From a mobile perspective especially, will it be handy for our people if the timers works offline?
This would account for places with little or no network (the underground), smaller data plans or travelling abroad.

Is it useful functionality?

P.S. There's an open question as to whether is just be just the timers or other functionality that should be available offline too (such as non-realtime reports), but this level of detail will come from our MVP learning.

Need a name for our MVP

We need to find a good alpha name for our MVP. It doesn't need to be the final name and it doesn't need to be a stroke of genius, but we need something that we can refer to other than 'the time app'.

We considered something super simple and just descriptive but really, the app is more than just a timer - it's more of a time tracker - and it would be much better to have something that:

  • Has some personality
  • 1 or 2 syllables
  • Simple
  • Domain names are available (especially .com, .io or something equally 'standard')

Any thoughts?

Registration: Require password minimum length?

Some services require a password of a minimum length.
We could set ours very low like (e.g: 4 chars - which is easy to remember but NOT very secure...)
Or require 8 characters. I'm asking because I'm setting up password validation in the API and want to check if others have views....

Should we log people out after x amount of time?

The "industry standard" is to have a 'Remember me' style tick box at login and allow people the option of being logged out or staying logged in.

For example:
screen shot 2015-02-20 at 17 48 37
screen shot 2015-02-20 at 17 49 13

Given we are creating a time logging app, do we feel it is necessary to provide this option to people?
Should we log people out after x amount of time?

Two concerns might be: legal (I don't have any insight here if anyone can shed some insight?) and familiarity/perception of privacy/safety.

Prevent someone from creating a timer/activity as someone else.

If a person (or App accessing Time via API) has a _Valid Token_ the token should still be checked for the person's id and not allow random people posting a _new timer_ (or updating an existing timer) on behalf of someone else (for fun or malice...)
Related to:

  • Permissions: #5
  • Start timer: #12

Frictionless Adoption: Anonymous Timers?

minimise-friction-to-addoption

To _minimise adoption friction, when a person first arrives on the site/app we should allow them to try starting timer(s) _without registering or logging in. This means they are anonymous to us. ๐Ÿ˜ฎ

To make this work we need to assign them a JWT they can use to interact with the app anonymously.
if they decide to register their email address (and thus keep their timer(s) securely saved) their timer(s) will be owned by the email address they register with.

further reading: http://www.forentrepreneurs.com/time-to-wow/

Motion for Typing Less and using Less Bandwidth

When defining our Activity Model we can be _verbose_:

{
  "PersonId":"string",
  "ActivityType":"string",
  "Description":"string",
  "StartTime":"timestamp",
  "EndTime": "timestamp"
}

_OR_ we can be _concise_:

{
  "pid":"string",
  "atype":"string",
  "desc":"string",
  "st":"timestamp",
  "et": "timestamp"
}

The first option is descriptive and immediately clear.
The second requires "translation" for new people but is much less to type when actually building and consumes less bandwidth when sending data to/from the client/apps.

Which do we _prefer_? @iteles @NataliaLKB @besarthoxhaj @izaakrogan

Hapi Auth Basic implementation (can we simplify this...?)

I'm not a fan of how hapi-auth-basic
requires username & password to be sent to the server as:

{ authorisation : 'Basic ' + (new Buffer(username + ':' + password, 'utf8')).toString('base64') }

i.e. the front-end app has to base64 encode the un+:+pw and send it in the auth header.
see: http://git.io/xdjk

I would propose we _fork_ the module and create a second option:

payload: {
  email: "[email protected]",
  password: "5up3r53cr3t54uc3!"
}

Thereby allowing people to send the authentication POST request to /login with either the auth header _or_ a form payload.

Update project Badges in Readme

Moving the project to ideaQ means its easier to include people in the development.
But it means we need to update all the badges...

Re-Start an (existing) Timer?

As a user should I be able to continue a timer I have stopped/paused?
Or should the act of starting always create a new timer?

p.s: I don't know if this is MVP or Post MVP... #help ...
@iteles @NataliaLKB @FilWisher do the "other options" allow you to continue a timer you have stopped?

Update intro quote in readme?

I Love the Einstein quote:

Not everything that counts can be counted, and not everything that can be counted counts. ~ Albert Einstein

but propose this one is more apt:

Until we can manage time, we can manage nothing else

thoughts?
Do you know a better quote for time management?

Naming Conventions - What to call the People who Use the App?

This may appear to be a minutiae detail, please ignore if you aren't interested in naming.

" The words we use make a huge difference " ~ Don Norman

"One of the horrible words we use is 'users'.
I am on a crusade to get rid of the word 'users'.
I would prefer to call them 'people'.
"
Don Norman on https://en.wikipedia.org/wiki/User_(computing)#Terminology

The easiest way of referring to the people who use an application is as "users" ...
I've never been a fan of calling people "users"...
( I associate the word "users" with people who take narcotics ... )

I would prefer to refer to the (enlightened) people who use our app as a person (singular/record) and people (plural/collection) ... but if anyone else has a suggestion for a better collective noun

Note: I love the word "Team" but think we should reserve it to refer to the people who are building the product... what do you think?

Further reading: a better word: http://ux.stackexchange.com/questions/11401/better-term-for-user
Bonus Level: (Don Norman's) Ted Talk on Design & Emotion: http://www.ted.com/talks/don_norman_on_design_and_emotion

Todo

  • Capture our decision to use the word people to describe the human beings using our App(s) so that we never have to have the "Users" discussion again.
    • Add a "Who?" section to the README.md of this repo and add a brief paragraph summarising exactly why we avoid the term "User" or "Users". The term is obsolete and companies/apps that continue using it are showing their ignorance of this fact.

FrontEnd Boot script should check for JWT of registered person

When a person visits the home page, the (front-end) Boot script should check if the device/browser has a Token saved from a previous visit.
If the person has previously used Time we should try to load their existing timers.
Otherwise assign them an anonymous Token so they can try the app: #58

Create a manifesto

We need to know what our guiding principles are to ensure:
a) facilitate our decision-making
b) let people know what we're about so they can determine whether they identify with our ethos

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.