D++ = Diary Plus Plus = Diary with a Cute Cat :)))

Inspiration

Many people write in diaries to unwind from busy days and keep their thoughts safe. The catch? The diary doesn't talk back or show any emotion. It's like pouring your heart out to a silent wall. Whether you're happy or feeling down, there's no response. Over time, this can make journaling feel dull and less helpful for some. However, people often write diaries because they have some secrets to say but they do not want to tell another living person. The solution is AI! By deploying modern LLMs, it provides another definition of writing diaries. Diaries still keep valuable secrets, but the process is now interactive, and hopefully brings people warmth and comfort.

What it does

Fret not! D++ is here to help! Every time you record something in the diary, our friend Diary Cat will give you a picture of cat that represents today’s happening and your emotions.

How we built it

Our app allows users to input their diary. When the user presses the picture icon to generate a picture, our app first deploys LLM to summarise the events and mood of the diary, and create a relevant image prompt related to a cat. The backend system will send the image prompt to generate the cat picture which will be returned to the users :D

Tech Stack:

  • Frontend
    • React
    • Vite
    • Typescript
  • Cloud
    • AWS Cognito
    • AWS DynamoDB
    • AWS S3
    • AWS Bedrock
    • AWS Lambda
  • LLM
    • Llama 2
    • Stable Diffusion

Challenges we ran into

Firstly, it is our first time to dive into the family of AWS, which takes us some time to configure everything. AWS is not meant for people without prior experience to use. It has poor documentation and confusing design in user interface. We have now gained an understanding that AWS would only be suitable for bigger companies, but it should not be considered as a prioritised choice for small teams. Firebase perhaps would suit that need better. More specifically:

  • AWS has IAM, IAM Center, Users, Organization, etc. so many places for organising users, and it is very hard and super unintuitive for us to invite others to the team.
  • AWS's user interface is not connected to the documentation. This means that it often takes several searches to actually find the documentation of something. This wasted a lot of time.
  • AWS's permissions system is very complicated. Oftentimes some seemingly ok permissions would not give you want you need.
  • AWS has created unnecessary complications with respect to lambda functions. The lambda functions that AWS created cannot even be called directly on the frontend.
  • AWS's documentation has very few code and little images. It is very hard for you to know what it is exactly talking about.

Secondly, due to rate limit issues, we decided to switch from accessing GPT via API to writing our own customised API to access existing LLMs on AWS Bedrock (namely Llama 2 and Stable Diffusion). We have discovered that GPT is really the state of art in terms of text generation. Other models pale in comparison to GPT.

Accomplishments that we're proud of

  • Walked through most parts of AWS that are relevant to building an app.
  • Implemented secure & reliable LLM combinations on the cloud.
  • Implemented a pretty front-end app.

What we learned

  • Touch into AWS.
  • Customised API design to access existing LLMs.
  • Software engineering is hard, very hard, very very hard. Good sleep and good health are important but hard to maintain if you are a software engineer.

What's next for D++

  • Fix the connection between D++ and Stable Diffusion model..
  • Add new functionality: Produce some words of encouragement together with the cat image.
  • Further polish of UI and artistic elements.

Built With

Share this project:

Updates