Git Product home page Git Product logo

shezdev / painless Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 2.0 7.51 MB

Makers Academy: Final Project | Test-driven (100% coverage!) | Pain management app for sufferers of chronic pain conditions such as Rheumatoid Arthritis or IBS. Users input daily life data (e.g. food eaten, physical activity) and pain levels. The app uses this information to discern patterns and inform user management of their condition.

Ruby 68.68% JavaScript 1.04% CoffeeScript 1.70% CSS 9.03% HTML 19.55%
makersacademy final-project techforgood test-driven-development pain

painless's Introduction

PainLess - The Pain Management Web App

Coverage Status

A #Techforgood app that tracks dietary and physical environmental factors and returns data correlated with levels of pain inputted by the user.

Built by Shereen, Samir Gossain, Jack Henderson and Konrad Schlatte in 8 days as the final project for Makers Academy.

PainLess - The Pain Management Web App - Login Page

Motivation

The purpose of this is to allow those who suffer with chronic conditions such as Arthritis and IBS to track their daily pain levels alongside environmental factors such as food and physical activities. This allows them to identify possible triggers for sudden flare ups - e.g. certain foods that may exacerbate their symptoms. In addition, users can access a log of all their inputs which can be exported to PDF, this can be shown to their GP to give a broad overview of their lifestyle and correlated pain.

Getting started

  • git clone https://github.com/shezdev/painLess.git
  • cd /painLess
  • gem install rails
  • brew install postgresql (extra configuration may be needed to install the database user on your computer)
  • bundle install in the root directory
  • bin/rake db:create to create the databases:'painless_development' and 'painless_test'
  • bin/rake db:migrate to run the database migrations

Usage

  • Run bin/rails server to run the Puma web server
  • Visit http://localhost:3000 to view the app in your browser
  • Click on Register and follow the wizard

Running tests

  • Run rspec from the /painLess directory
  • Currently shows 26 examples, 0 failures

Technology Stack

Architecture

Architecture

Homepage

Objectives of the Final Project

  • Are you having fun? YES
  • Are you a better developer than you were yesterday? YES
  • Can you use high-quality processes to build an extended project in a team? YES

Project Planning

Here is a synopsis of our first day group planning session:

  • Check in with how everyone is, what they want to get out of the project at the end (demonstration of best practices and great teamwork), to make sure everyone is happy on the project going forward, that we all have an equal voice, listen to each other and are open to feedback.
  • Brainstorming success factors for our project and how we want to work e.g. Prioritising TDD, pairing, switching pairs frequently, importance of planning and thinking of architecture, stand-ups and retros, lessons learnt from peers and previous projects.
  • Trying to get everyone on the same page of understanding of the project idea, by first describing it almost in terms of what the user wants and needs, then drawing out how it could work (diagramming) and what the user might see (wireframes).
  • Working on a one line description for this project.
  • Deciding on the MVP functionality by answering from the user's perspective and thinking what is the smallest thing we could do.
  • Writing user stories for the MVP.
  • Brainstorming how we could extend the functionality, then coming up with user stories for v2 and a list for v3.
  • Documenting this in a shared collaborative Google doc.
  • Creating a table with basic fields such as front end, business logic, backend, testing framework - then researching technologies that could be used for each together, and their pros and cons.
  • Considerations of any technology restrictions on our v3 idea list.
  • Planning and estimating activities and hours needed to reach MVP (16).
  • Working out how we can split the project for MVP into chunks that don't rely on each other and that could be merged later.
  • Assigning pairs to those chunks randomly for the next day, swapping tasks at lunchtime.
  • Ensuring we have daily stand ups (number out of 10)and retros to check in with everyone on the the day went. For XP values!!
  • Research question for everyone - how can we use Cucumber for test driven development?

User Stories

As a group, we developed the following user stories that defined our goals for the project as well as what we considered to be the minimum viable product (MVP):

MVP

As a user
So that I can monitor my health
I want to be able to input what I’ve ate today and my pain

As a user
So I can see my data
I want to be able to see yesterday’s input

V2 User stories

As a user
So that I can see the patterns in my pain
I want to see what I ate the previous day, for the highest pain score.

As a user
So that I can input more information / see more patterns / more environmental factors
I want to input my activity/exertion (low/med/high)

As a user
So that I can see clearer patterns in my pain
I want to return group of foods causing high pain scores.

V3 Functionality

  • Update food and painscores to show on same page as form
  • Today's food and painscores are only displayed
  • Functionality for multiple users (login etc)
  • Update and delete functionality
  • Can only add 1 Pain Score Per Day

V4 Functionality

  • Data Visualisation of all Data
  • Stats for GP/Dietician
  • AJAX to recall previous entries

Further Screenshots

Homepage

Homepage

Log today's pain data

Log today's Pain Data

View trigger foods

View Potential Trigger Foods

View exertion to pain relationship

View Exertion to Pain relationships

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.