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
program to store and update pokemons using SQL and Flask

Pokemon SQL and Flask Pokemons api in python. Technologies flask pymysql Description PokeCorp is a company that tracks pokemon and their trainers arou

Sara Hindy Salfer 1 Oct 20, 2021
Integration of CCURE access control system with automation HVAC of a commercial building

API-CCURE-Automation-Quantity-Floor Integration of CCURE access control system with automation HVAC of a commercial building CCURE is an access contro

Alexandre Edson Silva Pereira 1 Nov 24, 2021
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.

3 Dec 28, 2022
Pokemon catch events project to demonstrate data pipeline on AWS

Pokemon Catches Data Pipeline This is a sample project to practice end-to-end data project; Terraform is used to deploy infrastructure; Kafka is the t

Vitor Carra 4 Sep 03, 2021
一个可以自动生成PTGen,MediaInfo,截图,并且生成发布所需内容的脚本

Differential 差速器 一个可以自动生成PTGen,MediaInfo,截图,并且生成发种所需内容的脚本 为什么叫差速器 差速器是汽车上的一种能使左、右轮胎以不同转速转动的结构。使用同样的动力输入,差速器能够输出不同的转速。就如同这个工具之于PT资源,差速器帮你使用同一份资源,输出不同PT

Lei Shi 96 Dec 15, 2022
Monitor the New World login queue and notify when it is about to finish

nwwatch - Monitor the New World queue and notify when it is about to finish Getting Started install python 3.7+ navigate to the directory where you un

14 Jan 10, 2022
Double Pendulum implementation in Python, now with added pendulums and trails :D

Double Pendulum Using Curses in Python. A nice relaxing double pendulum simulation using ASCII, able to simulate multiple pendulums at once, and provi

Nekurone 62 Dec 14, 2022
SiliconCompiler is an open source compiler framework that automates translation from source code to silicon.

SiliconCompiler is an open source compiler framework that aims to automate translation from source code to silicon.

siliconcompiler 539 Jan 04, 2023
Integer sets where all subsets have unique sums

Evil Sums Generation of sets of numbers where all constituents are recoverable from a partial sum.

Charlotte 5 Sep 24, 2022
Let’s Play with Python3

Python3-FirstEdition a bunch of python programs and stuff Super Important Notice THIS IS LICENSED UNDER GNU PUBLIC LICENSE V3 also, refer to Contribut

Jym Patel 2 Nov 24, 2022
The FLARE team's open-source library to disassemble Common Intermediate Language (CIL) instructions.

dncil is a Common Intermediate Language (CIL) disassembly library written in Python that supports parsing the header, instructions, and exception hand

MANDIANT 95 Jan 08, 2023
A basic layout of atm working of my local database

Software for working Banking service 😄 This project was developed for Banking service. mysql server is required To have mysql server on your system u

satya 1 Oct 21, 2021
Euler 021 Py - Euler Problem 021 solved in Python

Euler_021_Py Euler Problem 021 solved in Python Let d(n) be defined as the sum o

Ariel Tynan 1 Jan 24, 2022
A Python library to simulate a Zoom H6 recorder remote control

H6 A Python library to emulate a Zoom H6 recorder remote control Introduction This library allows you to control your Zoom H6 recorder from your compu

Matias Godoy 68 Nov 02, 2022
Backtest framework based on DAGs

MultitaskQueue It's a simple framework based on three composed concepts: Task: A task is the smaller unit of execution or simple a node in the DAG, ev

4 Dec 09, 2021
A tool to help calculate how to split conveyors in Satisfactory into specific ratios.

Satisfactory Splitter Calculator A tool to help calculate how to split conveyors in Satisfactory into specific ratios. Dependencies Python 3.9 PyYAML

RobotiCat 5 Dec 22, 2022
Student Enrollment Analysis System

SEAS Student Enrollment Analysis System Steps to start working: create a user name "seas", host name: local, password: seas, mark all checkbox - go C

Md. Zakaria Kabir 3 Jul 12, 2022
Exercicios de Python do Curso Em Video, apresentado por Gustavo Guanabara.

Exercicios Curso Em Video de Python Exercicios de Python do Curso Em Video, apresentado por Gustavo Guanabara. OBS.: Na data de postagem deste repo já

Lorenzo Ribeiro Varalo 0 Oct 21, 2021
Learn the basics of Python. These tutorials are for Python beginners. so even if you have no prior knowledge of Python, you won’t face any difficulty understanding these tutorials.

01_Python_Introduction Introduction 👋 Python is a modern, robust, high level programming language. It is very easy to pick up even if you are complet

Milaan Parmar / Милан пармар / _米兰 帕尔马 245 Dec 30, 2022
Pyfetch - Simple Fetch written in Python

pyfetch Simple Fetch written in Python Screenshots Install Clone this repository

2 Sep 02, 2022