GithubHelp home page GithubHelp logo

danerieber / harmon-react Goto Github PK

View Code? Open in Web Editor NEW
5.0 2.0 3.0 4.2 MB

A simple, fun, and fast way to chat with your friends.

License: GNU Affero General Public License v3.0

TypeScript 93.65% Nix 2.58% JavaScript 1.06% CSS 1.41% Dockerfile 1.31%

harmon-react's Introduction

Harmon

A simple, fun, and fast way to chat with your friends.

harmon-react provides a web interface for messaging and voice calling that interacts with the harmon-server-go API service.

Features

  • Text chat
  • Voice calling
  • User list with presence/status
  • User customizations: username colors, icons, banner images, and statuses
  • Simple vim/helix style keybinds for quick navigation

Requirements

Nix users can just use nix develop or use nix-direnv and direnv allow . to automatically load the requirements when you enter the folder.

Otherwise, please manually install the following required software:

  • Bun
  • Node 20
  • ESLint (for contributors)
  • Prettier (for contributors)

Get Started

Install Bun packages

bun i

Start development server (note: you will also need to run harmon-server-go)

# start peerjs if you want calls to work
bunx peerjs --port 9000
bun run dev

Build/run for production

bun run build
bun run start

Deployment

See harmon-deploy for examples.

Contributing

As long as you are not on an iPad editing code through the GitHub website... Go ahead and open an issue or a PR!

harmon-react's People

Contributors

danerieber avatar jojxd avatar masoniis avatar

Stargazers

Jaryd Meek avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

harmon-react's Issues

Make shift-enter work more predictably

Currently, shift+enter makes a newline. However, when there are multiple lines in the chat, pressing enter creates newlines, and you have to use control+enter to then send the message. This confused John and he wants to fix it.

Fix it, John.

Scroll to end after images load

Right now, the scroll to bottom triggers on load, but seems to be scrolling to the bottom before the computed height of the div is updated after loading images, meaning the scroll position is not actually at the bottom

@mentions system should use user IDs rather than usernames

It would probably by easiest to just detect @user-uuid-value in a message and replace it with that user's username. When a user types @username in their chat input, it should be replaced with @user-uuid-value before being sent to the server.

I feel like doing this on the client is easier than implementing mentions tech server-side.

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.