Skip to content


Folders and files

Last commit message
Last commit date

Latest commit



55 Commits

Repository files navigation


We all need somebody to talk to every now and then. The simple act of talking to somebody who is listening and supporting can be helpful in a variety of situations: from when you need to make an important decision about your relationship to when you just need to find a bug in your code.



Dear Teddy

  • Anonymous p2p life debugging
  • Anonymous chat app for asymmetric peer-to-peer therapy
  • General Problem Solver for the era of social computing
  • "Dear Teddy, please make everything alright"
  • Debug your life

How it works (scenarios)

  1. You go to a website or launch a mobile app (later).
  2. Choose whether you need to talk to a teddy bear (role:human) or want to be somebody's teddy bear (role:bear).
  3. Wait for a few seconds for a match (other random online user who is willing to perform an opposite role).
  4. You are dropped into a conversation (chat) with pre-filled beginning: Teddy said: "Hey, what's bothering you?"
  5. From there on the user (role:human) can type her messages and send them to the bear (role:bear)
  6. To prevent abuse, the bear (role:bear) can only reply with messages from a large number of pre-defined options, such as:
    • I understand.
    • I wish I could give you a hug right now!
    • Where could you have made a mistake?
    • I am so sorry to hear that.
    • Tell me more.
    • What do you think are your options?
    • And how about option B?
    • Have you tried talking to somebody else about it?
    • How old are you?
    • How old is he?
    • Hold on, I'll be back in a minute.
    • I think you really need to go talk to a doctor...
    • What does your mother think about it?
    • (plus various empathetic emojis)
    • ...
  7. At any point both user and bear can leave the conversation (which returns them to a role-choosing screen).
    • if the user (role:human) leaves the conversation first, then a message is displayed to the bear (as if from the user): "Thank you, you've helped a lot!"
    • if the bear (role:bear) leaves the conversation first, then a message is displayed to the user first ("Hmm, let me think.") and then as soon as a new bear is available he is dropped into the conversation (and asked to read the history of the conversation before continuing).
  8. Before leaving the conversation each is asked to rate his experience (0-5 stars and leave a comment).

Technology Stack

  • Meteor
  • React
  • Bootstrap


  • User (role:human or role:bear) - created every time with a new session (or we can persist it as a unique device via localstorage)
  • Chat - users are assigned to a chat. One chat per user at a time.
  • Message - single saying in a conversation. Belongs to conversation and user.
  • Phrase - one of the large number of pre-defined sayings that bear may say.

Routes & Pages

  • / - home. choose whether you want to be a bear or need a bear or go to about to find out more. When choice is made, we create a new user, assign the right role to him / her and redirect to the matching page.
  • /matching - loading page that is displayed while we are waiting for a match for a current user.
  • /chats/:chatId - single conversation page. Protected: available only to the users that are currently assigned to this conversation and admins. Displays the history (chat) of the conversation. And for the users - message entry form (freeform for user and search and choose from pre-defined for bear) as well as "Leave conversation" button.
  • /about - static page with some description about the project and contact form


debug your life (anonymous p2p life debugging)






No releases published


No packages published