Skip to content

Instantly share code, notes, and snippets.

@wilmoore
Last active November 22, 2024 03:12
Show Gist options
  • Select an option

  • Save wilmoore/3486cd5889e03f365dab230069fdf2cf to your computer and use it in GitHub Desktop.

Select an option

Save wilmoore/3486cd5889e03f365dab230069fdf2cf to your computer and use it in GitHub Desktop.
Business :: Ideas :: colloquy.works

Business :: Ideas :: colloquy.works

⪼ Made with 💜 by Polyglot.

colloquy.works

Summary

The only API you need to add a secure inbox messaging with email notifications to your application in record time.

Domain

DNS

AWS Cloud

Email Services

Messaging API

Start converation & send a message

Basic Authentication

request
curl -XPOST https://conversations.colloquy.works \
  -d 'from=adam@example.com' -d 'to=eve@example.com' -d 'content=text/plain' \
  -u '{APPLICATION_ID}:{AUTH_TOKEN}'
response
{
  "conversation_id": "52D4C266-E440-40A6-A7C6-15CA1412DAF8"
}

Continue converation & reply to message

Basic Authentication

request
curl -XPOST https://conversations.colloquy.works/{conversation_id} \
  -d 'from=eve@example.com' -d 'to=adam@example.com' -d 'content=text/plain' \
  -u '{APPLICATION_ID}:{AUTH_TOKEN}'
response
{
  "conversation_id": "52D4C266-E440-40A6-A7C6-15CA1412DAF8"
}

Retrieve Conversation Messages

Basic Authentication

request
curl -XGET https://conversations.colloquy.works/{conversation_id} \
  -u '{APPLICATION_ID}:{AUTH_TOKEN}'
response
[
  {
    "conversation_id": "52D4C266-E440-40A6-A7C6-15CA1412DAF8",
    "message_id": "8424EAAD-ECE8-4ECC-A038-1168BD71FCFA"
    "from": "CONTACT_ID",
    "to": "CONTACT_ID",
    "content": "text/plain"
  },
  {
  }
]

Retrieve Message Count

Basic Authentication

request
curl -XGET https://conversations.colloquy.works/{conversation_id} \
  -u '{APPLICATION_ID}:{AUTH_TOKEN}'
response
{
  "message_count": 1
}

Messaging SDK (TBD)

Links

reference

Core Architecture

A stream of messages from one user to another. Messages are encrypted end-to-end.

  • Message Store: A Single AWS DynamoDB Table
  • Notifications: AWS SES (notify recipient of messages via email)
  • Contact: (a) CONTACT_ID (b) EMAIL_ADDRESS
  • Conversation: (a) CONVERSATION_ID (b) MESSAGE_ID (c) FROM_CONTACT_ID (d) TO_CONTACT_ID (e) MESSAGE_BODY

About

Open Source

Tasks

...

Platform Spike Account

  • AWS Account
  • Is it possible to run DynamoDB locally?

DynamoDB Table Schema Definition

Define API Methods (High-Level)

  • Create Message

Define Features For MVP

  • CLI User Interface (nodejs, gluegun)
  • Simple Static HTML Email Template (user defines callback login URL)
  • Sending a message to user triggers email
  • GraphQL API
  • Sentiment Analysis Metadata
  • Example Web Application (React)
  • Example Mobile Application (React Native)
  • Marketing Website
  • Developer Portal (Docs Only Initially)
  • Sandbox Account for testing
  • Production Account for go-live

Stretch Features (if possible)

Nice To Have (clearly beneficial, yet out of scope)

  • User specified transformation pipeline

Backlog Features (clearly out of scope, but may be interesting at some point, need to triage)

Curate Content

Content Inspiration
type Contact {
id: String!
name: String!
email: String!
}
type Message {
id: String! # ISO8601
body: String!
from: String! # Contact.name
}
type Mutation {
createContact(id: String, email: String!): Contact!
createMessage(body: String!, from: Contact!, to: Contact!): Message!
}
type Query {
contacts(): [Contact!]!
messages(contact: Contact!): [Message!]!
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment