Painthings is a mobile application designed to support individuals in exploring and processing their emotions through a combination of art and journaling. The app offers a unique and meaningful experience by allowing users to search for paintings or artworks based on specific emotions they are feeling. These selected artworks serve as prompts for journaling, helping users delve deeper into their emotions and express themselves through writing.
With Painthings, users can create a digital diary where they can save their journal entries, creating a personal record of their emotional journey. The app aims to provide accessible emotional well-being resources by harnessing the therapeutic benefits of art therapy and expressive writing.
Painthings is a BANGKIT 2023 by Google, GoTo and Traveloka Capstone Project. We're from team C23-PS465 consisting of six members:
- Machine Learning - M181DSX0133 - Mochamad Thariq Zahir Abdillah – Universitas Indonesia
- Machine Learning - M181DSX3215 – Muhammad Rafly Januar – Universitas Indonesia
- Cloud Computing - C038DSX0612 – Satrio Kamil Widhiwoso – Institut Teknologi Sepuluh Nopember
- Cloud Computing - C360DSX3415 - Ramadhan Joema Mutsu – Telkom University
- Mobile Development - A181DSX1154 - Setasena Randata Ramadanie – Universitas Indonesia
- Mobile Development - A151DSX3594 – Ariyo Tejo Sumarto – Universitas Brawijaya
According to our project plan, we have completed the development of the Android app functionality with WikiArt Dataset. Here's the summary of our progress in each learning path:
Learning Path | Completion Status |
---|---|
Machine Learning | 100% Complete |
Mobile Development | 100% Complete |
Cloud Computing | 100% Complete |
In the Machine Learning learning path, we focused on building clustering models using the TensorFlow library and Scikit-Learn library. We utilized Flask to deploy the model and performed data preprocessing tasks such as normalization for the dataset and feature selection.
For the Mobile Development learning path, we successfully implemented all planned features in the Painthings Android app. We utilized Retrofit for seamless HTTP requests, integrated Glide for efficient image loading from the internet, and incorporated shared element animations to enhance the user experience.
In the Cloud Computing learning path, we created APIs for user authentication, posts, and choosing paintings. We deployed the backend service and machine learning models to the Google Cloud Platform using App Engine with the help of Flask.
-
Clone the repository:
git clone https://github.com/setasenarandata/painthings.git
-
Install the dependencies:
cd project-folder npm install
-
Set up the database:
- Create a MySQL database.
- Update the database configuration in the
.env
file.
-
Start the application:
npm start
To install and run our machine learning model, please follow the steps below:
- Clone the Painthings repository by running the following command in your terminal:
git clone https://github.com/setasenarandata/painthings.git
- Open your IDE and navigate to File > Open.
- Select "painthings/ml" directory from the cloned repository.
- Install all the requirements by run "pip install -r requirements.txt" on your terminal.
- Click on the "Run" button in yout IDE to deploy the model on your device.
- Wait for the link to appear in your terminal and add '/predict' at the end of the link to use the machine learning model endpoint
To install and run our Android app, please follow the steps below:
- Android Studio (latest version)
- Android device or emulator with Pixel 4 Android 13.0, API Level 33
- Clone the Painthings repository by running the following command in your terminal:
git clone https://github.com/setasenarandata/painthings.git
- Open Android Studio and navigate to File > Open.
- Select "painthings/md/android" directory from the cloned repository.
- Wait for Android Studio to finish importing and building the app.
- Connect your Android device or launch an emulator with Pixel 4 Android 13.0, API Level 33.
- Click on the "Run" button in Android Studio to deploy the app on your device or emulator.
- Wait for the app to install and launch.
Alternatively, if you prefer not to build the app from the source code, we also provide an APK file for easy installation. Simply download the APK file and install it on your Android device. APK File: Link
Please note that you may need to enable "Unknown sources" in your device's settings to install the APK file.
Now you're ready to explore Painthings and enjoy its features!
Our final deliverables is a native Android application. After you've managed to install or run the app in your device or emulator, you can register and login to Painthings. Simple right?
To use the application, you need to send HTTP requests to the provided API endpoints. You can use tools like curl or Postman to interact with the API.
GET /users
Retrieves all users. Requires authentication and admin access.
GET /users/:id
Retrieves a user by their ID. Requires authentication and admin access.
POST /users
Creates a new user.
Request Body Example:
{
"name": "John Doe",
"email": "johndoe@example.com",
"password": "password123",
"birthdate": "01-01-1990"
}
POST /login
Authenticates a user and creates a session.
Request Body Example:
{
"email": "johndoe@example.com",
"password": "password123"
}
DELETE /logout
Destroys the user session and logs out the user.
GET /me
Retrieves the details of the current logged-in user.
GET /posts
Retrieves all posts. Requires authentication.
GET /posts/:id
Retrieves a post by its ID. Requires authentication.
Path Parameters:
id
: The id of the users post.
POST /posts
Creates a new post. Requires authentication.
Request Body Example:
{
"love": 5,
"sadness": 2,
"anger": 3,
"happiness": 2,
"disgust": 1,
"optimism": 3,
"art_id": "577273feedc2cb3880ca5e94",
"journal": "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
}
GET /posts/date/:createdAt
Retrieves a post by its creation date. Requires authentication.
Path Parameters:
createdAT
: The date of the users post.
GET /art/:cluster
Retrieves artworks based on a cluster.
Path Parameters:
cluster
: The cluster of the artwork to retrieve.
We would like to express our sincere gratitude to BANGKIT 2023 by Google, GoTo, and Traveloka for providing us with an incredible opportunity to enhance our skills and knowledge. We are immensely grateful for the support and guidance we received throughout this capstone project.
We extend our heartfelt thanks to our mentors, Rezki Trianto and Eldho Rizcky Al Risyad, for their invaluable expertise and continuous assistance. Their mentorship played a pivotal role in the successful completion of this project.
- NodeJS as the runtime environment for our server-side application
- ExpressJS to develop our RESTful APIs
- GCP to deploy our backend services and machine learning models
- Coursera as our learning platform
- Dicoding as our learning platform
- GCSB as our learning platform
- Postman as a tool for API development and testing
- MySQL as our relational database management system
- XAMPP as our local development environment
- Coursera as our learning platform
- Python as our programming languge
- Google Colab as our IDE
- Tensorflow for data preproccessing
- Scikit-learn for model clustering
- Flask for model deployment
- Pandas to load datasets
- Dicoding as our learning platform
- Figma as our main Designing Tools
- Android Studio as our IDE
- Kotlin as our Programming Language
- Glide as our Image Loading and Caching
- Retrofit as our main HTTP Requests Library
- PopupBarChart to create and animate Bar Charts
- StyleableToast to create styleable toast
- coil-kt as our coroutines image loader
Date | Event |
---|---|
July, 2023 | Launch Beta Version |
August, 2023 | Add Streak and Widget features |
September, 2023 | Firebase Analytics |
October, 2023 | Collaborate with partners |
November, 2023 | UAT with partners |
December, 2023 | Launch Main Version and Promote |