Skip to content

Latest commit

 

History

History
185 lines (136 loc) · 9 KB

README.md

File metadata and controls

185 lines (136 loc) · 9 KB

Eudaimonia

Border

Table of Contents

Border

Description

Border

Eudaimonia is a scalable and dynamic web application that serves to make journaling accessible to all, making it easy for users to inculcate a habit of periodic writing. The project highlights the benefits of journaling and regular usage of the application can be an enriching experience, which is facilitated by running ML models on the input data for scrutinizing their moods and creating reports on their behaviours. The main features of this project are:

  • Provides a secure environment for the user to log their daily activites, write about their feelings or monitor their daily activities.
  • Secures their data in the database using an AES-256 cryptographic algorithm.
  • Provides a sentiment analysis service using a Natural Language Processing model that processes the user's entry and provides music and film recommendations while also recording stats on their mental well-being.
  • Provides additional services such as customization of their writing panels, data recovery, etc.
The application was made with the intents of providing a market-ready service that can be utilized for personal development as well as providing features that other similar websites charge money for. The future scope of the project would be to extend its use-cases, improving the UI significantly and adding in more features that provides the software a competitive edge over all existing products in the web.

(Top)

Frameworks and Tools

Border

The major frameworks, tools, services and APIs used for the making of this project is hereby listed:

  • Django: The fullstack framework used for building the web application.
  • Django REST: The API framework used to build the film and music recommendation system.
  • PostgreSQL: The relational database used primarily.
  • RedisDB: The in-memory data store used for caching.
  • Selenium: The browser automation framework used for validation testing.
  • Scikit-Learn: Predictive model for movie recommendation.
  • Jira: The collaboration and software development tool used to simplify workflow.
  • Sentry: The exception management service used for fatal error logging.
  • Snyk: The security management service used for source code security vulnerability checks.
  • Cloudinary: The primary file storage service.
  • Google SMTP: The email server to send automated emails.
  • Spotify API: API for music recommendation.
  • Figma: Design tool for frontend.
  • Whitenoise: The web server used to fetch static files.
  • VSC: The integrated IDE for development.

(Top)

Prerequisites

Border

  1. Install Python for your respective operating system at https://www.python.org/downloads/.

  2. Install version control system of Git for your respective operating system at https://git-scm.com/downloads.

(Top)

Installation

Border

  1. Clone the repository:

    git clone https://github.com/Diptonil/eudaimonia.git
  2. Create a virtual environment for installation of required modules:

    python -m venv venv
    venv\scripts\activate
    pip install -r requirements.txt
  3. Run the website on the development server:

    python manage.py runserver

Now the website is up and running (at port 8000 in case nothing else is mentioned). To access the website, go to http://localhost:8000/.

IMPORTANT: Some files have not yet been committed and code is being refactored. The project is not functional as of now.

(Top)

Tests

Border

The project has been developed with adherence to Test-Driven Development principles. Hence, there are a lot of tests that can be run to validate the requirements or verify the programming.

To run Django verification tests:

python manage.py test

We have Selenium integration for functional tests. A default webdriver is included with the repository. You can apply validation tests only if:

  • A test period of around five minutes can be alloted for an interrupt-free functioning of the test suite.
  • Google Chrome is the web browser being used.
  • Sufficient memory resources can be allocated for the test execution (multiple instances of the same browser will be run simutaneously).

To run Selenium validation tests:

python tests\scenario_testing.py

IMPORTANT: Some files have not yet been committed and code is being refactored. The project is not functional as of now.

(Top)

Roadmap

Border

There are subsequent upgrades to be made to the project to reach the final stage. Here are a list of all immediate objectives:

  • Configure initial particulars and services.
  • Develop authentication and authorization scheme.
  • Develop AES-256 encryption algorithm implementation.
  • Develop dashboard feature for anonymous sharing.
  • Develop the zen mode for productive sessions.
  • Implement the base theme of the website.
  • Develop sentiment-analysis API.
  • Ready the API for marketability and perfect use.
  • Develop frequency and habit analysis models.
  • Extend the prior features by refinement
  • Deploy using CI/CD practices.

(Top)

Achievements

Border

  • Third Place in the IEEE ComSoc Bangalore chapter hackathon 'CODIFY' arranged by BNMIT.

(Top)

Credits

Border

The collaborators involved in this project are:

  • Chaithanya S
  • Diptonil Roy
  • Divyansh Agrawal

The technical resources utilized for this project are:

The academic and theoretical resources and articles utilized for this project are:

  • The Genre Theory in Film: A simplified and distilled version of the paper has been utilised, keeping in mind the nuances that any user may be capable of comprehending.
  • Ekman's Basic Emotion Model: The emotions considered for any particular user is of happiness, sadness, anger, fear and surprise.

(Top)