Use the app here!
Check out demo here!
This GitHub repository is available here!
- Project Overview
- Team Information
- Problem Statement
- Application Features
- Upcoming Features
- Setting up
- Usage
- Technologies Used
- Design and Development Decisions
- Alignment with SDG Goals
- License
- Contact
Welcome to the Sankalp Web Application repository! This web application is dedicated to addressing the challenges faced by individuals with mental health issues and disabilities. It aims to break stereotypes and promote understanding while providing valuable features to support users. This project is built with MERN stack.
- Team Name: SE_2023 Team 11
- Team Members and Contributions:
- Karthikeya - Story Mode UI, Update Profile UI, Chatbot Integration, Home Page Timeline, Text animation, App Logo, README
- Arpit - Home Page UI, News API Integration + UI, Contact Us Page, Chatbot Integration, UML diagrams, App Logo
- Manurbhav - Navbar (web and mobile), Home Page Timeline, Authentication, Pages UI, Animations Chatbot Integration
- Chandradithya - Node + Express Backend (MVC Pattern), MongoDB Integration, Story Mode, Profile Page, Cloudinary API Integration, Multilingual Translation, Hosting/Deployment Story Collection
- Nandhavardhan - Node + Express Backend (MVC Pattern), Chatbot Integration, JWTs Integration for Authentication and Authorization, Update Profile UI, README, Story Collection
People with mental health issues and disabilities are often misunderstood and stigmatized, leading to poor treatment and discrimination. This can have a significant impact on their mental and emotional well-being.
Sankalp aims to raise awareness and understanding of mental health issues and disabilities. Its features include a story mode to help users empathize with those facing these challenges, a therapy chatbot for support, and an experimental sentiment analysis tool to track users' mental states.
This is a singularly unique problem since many apps focus on people with mental health issues and not much on the people who interact with them. This app aims to bridge that gap.
- Users can explore the experiences of individuals with mental health issues and disabilities.
- Modules provide module descriptions and track user progress.
- Provides insights into how users' words and actions can positively or negatively affect others.
- If a disrespectful option is chosen in the story mode, the app encourages users to reconsider or provides an explanation for the inappropriateness.
- Badges provided for completion of stories.
- Get at least 80% of the total score the successfully finish the story
- Basic login, logout, and registration functionality.
- Secure storage of user data and preferences.
- Allows users to personalize their profiles with customizable profile pictures.
- Allows users to report issues or suggest improvements directly to the development team.
- Integration of a chatbot to assist users in understanding concepts related to mental health and disabilities
Please suggest recomended features in the issues section of this repository or you could also contact us at Contact us page in the website.
To set up and run the Sankalp MERN Web Application locally, follow these steps:
- Clone this repository to your local machine:
git clone https://github.com/ChandradithyaJ/Sankalp.git
. - Navigate to the project folder:
cd sankalp
. - Install root dependencies:
npm install
. Or copy paste the following codenpm i concurrently
- Change directory to the client folder:
cd client
. - Install client dependencies:
npm install
. Or copy paste the following codenpm i @fortawesome/free-solid-svg-icons @fortawesome/react-fontawesome @fvilers/disable-react-devtools axios fontawesome gsap lottie-react picomatch postcss-preset-env react react-carousel3 react-device-detect react-dom react-icons react-jwt react-responsive-carousel react-router-dom react-scripts swiper web-vitals @iconify/react
- Return to the project folder:
cd ..
. - Change directory to the server folder:
cd server
. 8. Install server dependencies:npm install
. Or copy paste the following codenpm i axios bcrypt bing-translate-api cloudinary cors dotenv express jsonwebtoken mongodb mongoose netlify-lambda qs serverless-http
- Navigate to the Server Directory
- Copy the
.env.sample
file to a new file named.env
- Modify the values in the
.env
file to match your configuration needs. - In the client/src/UserProfile/UpdateProfile.js, in the handleSubmit function: change the
newProfilePic
variable to the link which will be generated by Cloudinary - In the server/controllers/picController.js, in the updateProfilePic function: change the
upload_preset
variable to the Cloudinary upload_preset where you store your pics - Please note that for the Story Mode to work, you need stories in the database which will be provided in JSON format soon. Please load them into your Mongo as per the specific instructions mentioned.
- Start the server and client concurrently using:
npm run start
in the root directory. - Access the app in your web browser at
http://localhost:3000
.
- MERN
- Mongo as the database
- Node (using ExpressJS) for the Backend
- ReactJS for the frontend
- News API
- Cloudinary API
- for storing the profile pics of users
- Bootstrap (parts of the UI)
- Lottie animations
- Vercel (for frontend deployment)
- Render (for backend deployment)
- We used the Waterfall effect of Express, with a JWT verification as a middleware, which allows only users with valid JWTs to access certain features such as editing profile, and story mode. Just login to get a valid JWT (this happens in the backend, so please don't worry about it).
- MongoDB isn't a great place to store images as it has an inefficient image storage system, storing them in Base64 Encoding, which slows the process of fetching user details from the database. Hence, we decide to use a third-party service, Cloudinary, to store our images, and we then store the url of that image in Mongo.
- We keep track of progress using GitHub Projects
- Created a custom zip function (much like Python’s zip function) to traverse the stored translated dialog options simultaneously with the other conversation details (such as the points and explanation for each option) in the Story Mode.
- Sent only the dialog options for the current conversation set to be translated to prevent the HTTP Error Code 429 Too Many Requests we received while trying to translate the whole story at once.
- Implemented fun Toast Notifications instead of the alerts used in release 1.
- Added icons to the Navigation Bar options as the navigation bar titles won’t be translated to maintain good UI.
- Added loading animations after the user executes an action that requires API calls.
The Sankalp app aligns with Sustainable Development Goals (SDGs) 3 (Good Health and Well-Being) and 10 (Reduced Inequalities) by promoting and supporting sustainable development through recognition, exposure, and support for mental health and disabilities to be recieved well by people who interact with them.
This project is licensed under the MIT License. See the LICENSE file for details.
If you have questions, feedback, or need assistance, please contact us either on the contact us page or over this repository.
Sankalp - Together, we can create understanding and support for mental health issues and disabilities. Thank you for your interest and contributions!