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
An example file showing a simple endpoints like a login/logout function and maybe some others.

Flask API Example An example project showing a simple endpoints like a login/logout function and maybe some others. How to use: Open up your IDE (or u

Kevin 1 Oct 27, 2021
🗽 Like yarn outdated/upgrade, but for pip. Upgrade all your pip packages and automate your Python Dependency Management.

pipupgrade The missing command for pip Table of Contents Features Quick Start Usage Basic Usage Docker Environment Variables FAQ License Features Upda

Achilles Rasquinha 529 Dec 31, 2022
Pokemon sword replay capture

pokemon-sword-replay-capture This is an old version (March 2020) pokemon-sword-replay-capture-mar-2020-version of my Pokemon Replay Capture software.

11 May 15, 2022
RangDev Notepad App With Python

RangDev Notepad-App-With-Python Take down quick and speedy notes! This is a small project of a notepad app built with Tkinter and SQLite3. Database cr

rangga.alrasya 1 Dec 01, 2021
A Python utility belt containing simple tools, a stdlib like feel, and extra batteries. Hashing, Caching, Timing, Progress, and more made easy!

Ubelt is a small library of robust, tested, documented, and simple functions that extend the Python standard library. It has a flat API that all behav

Jon Crall 638 Dec 13, 2022
A Notifier Program that Notifies you to relax your eyes Every 15 Minutes👀

Every 15 Minutes is an application that is used to Notify you to Relax your eyes Every 15 Minutes, This is fully made with Python and also with the us

FSP Gang s' Admin 1 Nov 03, 2021
SWS Filters App - SWS Filters App With Python

SWS Filters App Fun 😅 ... Fun 😅 Click On photo and see 😂 😂 😂 Your Video rec

Sagar Jangid 3 Jul 07, 2022
Structural basis for solubility in protein expression systems

Structural basis for solubility in protein expression systems Large-scale protein production for biotechnology and biopharmaceutical applications rely

ProteinQure 16 Aug 18, 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
This alerts you when the avalanche score a goal

This alerts you when the avalanche score a goal

Davis Burrill 1 Jan 15, 2022
A bunch of codes for procedurally modeling and texturing futuristic cities.

Procedural Futuristic City This is our final project for CPSC 479. We created a procedural futuristic city complete with Worley noise procedural textu

1 Dec 22, 2021
Purge all transformation orientations addon for Blender 2.8 and newer versions

CTO Purge This add-on adds a new button to Blender's Transformation Orientation panel which empowers the user to purge all of his/her custom transform

MMMrqs 10 Dec 29, 2022
Gitlab py scripts

Gitlab py scripts The code can be used to gather the list of GitHub groups/projects and the permissions of the users in those groups/projects. group/p

Roghuchi 1 Aug 29, 2022
The code for 2021 MGTV AI Challenge Anti Stealing Link, and the online result ranks 10th.

赛题介绍 芒果TV-第二届“马栏山杯”国际音视频算法大赛-防盗链 随着业务的发展,芒果的视频内容也深受网友的喜欢,不少视频网站和应用开始盗播芒果的视频内容,盗链网站不经过芒果TV的前端系统,跳过广告播放,且消耗大量的服务器、带宽资源,直接给公司带来了巨大的经济损失,因此防盗链在日常运营中显得尤为重要

tongji40 16 Jun 17, 2022
Paimon is a pixie (or script) who was made for anyone from {EPITECH} who are struggling with the Coding Style.

Paimon Paimon is a pixie (or script) who was made for anyone from {EPITECH} who are struggling with the Coding Style. Her goal is to assist you in you

Lyy 2 Oct 17, 2021
Wordless - the #1 app for helping you cheat at Wordle, which is sure to make you popular at parties

Wordless Wordless is the #1 app for helping you cheat at Wordle, which is sure t

James Kirk 7 Feb 04, 2022
vFuzzer is a tool developed for fuzzing buffer overflows, For now, It can be used for fuzzing plain vanilla stack based buffer overflows

vFuzzer vFuzzer is a tool developed for fuzzing buffer overflows, For now, It can be used for fuzzing plain vanilla stack based buffer overflows, The

Vedant Bhalgama 5 Nov 12, 2022
Simple Python Gemini browser with nice formatting

gg I wasn't satisfied with any of the other available Gemini clients, so I wrote my own. Requires Python 3.9 (maybe older, I haven't checked) and opti

Sarah Taube 2 Nov 21, 2021
Margin Calculator - Personally tailored investment tool

Margin Calculator - Personally tailored investment tool

1 Jul 19, 2022