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.
(Top)
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)
-
Install Python for your respective operating system at https://www.python.org/downloads/.
-
Install version control system of Git for your respective operating system at https://git-scm.com/downloads.
(Top)
-
Clone the repository:
git clone https://github.com/Diptonil/eudaimonia.git
-
Create a virtual environment for installation of required modules:
python -m venv venv venv\scripts\activate pip install -r requirements.txt
-
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)
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)
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)
- Third Place in the IEEE ComSoc Bangalore chapter hackathon 'CODIFY' arranged by BNMIT.
(Top)
The collaborators involved in this project are:
- Chaithanya S
- Diptonil Roy
- Divyansh Agrawal
The technical resources utilized for this project are:
- Font Awesome
- Image Shields
- Simple Icons
- Datepicker
- Google reCaptcha
- Argon2 Hashing Technique
- AES-256 Encryption
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)