Git Product home page Git Product logo

ocean-chat's Introduction

Logo

Ocean Chat

A program that will pair you up with the person who has the closest personality to your own!

Personality is defined by the big 5 test. You can take the test here: https://openpsychometrics.org/tests/IPIP-BFFM/

"Closest personality" is found by taking the euclidean distance between the 5 dimension scores of two personalities

This project is w.i.p.

For developing locally:

Run the backend with cargo run --features server.

Open project in another terminal, do dx serve.

Open in yet another terminal, do dx serve --port 8081 (or any free port other than first one)

Note

Client-side code won't compile if you haven't run the backend, as it generates some textfiles that will be packaged into the client's binary

For building locally:

To build the backend, run cargo build --features server --profile release-server

To build the frontend, run dx build --release

ocean-chat's People

Contributors

tbs1996 avatar neeleshpoli avatar henriquekirchheck avatar luisbedoia avatar

Stargazers

a.v.mantzaris avatar  avatar  avatar

Watchers

 avatar

ocean-chat's Issues

Searching for peer starts immediately

Let the user initiate the first search when visiting the site.

After 1st connection is disconnected (for whatever reason) and a user is still on the website, search can continue automatically.

Also, there should be an option to stop searching completely. For example, you may want to change your scores (e.g. you share a computer with a friend and want to see who they connect with or w/e).

disable chat if not connected

This used to be the case, but when adding sidebar, the app started crashing when i move between pages. removing the disabling toggle fixed it, for some reason. so would be nice if we could set it back without crashing the app x)

Remove user from waiting-queue if they disonnect

atm it's a bit awkward, where we dont really purge the users from queue until theyre matched up with someone.

it required a bit thought on the architecture, receiving messages requires mutable access to the axum websocket, so it's not straight forward for all those websockets to be 'running' while at the same time theyre stored in a vector

General tasklist

anything we wanna do, we can use the proper project view later, for now i think this is simpler

  • swipe between pages
  • #112
  • add to play store
  • add to appstore
  • make score comparison page more appealing
  • more details of why conneciton closed (custom enum)
  • #122
  • #113
  • #120
  • add backend tests
  • Share your scores easily
  • better indicator of status (waiting/idle/connected)

Create persistent chats

  • Allow clients to chat again with people they meet
  • Store chat messages in Indexed DB on the client
  • Allow server to temporarily store messages
  • Remove messages from server once client downloads them

Setup website to be a PWA

Making the website a PWA allows the website to be installed as an app to devices. It allows the website to be better integrated with the OS. It also can cache and make the website available offline.

make the chat window autoscroll

at least: whenever a new message arrives or is sent.

ideally: only if the user is scrolled all the way down, so that you can scroll up in conversation and your view wont go down when your peer sends a message

Vectorize Logo

Currently the logo is a raster image, and this has drawbacks. The logo will be vectorized.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.