/painthings

Capstone Project

Primary LanguageJava

Painthings

Image

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.

Description

Painthings is a BANGKIT 2023 by Google, GoTo and Traveloka Capstone Project. We're from team C23-PS465 consisting of six members:

  1. Machine Learning - M181DSX0133 - Mochamad Thariq Zahir Abdillah – Universitas Indonesia
  2. Machine Learning - M181DSX3215 – Muhammad Rafly Januar – Universitas Indonesia
  3. Cloud Computing - C038DSX0612 – Satrio Kamil Widhiwoso – Institut Teknologi Sepuluh Nopember
  4. Cloud Computing - C360DSX3415 - Ramadhan Joema Mutsu – Telkom University
  5. Mobile Development - A181DSX1154 - Setasena Randata Ramadanie – Universitas Indonesia
  6. 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

Learning Path Details

Machine Learning

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.

Mobile Development

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.

Cloud Computing

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.

Installation

Cloud Computing

  1. Clone the repository:

    git clone https://github.com/setasenarandata/painthings.git
  2. Install the dependencies:

    cd project-folder
    npm install
  3. Set up the database:

    • Create a MySQL database.
    • Update the database configuration in the .env file.
  4. Start the application:

    npm start

Machine Learning

To install and run our machine learning model, please follow the steps below:

  1. Clone the Painthings repository by running the following command in your terminal:
git clone https://github.com/setasenarandata/painthings.git
  1. Open your IDE and navigate to File > Open.
  2. Select "painthings/ml" directory from the cloned repository.
  3. Install all the requirements by run "pip install -r requirements.txt" on your terminal.
  4. Click on the "Run" button in yout IDE to deploy the model on your device.
  5. 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

Mobile Development

To install and run our Android app, please follow the steps below:

System Requirements

  • Android Studio (latest version)
  • Android device or emulator with Pixel 4 Android 13.0, API Level 33

Installation Steps:

  1. Clone the Painthings repository by running the following command in your terminal:
git clone https://github.com/setasenarandata/painthings.git
  1. Open Android Studio and navigate to File > Open.
  2. Select "painthings/md/android" directory from the cloned repository.
  3. Wait for Android Studio to finish importing and building the app.
  4. Connect your Android device or launch an emulator with Pixel 4 Android 13.0, API Level 33.
  5. Click on the "Run" button in Android Studio to deploy the app on your device or emulator.
  6. 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!

Usage

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?

IMAGE ALT TEXT HERE

API Reference

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 All Users

GET /users

Retrieves all users. Requires authentication and admin access.

Get User by ID

GET /users/:id

Retrieves a user by their ID. Requires authentication and admin access.

Create a User

POST /users

Creates a new user.

Request Body Example:

{
  "name": "John Doe",
  "email": "johndoe@example.com",
  "password": "password123",
  "birthdate": "01-01-1990"
}

User Authentication

Login

POST /login

Authenticates a user and creates a session.

Request Body Example:

{
  "email": "johndoe@example.com",
  "password": "password123"
}

Logout

DELETE /logout

Destroys the user session and logs out the user.

Get Current User

GET /me

Retrieves the details of the current logged-in user.

Get All Posts

GET /posts

Retrieves all posts. Requires authentication.

Get Post by ID

GET /posts/:id

Retrieves a post by its ID. Requires authentication.

Path Parameters:

  • id: The id of the users post.

Create a 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 Post by Date

GET /posts/date/:createdAt

Retrieves a post by its creation date. Requires authentication.

Path Parameters:

  • createdAT: The date of the users post.

Artwork Management

Get Artwork by Cluster

GET /art/:cluster

Retrieves artworks based on a cluster.

Path Parameters:

  • cluster: The cluster of the artwork to retrieve.

Acknowledgements

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.

Resources

Cloud Computing

  • 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

Machine Learning

Mobile Development

Roadmap

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