Coder Social home page Coder Social logo

patrickwds / matrix Goto Github PK

View Code? Open in Web Editor NEW

This project forked from resultadosdigitais/matrix

0.0 1.0 0.0 6.91 MB

#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 feeling in the same space.

JavaScript 92.77% HTML 3.28% Dockerfile 0.52% CSS 3.25% Shell 0.19%

matrix's Introduction

#matrix

Online open-source workplace for distributed teams.

CircleCI Status

Welcome to the #matrix

The objective of #matrix project is to offer a virtual environment office, as nice as physical offices. When we are working in a physical office is very common entering in discussion threads in many different environments, for example: on coffee, on lunch and others.

When we are working remotely there are no conversations like in a physical office. The #matrix project was born as a proposal to better that experience. The idea is to create a lot of virtual rooms where people can see and enter these rooms to participate.

#matrix produces a virtual office for remote teams. In this project, you can run a virtual office to simulate the physical environment. Read more on this post in Medium.

Matrix Home Screenshot

Versions

Version Name Description Docs
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 -

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

The rooms Inside of #matrix

The inside of #matrix there are some rooms. In this rooms is possible to see others colleagues and if they are talking or in a meeting in the avatar will appear a head set icon. (eg. In the image the guys in the Platform-Email room are in a meeting)

Office Page With Sidebar

The meeting room

You can only enter in a room to show for the other that you are available there through the ENTER ROOM button or enter in a meeting through the button ENTER MEETING.

Meeting Room With Sidebar

Getting Started

If you want run the #matrix, you need 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. in the root create a file variables.env

     GOOGLE_CLIENT_ID=000000000-xxxxxxxxxx.apps.googleusercontent.com
     GOOGLE_SECRET=gXXXXXXXXXXXXss
     GOOGLE_CALLBACK_URL=http://localhost:8080/auth/google/callback
     COOKIE_SESSION_SECRET=matrix-session
     COOKIE_SESSION_MAX_AGE=2592000000
     ENFORCE_SSL=false
     WHITELIST_DOMAINS="[]"
    
  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

Environments

The #matrix project has some environments that important to define.

  1. We are using Google to authorizations, you need create a credential here and before define this variables:

     GOOGLE_CLIENT_ID=${paste_your_client_id_here}
     GOOGLE_SECRET={paste_your_secret_here}
     GOOGLE_CALLBACK_URL=http://localhost:8080/auth/google/callback
    
  2. You can define a white List of trusted email domains can enter in the #matrix

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

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

     ROOMS_SOURCE=ENVIRONMENT
    
  5. 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"
        },
        {
           "id":"${UUID}",
           "name":"Data Services",
     	  "externalMeetUrl": "https://external-url-room/key-room"
        }
      ]
    

External Meet

The default video conferencing in meetings is Jitsi, but you can change that in any room, using 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"
	   }
	 ]

Running in Production

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"]

Contributing

We encourage you to contribute to The #matrix!

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."

matrix's People

Contributors

juliemar avatar hashtegner avatar lcezermf avatar megatroom avatar rd-systems avatar raphaellnascimento avatar jorgemdnt avatar hudolfhess avatar lgiacomini92 avatar jeantoledo avatar angeliski avatar diogonicoleti avatar capybot avatar felipecdo avatar drgomesp avatar diegocsandrim avatar enieber avatar henrylle avatar otherpirate avatar jeveaux avatar dvinciguerra avatar pedroo123 avatar joaohornburg avatar schaiana avatar

Watchers

James Cloos 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.