Skip to content
/ opa Public
forked from credija/opa

Opa - A XMPP Chat Client for the Web

Notifications You must be signed in to change notification settings

matzeso/opa

 
 

Repository files navigation

Opa - A XMPP Chat Client for the Web

Introduction

Logo Opa

Opa is an open-source XMPP chat client for the Web (SSR) entirely built on top of Vue, NuxtJS and ElementUI that follows the coolest trends out there bye bye Flash and Desktop clients!

alt text

Trivia: "Opa", among many meanings in Brazil, is also used informally as a greeting!

Opa boasts a modern design having a clean interface that offers a good user experience. The interface is inspired by numerous web apps that already exist in the Javascript environment, such as WhatsApp Web, Telegram Web, Discord, Rocket Chat, etc...

Day Mode Night Mode

Opa was born as an internal project to fill the absence of an XMPP client that did not need an installation on each machine, was developed with current techs, had a modern design and supported common features for a chat in a corporate environment.

A demo will be available soon.


Has some feature in mind, suggestion or come across a bug? Open an Issue so we can discuss 👍


Features

Features Opa already has:

  • BOSH/WebSocket support

  • Multi-language support

    • Basic en-US | pt-BR for the time being, but you can develop your own translation by following the Internationalization section instructions of this README.
  • Responsive for desktop screens (up to 1024x768)

  • One-to-one chat

  • NEW! Basic Emoji support through Unicode

    • Credits to Tweemoji for the emoji arts
  • NEW! Chatbox with support to rendering emojis and resizing for better text writing

  • Profile presence change option

  • Automatic presence change when away

    • After 20 minutes without performing any action in the app
  • Profile avatar change and delete option.

    • Your XMPP server must support V-Card.
  • Contacts organized by group (Like Pidgin)

  • Contacts details.

    • Your XMPP server must support V-Card.
  • Contacts search

  • Browser tab icon change when has a new message

  • Browser desktop notification

    • 1-minute interval.
  • Sound desktop notification

    • 1-minute interval.
  • Option to show/hide offline contacts

  • Option to enable Day/Night mode

  • Conversation history from the server.

    • Your XMPP server must support these protocols:
    • MSM
    • RSM
    • Note: The client always searches the history on the server, meaning the conversation history is not cached locally.

Getting Started

The initial idea of Opa was to be a plug-n-play client to any XMPP server.

Following this you have two ways of running this app:

  • Cloning, configuration, and building from the source, then hosting the /dist folder

  • Using the Docker container provided and overwriting the global configuration file

Installation

alt text

The installation with Docker is very straightforward. You will, however, need to connect to your XMPP server. To do that you need to overwrite the /app/static/config/app-config.json (explanation of each option in the config file is in Configuration section):

docker run --name opa -d --restart=always \
  --publish 3000:3000 \
  --volume /opt/your-config.json:/app/static/config/app-config.json \
  -m 512MB \
  credija/opa

Note: If you want to use a XMPP server in Docker we recommend our Openfire build which is available here: https://github.com/credija/openfire

Configuration

To connect to an XMPP server you will need to overwrite the app-config.json. The options are these:

  • VUE_APP_XMPP_SERVER_ADDRESS: The address for the HTTP/S BOSH or WSS WebSocket connection.
  • VUE_APP_XMPP_SERVER_DOMAIN: Your chat domain.
  • VUE_APP_LOCALE: The locale needs to be set in the format "language-country", like "en-us", "pt-br", etc since this value will be used to format date through the app.

Internationalization

Opa has a plug-n-play structure for locales, which are stored in /static/locales.

If you want to test Opa but it doesn't have your language you can develop your own translation to the app following the example provided by en-us.json.

Once finished send a pull request on the develop branch with your translation so we can add it to Opa.

Note: It's important to remember that the file needs to follow the 'language-country.json' format which is the same used in the VUE_APP_LOCALE option.

Compatibility

Tested Browsers:

  • Google Chrome
  • Firefox
  • Opera
  • Microsoft Edge

Not Tested:

  • IE
  • Safari

Tested XMPP Servers:

  • Ignite Realtime: Openfire Server

Credits

  • Thanks to the IT team of Sicoob Credija which provided support, testing, and infrastructure for the development of this project.

  • Thanks VueJS, NuxtJS, Element-UI, StropheJS for the core libraries of this project.

  • The emojis used in this app comes from the Twemoji project and are licensed under CC-BY 4.0.

About

Opa - A XMPP Chat Client for the Web

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 69.4%
  • HTML 19.1%
  • CSS 10.0%
  • Vue 1.3%
  • Dockerfile 0.2%