• Stars
    star
    102
  • Rank 329,147 (Top 7 %)
  • Language
    Python
  • License
    BSD 3-Clause "New...
  • Created about 9 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A system for managing text messaging transports with via RESTful HTTP interface.

Junebug

Junebug is an open-source server application providing SMS and USSD gateway connectivity for integrators, operators and application developers.

Junebug enables integrators to automate the setup, monitoring, logging, and health checking of population scale messaging integrations.

Junebug is a system for managing text messaging transports via a RESTful HTTP interface that supports:

  • Creating, introspecting, updating and deleting transports
  • Sending and receiving text messages
  • Receiving status updates on text messages sent
  • Monitoring transport health and performance
  • Retrieving recent transport logs for debugging transport issues.

Design Principles

Junebug aims to satisfy the following broad criteria:

  • Easy to install
  • Minimal useful feature set
  • Sane set of dependencies

Documentation

Documentation is available online at http://junebug.readthedocs.org/ and in the docs directory of the repository.

To build the docs locally:

$ virtualenv ve
$ source ve/bin/activate
(ve)$ pip install -e .-r requirements-docs.txt
(ve)$ cd docs
(ve)$ make html

You'll find the docs in docs/_build/index.html

You can contact the Junebug development team in the following ways:

Issues can be filed in the GitHub issue tracker. Please don't use the issue tracker for general support queries.

Running tests

To run the tests locally:

$ virtualenv ve
$ source ve/bin/activate
(ve) pip install -e . -r requirements-dev.txt
(ve)$ trial junebug

Making releases

Releases are done according to git flow, and sticks to semantic versioning for selecting a new version number. You should ensure that the release notes in docs/release-notes.rst are up to date before doing a new release.

To create a new release, make sure you're on the develop branch, and then use the utils script to change the package version:

$ git checkout develop
$ ./utils/bump-version.sh 0.1.0

Then, commit the changed files and tag that commit:

$ git commit -m "Release 0.1.0"
$ git tag junebug-0.1.0

Then, push the changes to develop, and push the new tag. This will start a travis build, which when it passes, will create a new release to PyPI:

$ git push origin develop
$ git push origin junebug-0.1.0

Then, you can merge and push this code to the master and relevant release branches:

$ git checkout master
$ git merge junebug-0.1.0
$ git push origin master
$ git checkout release/0.1.x
$ git merge junebug-0.1.0
$ git push origin release/0.1.x

Developing on Junebug

For every python file in the junebug directory, there is a corresponding file in the junebug/tests directory, that contains the unit tests for that file.

Any added fixes should have a relevant test added to ensure that any future changes cannot reintroduce the bug.

Any added features should have relevant tests to ensure that the features work as intended.

Each pull request should include any relevant changes to the documentation, including updating the release notes to include the changes made in the pull request.

junebug.amqp

This module is responsible for maintaining an AMQP connection, and sending an receiving messages over that connection.

junebug.api

This module is responsible for housing the logic of each of the HTTP API endpoints. It uses Klein, which is a web framework similar to Flask, but runs on top of Twisted and supports returning deferreds, which allows us to perform async actions in our response generation, without blocking.

junebug.channel

This module contains our currently only implementation of a Junebug channel. This implementation is an in-memory implementation, where new channels are started as Twisted services.

Other possible future implementations might include a process based implementation, where each channel is started as a new process, or a Mesos based implementation, where each channel is started as a new container within a cluster.

Any new channel implementations would need to implement all public methods on the Channel class.

junebug.command_line

This module contains all configuration, processing, and running of services related to starting Junebug using the command line interface.

Any changes to the configuration options should also be made to the file-based yaml configuration options, found in junebug/config.py

junebug.config

This module contains a confmodel class, which is used to validate the yaml file that can be used to specify configuration options for Junebug.

Any changes to the configuration options should also be made in the command line arguments, found in junebug/command_line.py

junebug.error

This module contains error classes that are shared between all Junebug modules.

junebug.logging_service

This module contains the logging observer, which is used to observe logs from specific channels, and to write these logs to separate files, so that each channel can have its logs displayed separately.

It also contains some utility methods to read these log files into a list of objects.

junebug.plugin

This module contains the base class for all Junebug plugins. It shows what functions plugin implementors would need to implement.

junebug.plugins.*

Each module in this package contains a junebug plugin that is built into the core Junebug code base.

junebug.service

This module houses the main Junebug twisted services, which runs the http API, and has all the transports as its children.

junebug.stores

This module houses all the different stores that we have. Currently they're all backed by Redis, and store channel, message, and event related information.

junebug.utils

This module houses utility functions that are used all over Junebug.

junebug.validate

This module contains some helper functions for defining validators that are use to validate requests coming into the HTTP API.

junebug.workers

This module contains the Vumi workers that Junebug runs for each channel. This includes things like the message forwarding worker, which forwards inbound messages over AMQP and HTTP, and stores the messages and events in the various stores, and the channel status worker, which stores and forwards channel status updates.

More Repositories

1

vumi

Messaging engine for the delivery of SMS, Star Menu and chat messages to diverse audiences in emerging markets and beyond.
Python
418
star
2

docker-django-bootstrap

Dockerfile for quickly running Django projects in a Docker container
Python
95
star
3

django-google-analytics

Django Google Analytics app allowing for server side/non-js tracking.
Python
71
star
4

alpine-buildpack-deps

An attempt at a "buildpack-deps"-like Docker image with Alpine Linux
Dockerfile
30
star
5

seaworthy

Test harness for Docker container images 🌊 🚒
Python
29
star
6

molo

Molo is a set of tools for publishing low end mobi sites with a community focus.
Python
27
star
7

python-whatsapp-business-client

Python
25
star
8

docker-freeswitch

Dockerfile for running FreeSWITCH in a Docker container
Shell
20
star
9

docker-ci-deploy

Python script to help push Docker images to a registry using CI services
Python
19
star
10

travis-pyenv

Set up pyenv to use in Travis CI
Shell
17
star
11

vumi-go

Python
15
star
12

jspot

Extracts gettext strings from Javascript files into pot files
JavaScript
12
star
13

txtalert

TxtAlert is a mobile technology tool developed by Praekelt Foundation. It uses text message (SMS) reminders to improve the health of HIV positive people, by reminding them when they need to go for their next visit to the clinic.
Python
12
star
14

docker-py-base

Dockerfiles for base images that make creating correct, minimal images for Python applications easier
Shell
9
star
15

ways-of-working

How we work. Style guides, tools and conventions.
8
star
16

marathon-acme

Automate ACME certificates for Marathon apps served by marathon-lb
Python
8
star
17

vumi-wikipedia

Vumi Wikipedia Application
Python
8
star
18

vumi-jssandbox-toolkit

Vumi JavaScript Sandbox toolkit.
JavaScript
7
star
19

vaultkeeper

A service that fetches and renews HashiCorp Vault credentials for a subprocess application.
Python
7
star
20

marathon-envoy-poc

Proof of concept Envoy Discovery Service (xDS) for Marathon apps
Python
6
star
21

relay

Relay is an Envoy Discovery Service for use with Mesosphere Marathon
Elixir
6
star
22

diamondash

Dashboard for how we use Graphite
JavaScript
6
star
23

molo-gem

A community site for Girl Effect Mobile built using Molo
SCSS
5
star
24

django-py-zipkin

Python
5
star
25

gitsecal

A little tool for finding github security alerts for all repos in an org.
Rust
4
star
26

seed-stack

A Vagrantfile that provisions a VirtualBox for our Seed Stack
Ruby
4
star
27

go-google-maps

Directions from Google maps via USSD & SMS
JavaScript
4
star
28

puppet-marathon

A Puppet module for managing Marathon
Ruby
4
star
29

heatherr

Slack tools to make working across timezones a bit easier
Python
3
star
30

molo-iogt

IoGT Frontend Site for Molo
HTML
3
star
31

turn-rasa-connector

A Rasa Connector for https://www.turn.io/
Python
3
star
32

contentrepo

Python
3
star
33

xenzen

XenServer web-based user interface
JavaScript
3
star
34

django-skeleton

Sample Django application
Python
3
star
35

rp-documentation

Documentation for RapidPro usage
3
star
36

docker-supervisor

Dockerfile for running Python projects under Supervisor in a Docker container
Dockerfile
3
star
37

puppet-traefik

A Puppet module to manage Traefik
Ruby
2
star
38

docker-graphite

Graphite web + carbon + whisper in a Docker container
Python
2
star
39

aludel

Python
2
star
40

wa-rapidpro

Python
2
star
41

courier-docker

Dockerfile
2
star
42

malaria24-django

Python
2
star
43

go-jsbox-metrics-helper

Metrics helper for Vumi JS Sandbox apps
JavaScript
2
star
44

vaccine-eligibility

Demo application for what a vaccine eligibility flow could look like
Python
2
star
45

code-dojo

Lesson plans and other dojo resources.
2
star
46

cookiecutter-python-package

Cookiecutter template for a Praekelt Python package
Python
2
star
47

airtime-service

Prepaid Airtime Voucher dispensing service
Python
2
star
48

vumi-sandbox

Sandbox application worker for Vumi.
Python
2
star
49

heatherrd

A microservice that maintains Slack RTM sessions and relays messages via HTTP.
Python
2
star
50

vumi-telegram

A Telegram transport for Vumi and Junebug.
Python
2
star
51

puppet-gluster

Puppet module for managing glusterfs
Ruby
2
star
52

vumi-aat

Vumi transports for AAT.
Python
1
star
53

docker-marathon-acme

Release Docker images for marathon-acme
Python
1
star
54

go-contacts-api

A contacts and group API for Vumi Go
Python
1
star
55

gem-bbb-indo

Java
1
star
56

vault-plugin-auth-mesos

A (currently very experimental) Vault auth plugin for mesos tasks.
Go
1
star
57

django-vaultkeeper-adaptor

A small library that allows Django applications to consume Vaultkeeper output as resource secrets.
Python
1
star
58

docker-molo-bootstrap

A base Docker image for all Molo projects
Dockerfile
1
star
59

go-jsbox-malaria24

Malaria24
JavaScript
1
star
60

lebombo

A randomization engine for surveys on RapidPro
Python
1
star
61

docker-marathon-lb

Docker image for our custom marathon-lb setup
1
star
62

molo-babycenter

Babycenter front end site built using Molo
HTML
1
star
63

nurseconnect-companion

Companion application for NurseConnect
Elixir
1
star
64

platform-mnch

1
star
65

rp-sidekick

Python
1
star
66

mobileu

MobileU MOOC project
Python
1
star
67

whatsapp-nginx-redirect

A small nginx docker image that load balances WhatsApp numbers
Dockerfile
1
star
68

portia

Portia, the number porting db.
Python
1
star
69

go-jsbox-skeleton

Skeleton for a vumi javascript sandbox app
JavaScript
1
star
70

deck

TypeScript
1
star
71

docker-seed

Dockerfiles for the Seed maternal health platform
Shell
1
star
72

oneplus

One Plus
Python
1
star
73

go-nike-ghr

Nike Girl Effect GHR
Python
1
star
74

puppet-docker_firewall

Puppet module for simplifying the management of iptables rules when running Docker
Ruby
1
star
75

malaria24-analytics

R
1
star
76

rasa-postgres-archiver

Archives older data from the Rasa PostgreSQL tracker store into S3
Python
1
star
77

docker-xylem

Docker Xylem plugin
Python
1
star
78

vumi-messenger

Python
1
star
79

go-ndoh

South African NDoH MomConnect program
JavaScript
1
star
80

django-logglydash

Django Loggly event dashboard.
Python
1
star
81

nightingale

A light for those in need and a generic reporting tool.
Python
1
star
82

logspout-sumologic

A Logspout adapter for sending Docker container logs to a Sumo Logic HTTP source .
Go
1
star
83

molo.polls

A molo module that provides the ability to run polls and surveys
Python
1
star
84

molo.servicedirectory

Python
1
star
85

messaging-consenter

Lightweight Django app for serving a web page to collect user consent to receive WhatsApp messages
Python
1
star
86

django-holodeck

Pushes stats to holodeck
1
star
87

seed-stage-based-messaging

Seed Stage-Based Messaging and Content Store
Python
1
star
88

seed-jsbox-utils

Seed Javascript sandbox application utilities.
JavaScript
1
star
89

docker-vumi-metrics

Vumi Metrics API subsystem in a single container
Shell
1
star
90

buildacious

A fairly curious build manager
Python
1
star
91

whatsapp-template-proxy

Python
1
star
92

vumi-app-router

Python
1
star
93

vumi_msisdn_normalize_middleware

Middleware to normalize msisdns
Python
1
star
94

seed-message-sender

Seed Message Sender and Message Store
Python
1
star
95

puppet-certbot

Puppet module to manage the EFF's client for Let's Encrypt, Certbot
Puppet
1
star
96

seed-control-interface

Seed Control Interface
CSS
1
star
97

go-di

The vumi jsbox application for Democracy International
JavaScript
1
star
98

docker-nginx-redirect

Shell
1
star