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.
PRs are very welcome! :)
You can set up your development environments following the steps below.
- Make sure you have flutter (version
2.5.0or higher) installed andflutter doctor -vdoes not have any errors regarding Android development. - Clone the repository and run
cd soTired/ && make initto initialize git pre-commit hooks. - Inside the
soTired/directory runmake flutterPubGetto install all depending packages.
- Make sure you have go (version
1.17or higher) installed. - Clone the repository and run
cd soTired/ && make initto initialize git pre-commit hooks. - Inside the
soTired/server/directory rungo installto install all requirements.
You're good to go now :)
NOTE: Check the Makefile for useful commands regarding the app and also the server part.
- Make sure you have
adbinstalled (or something similar to install the app). (The lowest Android version supported is version9.0(API level 28).) - Download the official release (here) or build
it yourself by running
make flutterBuildin the root directory of the project. Note that you need to set up your development environment first.
- After setting up the server development environment run
cd soTired && make gobuildto build the server. - By then typing
cd server && ./soti-serveryou will be displayed the server help. Follow these instructions to start the server.
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.
For further information please refer to the app's report.
