Find habits that genuinely increase your productivity

Overview

BiProductive

Codacy Badge Stargazers Issues MIT License

Description

This repository contains the application BiProductive, which analyzes the habits of the person, tests his productivity, and defines dependencies between habits and productivity. Each day user enters the actions they made today (sports activity, meditation, smoking, etc.) and tests their brain performance. Then the application computes the correlation between habits and user's performance, and makes personal recommendations.

1

How to deploy the application

  • Locally

    • You should have Docker and Docker Compose installed.

    • Go to the project folder.

    • Rename .env.example to .env and fill the SECRET_KEY environment variable. For example, you can use (https://djecrety.ir) to generate the secret key.

    • Put .env file to ./biproductive/biproductive directory.

    • Run docker-compose up --build.

    • An application will be launched at 0.0.0.0:8000 address.

  • Heroku

    • If you want to deploy this application on your own Heroku host, read HEROKU.MD.

Functionality of our application

  • You can register to the website, providing any unused username, email, and password. You can log in using his username and password.

  • After login at the home page you can see the dashboard with weekly statistics of habits usage and his brain activity during the productivity testing.

  • Also, on request, you can request from the system weekly report with analysis of his habits (in future we will add sending report by email each week).

  • You can add as many habits as you want for tracking them.

  • During the day or at the end of the day you can mark habits you completed and not completed (e.x. Swimming - Yes, Smoking - No) only once a day (no refilling can be done).

  • Once a day (preferably in the evening) you can test how well your brain works after the day by playing a memory game.

  • So, data about the brain activity after the day and statistics of habit usage could provide personal recommendations about habits (which habits increase brain activity, which not).

Main components of our application

We deployed our project or Heroku, so as a web server that handles client requests we used gunicorn.

We organized business logic of application into 4 main components/modules:

  • User habit tracker - django application that is responsible for tracking habits (user can start tracking his habit by adding it and each day at the special form mark the habit completed or not (e.x. did you read a book today or not).

  • Productivity testing tool - small django application with javascript game that aims to track everyday brain activity after completing (or not completing) habit activities.

  • Habit analyzer tool - ML application that calculates how well habits affects your brain.

  • Report generation tool - wraps data, received from habit analyzer, and prepares a small pdf report with charts & tables.

In the storage layer we have used 2 databased:

  • Habit history database, that stores user's tracking habits and their usage.
  • Productivity history database, that tracks user's everyday brain activity.

Dynamic view, describing main components of our application (static/dynamic view can be found in our artifact)

Stack of technologies

  • Django
  • PostgreSQL
  • JavaScript
  • HTML
  • Bootstrap

SOLID principles and design patterns

Here you can see a description of how we used SOLID principles and the information about the design patterns.

RUP Artifact

Here is the link to the RUP Artifact where you can find the list of stakeholders and their roles, functional and non-functional requirements planned features, and other design specifications.

Also, you can see the design development history here.

Contributing

We appreciate all contributions. If you are planning to contribute back bug-fixes, please do so without any further discussion.

If you plan to contribute new features, utility functions, or extensions to the core, please first open an issue and discuss the feature with us. Sending a PR without discussion might end up resulting in a rejected PR because we might be taking the core in a different direction than you might be aware of.

Check the CONTRIBUTING.MD to learn more about making a contribution to our project.

Used linters in our project

During the development of our project we have configured git pre-commit checks, defined in .pre-commit-config.yaml:

  • isort for sorting names of imported libraries
  • black - Python code formatter
  • flake8 - combination of various code refactor tools like pyflakes, pycodestyle, checks for code styles.

Code coverage

Code coverage of our web-application - 86%. The application was tested locally with python package - coverage. Generated report and instruction how to test are described in COVERAGE.md.

The BiProductive team

The original BiProductive code contributors can be found in AUTHORS.MD.

Special Thanks To

Rémy Beumier - developer of the memory game for productivity check

You might also like...
A practice program to find the LCM i.e Lowest Common Multiplication of two numbers using python without library.

Finding-LCM-using-python-from-scratch Here, I write a practice program to find the LCM i.e Lowest Common Multiplication of two numbers using python wi

PyPI package for scaffolding out code for decision tree models that can learn to find relationships between the attributes of an object.

Decision Tree Writer This package allows you to train a binary classification decision tree on a list of labeled dictionaries or class instances, and

Simplest way to find Appointments in Bürgeramt Berlin, Not over engineered.
Simplest way to find Appointments in Bürgeramt Berlin, Not over engineered.

Simplest way to find Appointments in Bürgeramt Berlin, Not over engineered. Der einfachste Weg, Termine im Bürgeramt Berlin zu finden, ohne viel Schnickschnack.

The goal of this program was to find the most common color in my living room.

The goal of this program was to find the most common color in my living room. I found a dataset online with colors names and their corr

Given tool find related trending keywords of input keyword

blog_generator Given tool find related trending keywords of input keyword (blog_related_to_keyword). Then cretes a mini blog. Currently its customised

Here You will Find CodeChef Challenge Solutions
Here You will Find CodeChef Challenge Solutions

Here You will Find CodeChef Challenge Solutions

A code ecosystem that helps to find the equate any formula.

A code ecosystem that helps to find the equate any formula. The good part here is that the code finds the formula needed and/or operates on a formula (performs algebra) on it to give you an answer.

Some Python scripts that fx(hash) users might find useful.

fx_hash_utils Some Python scripts that fx(hash) users might find useful. get_images This script downloads all the static images of the tokens generate

We want to check several batch of web URLs (1~100 K) and find the phishing website/URL among them.
We want to check several batch of web URLs (1~100 K) and find the phishing website/URL among them.

We want to check several batch of web URLs (1~100 K) and find the phishing website/URL among them. This module is designed to do the URL/web attestation by using the API from NUS-Phishperida-Project.

Releases(Gamma)
Owner
Rizvan Iskaliev
19 y. o. Machine Learning Engineer, Innopolis University
Rizvan Iskaliev
Calculadora-basica - Calculator with basic operators

Calculadora básica Calculadora com operadores básicos; O programa solicitará a d

Vitor Antoni 2 Apr 26, 2022
Problem statements on System Design and Software Architecture as part of Arpit's System Design Masterclass

Problem statements on System Design and Software Architecture as part of Arpit's System Design Masterclass

Relog 1.1k Jan 04, 2023
A python based app to improve your presentation workflow

Presentation Remote A remote made for making presentations easier by enabling all the members to have access to change the slide and control the flow

Parnav 1 Oct 28, 2021
A free website that keeps the people informed about housing and evictions.

Eviction Tracker Currently helping verify detainer warrant data for middle Tennessee - via Middle TN DSA - Red Door Collective Features Presents data

Red Door Collective 7 Dec 14, 2022
A python tool that creates issues in your repos based on TODO comments in your code

Krypto A neat little sidekick python script to create issues on your repo based on comments left in the code on your behalf Convert todo comments in y

Alex Antoniou 4 Oct 26, 2021
GWCelery is a simple and reliable package for annotating and orchestrating LIGO/Virgo alerts

GWCelery is a simple and reliable package for annotating and orchestrating LIGO/Virgo alerts, built from widely used open source components.

Min-A Cho Zeno 1 Nov 02, 2021
The learning agent learns firstly approaching to the football and then kicking the football to the target position

Football Court This project utilized Pytorch and Tensorflow so that the learning agent learns firstly approaching to the football and then kicking the

1 Nov 19, 2021
Supercharge your NFTs with new behaviours and superpowers!

WrapX Supercharge your NFTs with new behaviours and superpowers! WrapX is a collection of Wrappers (currently one - WrapXSet) to decorate your NTFs ad

Emiliano Bonassi 9 Jun 13, 2022
Chicks get hostloc points regularly

hostloc_getPoints 小鸡定时获取hostloc积分 github action大规模失效,mjj平均一人10鸡,以下可以部署到自己的小鸡上

59 Dec 28, 2022
A check numbers python module

Made with Python3 (C) @FayasNoushad Copyright permission under MIT License License - https://github.com/FayasNoushad/Numbers/blob/main/LICENSE Deplo

Fayas Noushad 3 Nov 28, 2021
This is a menu driven Railway Reservation Project which is mainly based on the python-mysql connectivity.

Online-Railway-Reservation-System This is a menu driven Railway Reservation Project which is mainly based on the python-mysql connectivity. The projec

Ananya Gupta 1 Jan 09, 2022
Python - Aprendendo Python na ByLearn

PYTHON Identação Escopo Pai Escopo filho Escopo neto Variaveis

Italo Rafael 3 May 31, 2022
A variant caller for the GBA gene using WGS data

Gauchian: WGS-based GBA variant caller Gauchian is a targeted variant caller for the GBA gene based on a whole-genome sequencing (WGS) BAM file. Gauch

Illumina 16 Oct 13, 2022
A collection of python exercises to help your learning path!

How to use Step 1: run this command git clone https://github.com/TechPenguineer/Python-Exercises.git Step 2: Run this command cd Python-Exercises You

Tech Penguin 5 Aug 05, 2021
A Classroom Engagement Platform

Project Introduction This is project introduction Setup Setting up Postgres This is the most tricky part when setting up the application. You will nee

Santosh Kumar Patro 1 Nov 18, 2021
Snack Rice - A Rice University servery finder, customized for your needs!

Snack Rice - A Rice University servery finder, customized for your needs!

Aidan Gerber 3 Sep 25, 2022
dotfiles - Cristian Valero Abundio

In this repository you can find various configurations to configure your Linux operating system, preferably ArchLinux and its derivatives.

Cristian Valero Abundio 1 Jan 09, 2022
Master Duel Card Translator Project

Master Duel Card Translator Project A tool for translating card effects in Yu-Gi-Oh! Master Duel. Quick Start (for Chinese version only) Download the

67 Dec 23, 2022
Automatically unpin old messages so you can always pin more!

PinRotate Automatically unpin old messages so you can always pin more! Installation You will need to install poetry to run this bot locally for develo

3 Sep 18, 2022
Attempt at creating organized collection of little handy snippets of code I'm receiving along the way

ChaosCode Attempt at creating organized collection of little handy snippets of code I'm receiving along the way I always considered coding and program

INFU 4 Nov 26, 2022