Code Monkey home page Code Monkey logo

mensaje's Introduction

Mensaje

A small app to do company-wide announcements over Slack. It tries to be as async as email while promoting engagement like Slack messages do.

Motivation

I've been thinking lately about how we communicate as a company as a whole, not just individual projects, but how the company shares updates with everyone, and I think we can do better.

One of the challenges of being remote is that Slack is our main gathering place. If I want to communicate with everybody, I can talk in the #general channel, but I have no guarantees you will see my message. Maybe you were focusing on a task, and by the time you re-enable notifications, there are high chances you miss some important info since chat is for quick, informal communication.

Maybe a more appropriate method to send global communications is over email. I love email because it respects everybody's time, but it lacks the ACK part Slack has with reactions and threads.

I would love to have a method that's as async as an email but retains Slack's engagement.

- Cherta on the first Mensaje shared in the Ingenious Slack

Mensaje is a small app that tries to solve the problem mentioned above. It tries not to bother users with @here or @channel. Instead, it posts regular messages to Slack channels and has (or will have) a bot that reminds you about messages you might have lost.

It also provides some basic reaction features so you can ACK a message from Mensaje itself. Remember, the goal is to be as async as possible but still encourage you to react. I have more ideas to boost engagement, but if you have some, please let me know.

Architecture

Architecture

Mensaje is a simple Blitzjs app that connects to a PostgreSQL database hosted in Digital Ocean. It also uses Quirrel, a Job Queueing software that's specifically made for serverless environments. Finally, it uses the Slack API for authenticating and impersonating users in Slack. This allows Mensaje to publish messages as real users.

All this runs on a Vercel serverless deployment infrastructure.

Installation

$ git clone [email protected]:ingenious-agency/mensaje.git
$ cd mensaje
$ yarn

Local development

You want to change the following environment variables in your .env.local file.

DATABASE_URL=postgresql://user@localhost:5432/mensaje
NEXT_PUBLIC_SLACK_CLIENT_ID=
SLACK_CLIENT_SECRET=
SLACK_TOKEN=
SLACK_TEAM_ID=
NEXT_PUBLIC_WEBSITE_URL=http://localhost:3000

All slack tokens and secrets you can get them from Slack upon app creation. If the app is already created for your team please ask the creator to add you as a collaborator.

The easiest way to get your SLACK_TEAM_ID is following what's described in this Stack Overflow answer.

$ yarn blitz db migrate
$ yarn start

In a different terminal run de dev version of Quirrel.

$ yarn quirrel

Deployment

Pushing to main triggers a prod deploy while pushing to any other branch doesn't trigger any preview deployment.

mensaje's People

Contributors

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