Giter Club home page Giter Club logo

mobtime's People

Contributors

adamkasztenny avatar andreyden avatar dbartholomae avatar dependabot[bot] avatar digitalepidemic avatar frankyfrankfrank avatar johnblackspear avatar jstruk avatar koushik-ms avatar macv93 avatar mkontani avatar mrozbarry avatar nickdelgrosso avatar sf-emaino avatar tbauman88 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

Watchers

 avatar  avatar  avatar  avatar  avatar

mobtime's Issues

Add database support

Having a dedicated database might increase scalability, but it's not clear what sort of limitations in-memory is going to pose.

Add tests

ava is great for writing tests for both front and backend. We should be able to write tests for all components. Cypress would be great for end-to-end tests, too.

App Tokens/Access to API

Enable app tokens. For now, probably on a per env basis. Maybe something like:

APP_TOKENS="someTokenHash:timerId,otherTokenHash:timerId" node ./index.js

At some point, this could be migrated to some database.

Remove mob lock/unlock feature

This feature isn't really being used in general, but it also was a feature band-aid to calculate end of cycle that never really made it out of the gate.

i18n support

I sort of envision a public/i18n/index.js, along with public/i18n/en.json for now. I don't mind having more than english, but I think this ticket is just to extract as much text as possible into key/values so we can swap out other languages.

Add notification actions

If actions didn't auto dismiss, having a "Cycle and Restart Timer" action could make things smoother. That also means adding a dismiss action.

Server audit log

I currently don't have any tools to see how timers are being used, and what sort of engagement users are having. Since timers already provide users with unique anonymous tokens, I want to create a small sqlite database that looks like this:

token timerId action payload datetime
foo someTimer startTimer 360000 Dec 31, 1969, 23:59:00

This could help identify UI and collaborative issues, like multiple timer starts within a time period, wrong defaults, difficulty starting a timer, frustration with limits, etc.

This could also provide a way to build statistics that don't require live data.

Multi-timer support

Enable https://xyz.ngrok.io/timer-name to create new adhoc timers.
For the sake of memory, timers should probably delete themselves if there are no websocket connections for N (probably 5) minutes.

Audit log

Keep track of who has added a person, started a timer, cycled, etc.
Only viewable by the first user to connect to the timer.

Depends on #6

Depends on #131

Add mob chat feature

Over voice chat, it can be very noisy if everyone is chatting over each other. A small chat feature could be nice. Maybe integrate with discord or slack could be neat.

Add contributing docs

There should be some documentation about where code is located, what the API is, and some guidelines on what contributions should contain.

Refine design

I'm not a designer, and this could look way better. I'm currently working with @FrankyFrankFrank on some design ideas, but others are welcome, too.

Better server-side tracking

As it currently stands, there is no endpoint that exposes a list of timers, or a way to identify malicious use of timers (ie timer spam, people intruding on a timer, etc.). Having at least a data set to track would be better.

OAuth; Sign-in with github

Allow signing in with github to automatically add you to the mob timer, and to give a profile picture?

Detect and count cycles

A cycle count increases if:

  • At least 2 mobbers
  • Cycle has been pressed at least once
  • The mob array matches the initial state (will have to be stored as extra data)

A cycle count is reset if:

  • Shuffle has been pressed
  • A new mobber has been added and a full cycle has been completed
  • An old mobber has been removed
  • The timer has expired

When a cycle completes:

  • A notification should be displayed
  • You just completed a cycle, consider taking a 5 minute break

Save timer state

As a user, I should be able to:

  • Save the timer state to local storage
  • Save the timer state to a file to load later
    • Load a timer from a file

This will supersede #20 , but it's not off the table. Depending on user requirements, database support could become a paid feature for dedicated timers in the future, but I don't think it's necessary.

API

We've developed 'mob', a CLI tool that allows to handover your state via git more easily. You can start a session by $ mob start 10 which will get the previous state and starts a 10 minute timer. Problem often is: the timer is overheard. But rotating often is important.

To solve this, I was thinking how to combine 'mob' with 'mobtime'.

The idea: 'mob' could send the name of the user, the duration (10 minutes), the timestamp, and maybe a hash of the origin url as a mob name when $ mob start 10 is called and others could then open 'mobtime' as well in the browser to help keep track of rotation. With that approach, we wouldn't really want to enter data into 'mobtime' manually, but it's only fed from the 'mob' tool calls - making the ui components of 'mobtime' for this case unecessary.

Give mobber an id

Each time we add a name, provide an id to it. Use that id for subsequent api calls.

Cycle Goals

Have a basic todo list that your team can manage the goals of the mob.

At the end of a cycle, you are prompted to reset the goals.

Depends on #15

Socket keep alive

Clients need semi-frequent activity to keep the connection alive. Sending { ping: Date.now() } should be more than enough, every n minutes

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.