Seguir

A social network API, Server and Client that lets you rapidly add social features to your website or app.

Seguir provides a backend for a simple social network, with persistence in Cassandra or Postgres. It is MIT licensed, with high test coverage (and getting higher) and code driven API docs. So, what can it do?

  • Multi-tenant, manage application keys and secrets
  • Command line client to let you manage the install and create applications
  • Seguir users are created and linked to your own authentication system
  • Cache arbitrary data against a user (to avoid n+1 issues when rendering newsfeeds)
  • Follow another user (twitter style - not reciprocal)
  • Submit a friend request, and become friends with another user if accepted (reciprocal like FB)
  • See friends or followers you have in common with another user
  • Post publically on your news feed, all followers get this on theirs
  • Post privately on your news feed, only your friends can see it

How about an example?


Visit Github Page

Seguir ships with three separate tiers of API, that allow you to decide how you want to integrate it into your application.

Node API

Example

This is a raw API that you can require into your application, where your application will be interacting directly with the database. This means no additional network hops but your app and the social features of Seguir will then need to scale together.

Rest API

Docs

The Rest API is a thin layer around the Node API that creates a set of restful endpoints that mean you can use Seguir from any language you choose. It can be deployed separately, and lets you secure and scale it however you like. This is a simple service built on top of the Node restify framework.

Client API

Docs Example

Finally, we provide a Node client that abstracts away interacting with a remote Seguir Rest API. Who knows, maybe we'll get clients for other languages soon! Client documentation a work in progress.

Built for Fun

I started this project to experiment with Cassandra and learn about how to model simple social relationships given a requirement at my company TES. If you would like to help build it, or just find this useful or interesting please reach out via the Github repo or Twitter.