Git Product home page Git Product logo

yak-chat's Introduction

Yak Chat

Yak Chat is a school project to research modern technologies such as WebSockets, Service Worker and offline storages to create an efficient and easy-to-use chat application.

The frontend is implemented with React, styled-components and mobx-state-tree, and the light-weight backend is built with Koa and MongoDB. Real-time communication is dealt with socket.io on both sides, and data is persisted with localStorage and the application caching is provided by create-react-app out of the box via a Service Worker.

Current features:

  • Send and receive messages in real-time
  • Create multiple channels
  • Invite people to channels with a QR-code
  • Directly join channel by it's name
  • See how many people are currently in the channel
  • Automatically generate funny channel name suggestions


Requirements

Development

First install linters:

$ npm install

Then start the app:

$ npm run up

Then open localhost:3000 in the browser.

Production demo

Build the production demo version with ngrok:

First start ngrok:

$ ./ngrok http -region eu 3000

Then change the API_URL in /client/src/config.js to be the https url that ngrok outputs.

Then build the demo:

$ npm run demo

If you have made changes after last build re-build from scratch:

$ npm run demo:clean

Handy commands

Remove current containers:

$ npm run down

Remove current containers and rebuild them:

$ npm run clean:build

Remove node_modules and install packages:

$ npm run clean:install

When you add a new npm package you need to reinstall packages inside the Docker container:

$ npm run reinstall:client
$ npm run reinstall:server

Screenshots

yak-chat's People

Contributors

aquu avatar fleebeee avatar temzasse avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

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.