Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/abtaaahi/dont-worry
Your Personal Therapist
https://github.com/abtaaahi/dont-worry
coroutines customsearch-api firebase-realtime-database fragments glide kotlin lottie-animation mongodb mvvm nodejs oauth2 openweathermap-api programmablesearchengine python quotes-api room-database socketio tmdb-api youtube-api-v3
Last synced: about 2 months ago
JSON representation
Your Personal Therapist
- Host: GitHub
- URL: https://github.com/abtaaahi/dont-worry
- Owner: abtaaahi
- Created: 2024-08-22T17:18:58.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-10-23T19:31:01.000Z (2 months ago)
- Last Synced: 2024-10-24T05:58:42.002Z (2 months ago)
- Topics: coroutines, customsearch-api, firebase-realtime-database, fragments, glide, kotlin, lottie-animation, mongodb, mvvm, nodejs, oauth2, openweathermap-api, programmablesearchengine, python, quotes-api, room-database, socketio, tmdb-api, youtube-api-v3
- Language: Kotlin
- Homepage: https://sites.google.com/view/dontworrylinks/home
- Size: 16 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Don't Worry
Your personal space for emotions, connections, and daily inspiration.
## Table of Contents
- [Introduction](#introduction)
- [Screenshots](#screenshots)
- [Video](#video)
- [Features](#features)
- [Technologies Used](#technologies-used)
- [Tools](#tools)
- [APIs](#apis)
- [Installation](#installation)
- [How to Use](#how-to-use)
- [Server Setup](#server-setup)
- [Contributing](#contributing)## Introduction
"Don't Worry" is an innovative mobile application designed to help users track their emotions, connect with others, and explore content tailored to their mood. The app provides a safe space for expression and personal growth.
## Screenshots
Here are a few screenshots of the app in action:
## Video
Watch a demo of the app to see it in action:[![Demo Video](https://img.youtube.com/vi/XXAHZWyprVs/0.jpg)](https://www.youtube.com/watch?v=XXAHZWyprVs)
## Features
- **Splash Screen with Lottie Animation**: Engaging visual to welcome users.
- **User Authentication**: Sign up using Google authentication.
- **Personal Information Page**: Collects essential user details after sign-in.
- **Daily Mood Check-In**: Users can select their mood from 5 options and tell about their mood each day.
- **Personalized Feed**: A dynamic feed combining social posts, articles, videos, and music based on mood submissions.
- **Content Sections**: Separate areas for movies, videos, music, and articles, all mood-based.
- **Refresh Option**: Users can refresh the feed for the latest content.
- **Media Interaction**: Watch videos, listen to music, read articles and view movie trailers, with suggestions for similar content.
- **Social Space**: Users can post updates and interact with others, including seeing who is online using SocketIO Node.js server integrate with MongoDB.
- **Connection Requests**: Send requests through email, maintaining privacy (sender cannot see recipient's email).
- **Reactions on Posts**: Users can react to others' posts, with data saved in Firebase.
- **Places Activity Page**: Suggests 10 activities with 15 places to visit nearby.
- **Weather Updates**: Shows a 5-day every 3-hour weather forecast based on user location, with suggestions based on current weather.
- **Quote API**: Displays a new quote on app launch or refresh.
- **Profile Management**: Users can view their posts, feelings, and modify personal details.
- **Voice Recording Feature**: Users can record their voice, analyze it, and see the sentiment using a Node.js server with Python sentiment analysis.
- **Chatbot Interaction**: Talk to an AI bot, with no data saved after the session ends.
- **Offline Access**: Users can view their homepage feed offline as it is saved in the room database.## Technologies Used
- **Frontend**: Kotlin
- **Backend**: Node.js, Express
- **Databases**: Firebase, Room Database
- **Sentiment Analysis**: Python
- **Real-time Communication**: Socket.IO
- **Email Handling**: Nodemailer## Tools:
* Android Studio
* VS Code
* Render
* Railway
* Google Cloud Console
* MongoDB Cluster
* Postman
* Kaggle / Colab
* GitHub## APIs:
- YouTube Search API (for videos and music)
- Custom Search API (for articles)
- TMDB API (for movies)
- Open Weather Map API (for weather updates)
- Ninja API (for quote)
- Rev API (text to speech)## Installation
Clone the repository:
```
git clone https://github.com/abtaaahi/Dont-Worry.git
```Install dependencies:
```
implementation (libs.play.services.auth)
implementation (libs.glide)
implementation (libs.circleimageview)
implementation (libs.core)
implementation (libs.retrofit)
implementation (libs.converter.gson)
implementation (libs.logging.interceptor)
implementation (libs.exoplayer)
implementation(libs.firebase.database)
implementation(libs.play.services.location)
implementation(libs.firebase.storage)
implementation(libs.kotlinx.coroutines.android)
implementation(libs.androidx.lifecycle.viewmodel.ktx)
implementation (libs.androidx.fragment.ktx)
implementation (libs.socket.io.client)
implementation(libs.lottie)
implementation(libs.androidx.room.runtime)
implementation(libs.androidx.room.ktx)
kapt(libs.androidx.room.compiler)
implementation(libs.androidx.swiperefreshlayout)
```Add your API Url in `BaseUrls.kt` :
```
object BaseUrls {
const val BASE_URL_GOOGLE_CUSTOM_SEARCH = "https://"
const val BASE_URL_GOOGLE = "https://"
const val BASE_URL_MOVIE = "https://"
const val BASE_URL_WEATHER = "https://"
const val BASE_URL_CURRENT_WEATHER = "https://"
const val BASE_URL_QUOTES = "https://"
const val BASE_URL_REV = "https://"
const val BASE_URL_TEXT_BLOB = "https://"
const val BASE_URL_SOCIAL_SPACE = "https://"
}
```In `gradle.properties` add your API Key:
```
GOOGLE_API_KEY=
CUSTOM_SEARCH_ENGINE_ID=
NEWS_API_KEY=
TMDB_API_KEY=
QUOTE_API_NINJA_KEY=
OPEN_WEATHER_API_KEY=
REVAI_ACCESS_TOKEN=
```In your `build.gradle.kts` :
```
android {
defaultConfig {
buildConfigField("String", "GOOGLE_API_KEY", "\"${project.properties["GOOGLE_API_KEY"]}\"")
buildConfigField("String", "CUSTOM_SEARCH_ENGINE_ID", "\"${project.properties["CUSTOM_SEARCH_ENGINE_ID"]}\"")
buildConfigField("String", "NEWS_API_KEY", "\"${project.properties["NEWS_API_KEY"]}\"")
buildConfigField("String", "TMDB_API_KEY", "\"${project.properties["TMDB_API_KEY"]}\"")
buildConfigField("String", "QUOTE_API_NINJA_KEY", "\"${project.properties["QUOTE_API_NINJA_KEY"]}\"")
buildConfigField("String", "OPEN_WEATHER_API_KEY", "\"${project.properties["OPEN_WEATHER_API_KEY"]}\"")
buildConfigField("String", "REVAI_ACCESS_TOKEN", "\"${project.properties["REVAI_ACCESS_TOKEN"]}\"")
buildConfigField("String", "GEMINI_CHATBOT_API", "\"${project.properties["GEMINI_CHATBOT_API"]}\"")
}
buildFeatures {
buildConfig = true
}
}
```Build > Make Project
You will see your API Key stored in `BuildConfig.java`
Make sure this permissions are added in `AndroidManifest.xml` , otherwise app will not run as expected:
```
```
Firebase SDK `.json` file & Google Services `.json` file must add in `app` directory.## How to Use
- Launch the app on your device.
- Sign up using your Google account.
- Fill out your personal information.
- Select your mood daily and explore personalized content.
- Use the social space to connect with other users.
- Check the weather and discover nearby activities.
- Record your voice and analyze it for sentiment.
- Chat with the AI bot for fun and interaction.## Server Setup
Install required packages:
`npm install`
Add environment variables in `.env` :
```
MONGO_URI=mongodb+srv://:@.mongodb.net/?retryWrites=true&w=majority
[email protected]
GMAIL_APP_PASSWORD=
```
Add `MongoDB` String from Cluster with `Node.js` Setup.Get Gmail App Password after 2-step verification.
**Sentiment Analysis** :
`pip install`
Use python's latest version for better optimization.
## Contributing
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a new branch (`git checkout -b feature/YourFeature`).
- Make your changes and commit them (`git commit -m 'Add new feature'`).
- Push to the branch (`git push origin feature/YourFeature`).
- Open a pull request.You can also add *issues* it will be great for me to develop my skills.