soTired is an application for cognitive fatigue assessment. It includes a stand-alone Android app for fatigue detection and an additional part for data management and further analysis.

Overview

pipeline license

Motivation

soTired is an application for cognitive fatigue assessment. It includes a stand-alone Android app for fatigue detection and an additional part for data management and further analysis. The project is structured as client side (stand-alone app) implemented in Dart/Flutter and a server side (data management) written in Golang. Besides Android, Dart/Flutter provides the ability to add an iOS, desktop and / or web application from a single codebase.

soTired is a rewrite of the application presented in the Validation of a Smartphone-Based Approach to In Situ Cognitive Fatigue Assessment paper by Edward Price, George Moore, Leo Galway and Mark Linden.

How to contribute

PRs are very welcome! :)
You can set up your development environments following the steps below.

App development environment setup

  1. Make sure you have flutter (version 2.5.0 or higher) installed and flutter doctor -v does not have any errors regarding Android development.
  2. Clone the repository and run cd soTired/ && make init to initialize git pre-commit hooks.
  3. Inside the soTired/ directory run make flutterPubGet to install all depending packages.

Server development environment setup

  1. Make sure you have go (version 1.17 or higher) installed.
  2. Clone the repository and run cd soTired/ && make init to initialize git pre-commit hooks.
  3. Inside the soTired/server/ directory run go install to install all requirements.

You're good to go now :)
NOTE: Check the Makefile for useful commands regarding the app and also the server part.

How to install the app

  1. Make sure you have adb installed (or something similar to install the app). (The lowest Android version supported is version 9.0 (API level 28).)
  2. Download the official release (here) or build it yourself by running make flutterBuild in the root directory of the project. Note that you need to set up your development environment first.

How to set up the server

  1. After setting up the server development environment run cd soTired && make gobuild to build the server.
  2. By then typing cd server && ./soti-server you will be displayed the server help. Follow these instructions to start the server.

Contributions

For communication through the code, please use one of the following tags:

FIXME - for a bug which can't be fixed now
TODO - for a feature or are a design change that has to be done later on
NOTE - for an important information

The git workflow for this repo is rebase-merge, which results in a history of this form:

                             F--G
                            /    \
   feature-1 ->     B--C   E------H    <- feature-2
                   /    \ /        \
                --A------D----------I  <-main

In conclusion, the main branch only contains merge commits from other branches, which are rebased onto the most recent commit.

Documentation

For further information please refer to the app's report.

Comments
  • Fix missing information in client database export

    Fix missing information in client database export

    the userLog and the userState on the client side are not connected through any indicator. This is a problem since for a study this relation is nessecary. Also this information is yet missing in the export json for the server.

    bug 
    opened by treilik 2
  • issue/24 server export functionality

    issue/24 server export functionality

    • [issue/24] - prepared mocking of the database content
    • [issue/24] - add struct for JSON export
    • [issue/24] - improved mock data creation for test db
    • [issue/24] - renamed file for JSON export code
    • [issue/24] - add export command to cobra
    • [issue/24] - Change error handling in export command
    • [issue/24] - added verbose falg to export cmd
    enhancement 
    opened by treilik 1
  • Issue/22 - Set up app database

    Issue/22 - Set up app database

    closes #22

    NOTICE

    Due to unforeseen deprecation issues regarding the flutter test framework, this PR contains only commented database tests which are not executed.

    enhancement 
    opened by mac641 1
  • Beautify / Enhance code for STEP I

    Beautify / Enhance code for STEP I

    • [x] Name class variables appropriately
    • [x] Set app name
    • [x] Add dev environment setup section to README
    • [x] Add tests to config_manager
    • [x] Write doc comments for ui and main ~* [ ] Write tests for ui~
    • [x] Write tests for utils
    • [x] Resolve TODOs
    bug enhancement 
    opened by mac641 1
  • Issue/115 - Handle currentActivity and currentMood as text string on client side

    Issue/115 - Handle currentActivity and currentMood as text string on client side

    closes #115

    adds to #80

    Also contains:

    • Fix for issue where users were able to return to their previously taken self test via Android's back button.
    • Functionality enhancement to ask for confirmation before closing the app.
    • Refactorings to avoid name confusion
    bug enhancement 
    opened by mac641 0
  • fail early one server side when parsing input date

    fail early one server side when parsing input date

    while parsing the input date from the client, there can occur errors which are treated in the moment as fatal for the function which saves the data into the database. The problem is that when a error causes the leaving of the function there can be already new entries created in the database which are not yet rolled back. so in case of an error the was some data imported into the database and some data is not added to the database. this can leave unconected data in the database which is not incorrect in terms of the program use, but leads to unnesesry data in the database. So the TODO is to either:

    • added the data only when all incomming data was succesfully parsed
    • or roll back all the changes to the database which are incorect which leaves open if the the correct parsed parts should be added.
    bug 
    opened by treilik 0
Releases(v0.1.0)
  • v0.1.0(Oct 20, 2021)

    This release contains the final app from this project and the current not fully functional server state.

    Change log

    soTired - App

    • contains everything described in the report
    • fixes an issue where routes have been pushed onto the Navigator stack without popping them properly
    • fixes an issue where json export for the server was initially wrong at the time when writing the report
    • includes various minor bug fixes like formatting, refactoring to make the code more readable, ...

    soTired - Server

    • contains everything described in the report
    Source code(tar.gz)
    Source code(zip)
    app-release.apk(19.18 MB)
    soti-server(15.62 MB)
Owner
Team Ulster 2.0
Team Ulster 2.0
An intuitive Token Parser that includes grammar definition, tokenization, parsing, syntax error and debugging. Implementation based on Lexical Analysis for Dart.

Token Parser An intuitive Token Parser that includes syntax/grammar definition, tokenization and parsing. Implementation based on Lexical Analysis. Re

JUST A SNIPER ツ 2 Dec 15, 2022
Flutterbodydetection - A flutter plugin that uses MLKit on iOS/Android platforms to enable body pose and mask detection using Pose Detection and Selfie Segmentation APIs for both static images and live camera stream.

body_detection A flutter plugin that uses MLKit on iOS/Android platforms to enable body pose and mask detection using Pose Detection and Selfie Segmen

null 18 Dec 5, 2022
Face Mask Detection with Tensorflow(Flutter)Face Mask Detection with Tensorflow(Flutter)

Face Mask Detection with Tensorflow(Flutter) Face Mask Detection With TFlite Info An app made with flutter and tensor flow lite for face mask detectio

Mohsen Mirdar 1 May 23, 2022
A SECURE personal data Analysis and Storage system.

Magic Data Bottle Our goal is to design and implement a secure personal data analysis and storage system. Repo Structure app An android app written in

Xinpeng Wei 3 Sep 27, 2022
Additional alignments to help make your layouts more readable (TopLeft, TopRight, etc)

extra alignments Why should Center get all the love? This package adds additional alignments to help make your layouts more readable. The full set inc

gskinner team 13 Jan 6, 2023
A collections of packages providing additional functionality for working with bloc

Bloc Extensions A collections of packages providing additional functionality for working with bloc. Index Packages Bloc Hooks Action Blocs Contributin

Aljoscha Grebe 2 Apr 19, 2022
A beautiful 😍 covid-19 app with self - assessment and more.

Aarogya Seva Made with ?? in India ?? Aarogya Seva is an Indian app developed using flutter for tracking live Covid-19 cases. App provides Coronavirus

Shubham Soni 118 Nov 25, 2022
BSTEVR Assessment.

bstevr_assessment BSTEVR Assessment. How To Run You can run this Flutter app through Android Studio by simply opening the project and tapping the run

Bahrican Akkoyun 1 Sep 29, 2021
Coreborn Internship Assessment Task written in Flutter/Dart

corebornassessmenttask Coreborn Internship Assessment Task written in Flutter/Dart Getting Started Clone the project git clone https://github.com/emir

Emir Halıcı 1 May 22, 2022
Android Login UI kit part - 5

?? Andriod Login & Register UI #5 Design screens are on Behance. you can get XD file from there. Don't forget to star ⭐ the repo if you like what you

Sanskar Tiwari 7 Apr 21, 2022
Data Migrator - provide a universal translator for data by being portable, diverse, and efficient in migrating and converting data across discrete schemas

Data Migrator - provide a universal translator for data by being portable, diverse, and efficient in migrating and converting data across discrete schemas

Tanner Meade 77 Jan 2, 2023
A todo app using firebase and flutter as part of youtube series

Welcome to flutter-with-firebase ?? This project made for those whowanted to learn about the firebase and thier Auth, Cloud Storage and Cloud function

Balram Rathore 71 Jan 6, 2023
Simple flutter app that shows the transfer of money between multiple customers. The project is done as a part of The Sparks Foundation Internship GRIPSEPTEMPER22

Sparks Bank ?? Table of Contents About Packages used ScreenShots from the app Demo vedio Contributors About Basic banking system created in Flutter ba

Heba Ashraf 5 Oct 14, 2022
Pneumonia detection android app based on deep learning API

pneumonia A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if thi

Mohammed Mahmood 0 Nov 7, 2021
Vid formfield chipinput - Flutter custom formfield with Chip inputs. (Part of video code-along)

ex2_formfield A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if

Khalid Ali 0 Jan 1, 2022
Tesla Website - A part of a #100flutterprojects

Tesla Website - A part of a #100flutterprojects

Akindoyin Faruq 1 Feb 18, 2022