All Projects → haydenwoodhead → Burner.kiwi

haydenwoodhead / Burner.kiwi

Licence: mit
No bullshit temporary mail service written in Go

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Burner.kiwi

Spyne
A transport agnostic sync/async RPC library that focuses on exposing services with a well-defined API using popular protocols.
Stars: ✭ 992 (+687.3%)
Mutual labels:  api-rest, json
Geochile
Esta es una api de Geocodificación, para que, con las coordenadas Latitud y Longitud se entregue una lista de ciudades cercanas.
Stars: ✭ 13 (-89.68%)
Mutual labels:  api-rest, json
Mymovies
A Flutter app which shows a list of popular movies.
Stars: ✭ 371 (+194.44%)
Mutual labels:  api-rest, json
Cli
Get a programmable email address. Automate what happens when you receive emails. It's like Zapier for devs who hate emails.
Stars: ✭ 105 (-16.67%)
Mutual labels:  json, email
Mandriller
Mandrill SMTP API integration for ActionMailer
Stars: ✭ 124 (-1.59%)
Mutual labels:  email
Globodns
Api to manage Bind Name Server
Stars: ✭ 122 (-3.17%)
Mutual labels:  api-rest
Jwt
Jwt.Net, a JWT (JSON Web Token) implementation for .NET
Stars: ✭ 1,694 (+1244.44%)
Mutual labels:  json
Data Store
Easily get, set and persist config data. Fast. Supports dot-notation in keys. No dependencies.
Stars: ✭ 120 (-4.76%)
Mutual labels:  json
Json2caseclass
Kickstart your scala API client by turning JSON into case classes.
Stars: ✭ 123 (-2.38%)
Mutual labels:  json
Fluentemail
All in one email sender for .NET. Supports popular senders (SendGrid, MailGun, etc) and Razor templates.
Stars: ✭ 1,888 (+1398.41%)
Mutual labels:  email
Coc Json
Json language extension for coc.nvim
Stars: ✭ 123 (-2.38%)
Mutual labels:  json
Snodge
Randomly mutate JSON, XML, HTML forms, text and binary data for fuzz testing
Stars: ✭ 121 (-3.97%)
Mutual labels:  json
Codability
Useful helpers for working with Codable types in Swift
Stars: ✭ 125 (-0.79%)
Mutual labels:  json
Structomap
Easily and dynamically generate maps from Go static structures
Stars: ✭ 122 (-3.17%)
Mutual labels:  json
Mailspring
💌 A beautiful, fast and fully open source mail client for Mac, Windows and Linux.
Stars: ✭ 11,953 (+9386.51%)
Mutual labels:  email
Crudapi
Go implementation of a RESTful JSON API exposing CRUD functionality relying on a custom storage.
Stars: ✭ 121 (-3.97%)
Mutual labels:  json
Jqr
R interface to jq
Stars: ✭ 123 (-2.38%)
Mutual labels:  json
Plug logger json
Elixir Plug that formats http request logs as json
Stars: ✭ 125 (-0.79%)
Mutual labels:  json
Api Response
Simple and ready to use API response wrapper for Laravel.
Stars: ✭ 123 (-2.38%)
Mutual labels:  json
Yyjson
The fastest JSON library in C
Stars: ✭ 1,894 (+1403.17%)
Mutual labels:  json

Roger the pyro kiwi

Burner.kiwi

Build Status Go Report Card Coverage Status

A temporary email service and API built in Go. No JavaScript. No tracking. No analytics. No bullshit.

Check it out here: https://burner.kiwi

About

Burner.kiwi is designed to be able to run on both AWS Lambda and normal machines. The goal is to have several backing database implementations and flexible configuration.

At this point it's working on normal machines and in Lambda. There are now three production-ready database implementations - DynamoDB, PostgreSQL and SQLite3.

There are also now two email implementations: Mailgun and SMTP. SMTP allows you to receive emails directly at no extra cost but will not work with AWS lambda.

This is definitely still a work in progress, see the To Do section.

Deploy Your Own!

To run it on your own server. Build a binary, set up with the configuration parameters detailed below and run it.

AWS Lambda

Deploy your own straight to AWS Lambda and DynamoDB.

Deploy to ap-southeast-2 (Sydney):

Deploy

Deploy to us-east-1 (N. Virginia):

Deploy

Deploy to eu-west-1 (Ireland):

Deploy

If you want to deploy to another AWS region you will modify the provided cloudformation.json template and upload your code to a bucket in that region.

Test

Run all of burner.kiwi's tests locally:

make test

Build

Run:

make build

This will create and populate a build directory containing the binary file and minified/renamed static assets.

If you wish to use SQLite3 you must run:

make build-sqlite

Configuration Parameters

These are all set as environment variables.

General

Parameter Type Description
LAMBDA Boolean Whether or not the binary is being hosted on AWS Lambda
KEY String Key used to sign cookies and keys. Make this something strong!
WEBSITE_URL String The url where the binary is being hosted. This must be internet reachable as it is the destination for Mailgun routes
STATIC_URL String The url where static content is being hosted. Set to /static to have the binary serve it. Otherwise set to a full domain name with protocol e.g https://static.example.com
DEVELOPING Boolean Set to true to disable HSTS and set Cache-Control to zero.
DOMAINS []String Comma separated list of domains connected to Mailgun account and able to receive email
RESTOREREALIP Boolean Restores the real remote ip using the CF-Connecting-IP header. Set to true to enable, false by default
BLACKLISTED []String Comma separated list of domains to reject email from

Email

Parameter Type Description
EMAIL_TYPE String One of mailgun or smtp
SMTP_LISTEN String Listen address for SMTP server (default 25)
MG_KEY String Mailgun private API key (if using mailgun)
MG_DOMAIN String One of the domains set up on your Mailgun account (if using mailgun)

Database

Parameter Type Description
DB_TYPE String One of memory, postgres, sqlite3 or dynamo for InMemory, PostgreSQL, SQLite3 (not this requires building with SQLite3 support) and DynamoDB respectively
DATABASE_URL String URL for the PostgreSQL database or filename for SQLite3 see documentation here.
DYNAMO_TABLE String Name of the dynamodb table to use for storage (if using DynamoDB)

AWS

If you are using DynamoDB in a non-AWS environment you need to set these. If you are on AWS you should, of course, use IAM roles.

Parameter Type Description
AWS_ACCESS_KEY_ID String Your AWS access key ID corresponding to an IAM role with permission to use DynamoDB
AWS_SECRET_ACCESS_KEY String AWS secret access key corresponding to your access key ID
AWS_REGION String The AWS region containing the DynamoDB table. Use the appropriate value from the Region column here.

Contributing

If you notice any issues or have anything to add, I would be more than happy to work with you. Create an issue and outline your plans or bugs.

To do

  • Code refactor/redo/cleanup
  • CSS refactor
  • More tests for server package
  • Night theme
  • Print html errors rather than just plain text
  • Better configuration
  • Noob friendly setup tutorial

If you think you can help, then create an issue and outline your plans.

Contributors

Thanks to:

  • cdubz for adding SQLite3 and custom address support
  • lopezator for switching to go modules

License

Copyright 2018 Hayden Woodhead

Licensed under the MIT License.

The Roger logo is drawn by Melissa Bather, used with permission, and licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].