develop
Register Today!
Fauna logo
Product
Solutions
Pricing
Resources
Company
Log InGet a DemoStart free trial
Fauna logo
Pricing
Customers
Log InGet a DemoStart free trial
© 0 Fauna, Inc. All Rights Reserved.

Related posts

Building the next generation search engine with Fauna and Cloudflare WorkersClive - Hannon Hill Engagement Tool Built with FaunaBuilding a Job Posting Platform with Fauna and Apollo

Start for free

Sign up and claim your forever free Fauna account
Get started

Stack Overflow and Glitch Notifications in Slack with Fauna

Chris Anderson|Apr 7th, 2018|

Categories:

Use Case
Fauna user Nicolas Grenié has created two open source applications connecting popular services with Slack chat. If you’ve ever wanted Slack notifications when there’s online activity, his code is a good template, so I’ll link to some highlights from this post. Check out how simple Fauna makes these operations.
Nicolas Grenié agrees, remarking in chat: “Fauna is my default go-to solution for any project I am starting that involves a database.”

Stack Overflow Monitor

Stack Overflow is a popular question and answer site, making it an important place for companies to keep up with what users are asking about their products. Stack Overflow Monitor simply posts a message to a Slack channel when new questions match your search terms.
As a serverless application, it requires no operational support from you once it is up and running. No servers to upgrade or restart, just code. Installing it only requires altering one settings file, and using the serverless command to deploy functions to AWS Lambda. Once configured with Stack Overflow, Slack, and Fauna API credentials, and your chosen search terms, it will automatically update your Slack channel as long as you keep your function in place.
The entire application logic is implemented in 101 lines of JavaScript and is triggered by AWS Lambda’s cron-like task scheduler. Each time it runs, it searches Stack Overflow for recent matches, and then uses Fauna to look up the message id. If a record exists that means it’s already been posted, otherwise the message is posted to Slack and a record is created. To give you an idea how simple that code is:
        client.query(
          q.Create(
            q.Class('questions'),
              {data: question }
            ));
        sendToSlack(question);
Because it is a simple Stack Overflow monitor, it doesn’t take advantage of Fauna’s transactional capabilities. Hardening the script for edge cases might involve tracking Slack API call success / failure state in a Fauna object as well, so that no messages are dropped.

Glitch Notifier

Glitch is a community where developers can help each other learn new skills. Answerers may only be interested in answering a narrow set of questions, so it’s nice to be alerted about activity instead of visiting the site to check for updates. Glitch Notifier is a service that alerts you in a Slack channel when new questions are available on Glitch.
Rather than a single-tenant serverless application, where you deploy an instance according to your parameters, Glitch notifier runs as a SaaS endpoint, allowing Glitch users to connect their Slack accounts and specify Glitch tags to follow. You can view the source code here, and if you sign up for a Glitch account, you can even launch your own fork of it.
Glitch Notifier uses Fauna not only to store the message ids of questions it has processed, but also to store each user’s notification preferences. Glitch questions are tagged, and users tell Glitch notifier which tags they’d like to be alerted on. Here is the query where the notifier loads all the users interested in the tags for a question.
  var users_in_db = client.query(
              q.Paginate(
              q.Union(
                q.Map(question.details.tags,
                  function(tag) {
                    return q.Match(q.Index("user_by_tag"), tag)
                  })
              )));
Once the user list is loaded, Glitch Notifier posts the messages to Slack using the endpoint stored with each user record.

Conclusion

Nicolas says helping others learn new skills is “a great way to give back to the community that welcomed me when I began.” We hope his code example above help you get started. If you’d like a code-level introduction to Fauna, here is our hello world tutorial.
Fauna costs nothing to get started with, and has a pay-as-you-go model that makes it easy to get started. Sign up today and you can create your own apps for free. Here are two more serverless starter kits: Authentication Boilerplate, and Distributed Ledger.

If you enjoyed our blog, and want to work on systems and challenges related to globally distributed systems, serverless databases, GraphQL, and Jamstack, Fauna is hiring!

Share this post

‹︁ PreviousNext ›︁

Subscribe to Fauna's newsletter

Get latest blog posts, development tips & tricks, and latest learning material delivered right to your inbox.