All Projects β†’ ResultadosDigitais β†’ Matrix

ResultadosDigitais / Matrix

Licence: mit
#matrix is the online open-source workplace inspired in sococo.com for distributed teams to have the experience of work together each day, side-by-side. No matter where team members might be. Working in an online workplace is even more productive when people are feeling in the same space.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Matrix

Markitdown
πŸ“± A React app to preview and edit Markdown✍. You can also export it as HTML.
Stars: ✭ 26 (-96.93%)
Mutual labels:  hacktoberfest
Http Message
The HTTP-Message distribution contains classes useful for representing the messages passed in HTTP style communication.
Stars: ✭ 26 (-96.93%)
Mutual labels:  hacktoberfest
Hawkpost
Generate links that users can use to submit messages encrypted with your public key.
Stars: ✭ 843 (-0.47%)
Mutual labels:  hacktoberfest
Hoverboard
Conference website template
Stars: ✭ 935 (+10.39%)
Mutual labels:  hacktoberfest
Paypal Checkout Components
Javascript Integration for PayPal Button and PayPal Checkout
Stars: ✭ 938 (+10.74%)
Mutual labels:  hacktoberfest
Stay Focused
A brain computer interface app to help you stay focused!
Stars: ✭ 27 (-96.81%)
Mutual labels:  hacktoberfest
Adhesive
A chatbot serving as your glue between Telegram and Signal sticker packs
Stars: ✭ 25 (-97.05%)
Mutual labels:  hacktoberfest
Refreshversions
Life is too short to google for dependencies and versions
Stars: ✭ 841 (-0.71%)
Mutual labels:  hacktoberfest
Pact Js
JS version of Pact. Pact is a contract testing framework for HTTP APIs and non-HTTP asynchronous messaging systems.
Stars: ✭ 936 (+10.51%)
Mutual labels:  hacktoberfest
Awesome Sdn
A awesome list about Software Defined Network (SDN)
Stars: ✭ 841 (-0.71%)
Mutual labels:  hacktoberfest
Ember Inspector
Adds an Ember tab to the browser's Developer Tools that allows you to inspect Ember objects in your application.
Stars: ✭ 936 (+10.51%)
Mutual labels:  hacktoberfest
Create Content Loader
✏️ Tool to create your own react-content-loader easily.
Stars: ✭ 937 (+10.63%)
Mutual labels:  hacktoberfest
Girlscript chennai website
An open source project for creating a website that shall serve as a template for various chapters of GirlScript Foundation
Stars: ✭ 27 (-96.81%)
Mutual labels:  hacktoberfest
Music Reactive Ws2812b Arduino
LED STRIP WS2812B reacting to music connected through your AUX 3.5mm Jack as seen on cine-light youtube
Stars: ✭ 26 (-96.93%)
Mutual labels:  hacktoberfest
Pycdc
C++ python bytecode disassembler and decompiler
Stars: ✭ 842 (-0.59%)
Mutual labels:  hacktoberfest
Contribute A Thon
Month-long Open Source contributing event ✨
Stars: ✭ 26 (-96.93%)
Mutual labels:  hacktoberfest
Red Dashboard
An easy-to-use interactive web dashboard to control your Redbot.
Stars: ✭ 26 (-96.93%)
Mutual labels:  hacktoberfest
Attention Ocr
A Tensorflow model for text recognition (CNN + seq2seq with visual attention) available as a Python package and compatible with Google Cloud ML Engine.
Stars: ✭ 844 (-0.35%)
Mutual labels:  hacktoberfest
Elyra
Elyra extends JupyterLab Notebooks with an AI centric approach.
Stars: ✭ 839 (-0.94%)
Mutual labels:  hacktoberfest
Mysqlconnector
Async MySQL Connector for .NET and .NET Core
Stars: ✭ 942 (+11.22%)
Mutual labels:  hacktoberfest

#matrix

Online open-source workplace for distributed teams.

CircleCI Status chat on Slack

Welcome to the #matrix

The objective of #matrix project is to provide a virtual office environment like in a physical office. When we are working in a physical office, it's very common to go from one room to another to meet people and have conversations, for example: kitchen, lounge, gaming room, etc.

When working remotely there is less interaction with other members of your team like in a physical office. The #matrix project was born as a proposal to improve that experience. The idea is to allow you to create several virtual rooms mimicking the real world where people can enter an room.

#matrix creates a virtual office for remote teams. Read more on this post in Medium.

Matrix Home Screenshot

Table of Contents

Understanding #matrix

Rooms

When you are inside of the #matrix you will see several rooms. Because there is no way to actually see the person you can't tell if they are on a meeting or phone call. To help with that, we show a headset icon around their avatar. In the image below you can see that people in the Platform-Email room are in a meeting.

Office Page With Sidebar

Availability And Meetings

#matrix is a virtual environment office, so you can show you are available for the other on enter in a room through the ENTER ROOM button. This is like "Hey, I am here in the office". Or you can enter in a meeting through the button ENTER MEETING.

The embeded meet is provided by meet.jit.si service and this service is maintained by the Jitsi team at 8x8. Access the jitsi GitHub and learn more about this amazing video bridge service. You can change that using external meet option in any room.

Meeting Room With Sidebar

Installation

Environment Variables

The #matrix project has some environment variables that important to define.

  • We are using Google to authorizations, you only need to configure the Google API credentials following this step by step and after define these variables:

      GOOGLE_CLIENT_ID=${paste_your_client_id_here}
      GOOGLE_SECRET={paste_your_secret_here}
      GOOGLE_CALLBACK_URL=http://localhost:8080/auth/google/callback
    

    Note: if you used version 1, with variable GOOGLE_CREDENTIAL, follow this guide

  • You can change the secret and maximum age from session:

      COOKIE_SESSION_SECRET=matrix-session
      COOKIE_SESSION_MAX_AGE=2592000000
    
  • You can define a white List of trusted email domains can enter in the #matrix

      WHITELIST_DOMAINS=["domain1.com","domain2.com"]
    
  • If you are running with ssl It's important to configure SSL, to define this:

      ENFORCE_SSL=true
    
  • The #matrix needs to know, where it get rooms definitions:

      ROOMS_SOURCE=ENVIRONMENT | REMOTE
    
  • There is a config that define the rooms of The #matrix, If you want to customize your rooms or add and a new room, you have to configure a ROOMS_SOURCE=ENVIRONMENT and config ROOMS_DATA like the example:

      ROOMS_DATA=[
         {
            "id":"${UUID}",
            "name":"Lounge",
            "disableMeeting":true
         },
         {
            "id":"${UUID}",
            "name":"WAR ROOM CDP",
        "description": "Welcome to the WAR room"
         },
         {
            "id":"${UUID}",
            "name":"Data Services",
      	  "externalMeetUrl": "https://external-url-room/key-room"
         }
       ]
    

Another option is to have a remote rooms config file (this file needs to be accessible via http/s). You can configure a ROOMS_SOURCE=REMOTE and config ROOMS_DATA like the example:

	ROOMS_DATA=https://myfilelocation.io/myrooms_data.json

External Meet

The embeded meet is provided by meet.jit.si service, but you can change that in any room, using serices like Meet or Zoom. For that, you just need provide the parameter externalMeetUrl in your room config:

	ROOMS_DATA=[
	   {
	      "id":"${UUID}",
	      "name":"Meeting External",
	      "externalMeetUrl": "https://external-url-room/key-room"
	   }
	 ]

Authentication

The login is so simple. You only need to configure the Google API credentials following this step by step .

Login Login in Dark Mode

Docker Compose

If you want run the #matrix, you need docker-compose and follow steps:

  1. Clone this repository git clone [email protected]:ResultadosDigitais/matrix.git

  2. We are using Google to authorizations, you need create a credential here you can follow step by step

  3. duplicate file variables.example.env and rename to variables.env, after that set your environment variables;

  4. Run application with docker compose:

     $ docker-compose up
    
  5. Open your browser and access:

     http://localhost:8080/
    
  6. When you finish, you can run:

     $ docker-compose down
    

On GCP

If you prefer, you can run #matrix on GCP:

Run on Google Cloud

On Heroku

If you prefer, you can run #matrix in Heroku:

Deploy

On Kubernetes

It is possible to run #matrix on Kubernetes, what you need to have is a running cluster and a Docker repository to fetch image from.

Example files can be found in docs/kubernetes/. Copy the files and follow the instructions bellow:

  1. Change the values for MATRIX_IMG and MATRIX_TAG in deployment.yaml
  2. Adjust the GOOGLE_CALLBACK_URL
  3. Add your Google Credentials in credentials.env and create the secret with
     kubectl create secret generic matrix-credentials --from-env-file=env_credentials
    
  4. Create you rooms.json file and create a config map with
    kubectl create configmap matrix-rooms --from-file=rooms.json
    
  5. Apply the services and deployment files
    kubectl apply -f deployment.yaml
    kubectl apply -f service.yaml
    

Currently the service is using a LoadBalancer, it is possible to change to ClusterIP and use it behind an Ingress as well. Also note that in the example we are using HTTP, it is highly recommended to use HTTPS instead!

If you are using HTTPS, do change ENFORCE_SSL to true and add your company domain to WHITELIST_DOMAINS.

Production concerns

If you will run in production we strongly recommend you close your environment using an internal VPN. In this solution everybody with the link and a valid google credential can enter your virtual office. Because this is important for you to maintain your environment closed. Or you can define a variable WHITELIST_DOMAINS to limit only authorized users to enter in the #matrix. You have to choose a strong key to the COOKIE_SESSION_SECRET and have to put in GOOGLE_CALLBACK_URL your production domain.

	WHITELIST_DOMAINS=["domain1.com","domain2.com"]

If you can't use a VPN or don't have a custom domain for your users, and you still want to restrict access to the #matrix, you can define a WHITELIST_USERS variable to create an array of trusted e-mails that can access your virtual office.

	WHITELIST_USERS=["[email protected]","[email protected]"]

Versions

Version Name Description Docs
Latest upcoming small improvements changelog
2.0.0 Seraph New authentication Migration guide to 2.0.0
1.1.0 Morpheus New layout Pull request
1.0.0 Neo The one project -

Please read more details about our versions folowing changelog file.

Frequently Asked Questions

Some questions come up over and over again. Check here first: FAQ

Get in Touch

There are several ways to get in touch with us:

Contributors ✨

Thanks goes to these wonderful people (emoji key):

πŸ“ 🚧 πŸ“’ 🚧 πŸ“– 🚧 πŸš‡ 🚧 πŸ“–
Diogo Nicoleti

πŸ’»

Ricardo F. Verhaeg

πŸ“–

Natalia Favareto

πŸ’»

JoΓ£o Ernesto Arzamendia

πŸ’»

Guilherme Nogara

πŸ’»

Phiter Fernandes

πŸ’»

Silvana Lima

πŸ’»

This project follows the all-contributors specification. Contributions of any kind welcome!

Everyone interacting in #matrix codebase, issue trackers, chat rooms, and mailing lists is expected to follow code of conduct.

License

The #matrix is released under the MIT License

"The answer is out there, Neo, and it's looking for you, and it will find you if you want it to."

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].