Sponsorly: Manage Your Newsletter's Sponsors
Tags: dohackathon, elixir
Published: 2021-01-11 03:12:43

## What I built

I built a web service called [Sponsorly](sponsorly.aminarria.tech). It allows you to manage your newsletter sponsors. 

You will generate a unique URL you can share with possible sponsors that will allow them to sponsor an issue of your newsletter.

Also, for sponsors, they can create an account an keep track of their sponsorships.

### Category Submission: 

Built for Business

### App Link

[sponsorly.aminarria.tech](sponsorly.aminarria.tech)


### Screenshots

Onboarding a new user that has newsletters

![onboarding new user asks to create part of their url](https://dev-to-uploads.s3.amazonaws.com/i/fv95jc5winotxfie0grw.png)

Creating a newsletter

![user filled form to create a newsletter](https://dev-to-uploads.s3.amazonaws.com/i/alvglxu2g3cxmjb17xg8.png)

Seen issues available for sponsoring

![list of issues available to be sponsored](https://dev-to-uploads.s3.amazonaws.com/i/e46gsu5j8zlm1nx61bmz.png)

Sponsoring an issue

![filled form to sponsor an issue](https://dev-to-uploads.s3.amazonaws.com/i/741hoce2nqoxd3uwadg6.png)

List of sponsorships to confirm

![list of sponsorships to confirm for an issue](https://dev-to-uploads.s3.amazonaws.com/i/t5izptmzwdhl87xyfstg.png)

### Description

The app has to types of users: Creators and Sponsors. 

Creators are the ones that have newsletter and need sponsors. They create a newsletter and generate a unique URL to share to possible sponsors. Generally issues for a newsletter are automatically generated by the app, but in case its needed they can be created, edited, or deleted by the user.

Once sponsors have sent sponsorships for an issue they can be reviewed and one of them confirmed for that issue. In case it's needed a confirmed sponsorship can be canceled.

When seen the issues for a newsletter you will be able to filter by:

- Confirmed: issues that have a confirmed sponsor
- Pending: issues that are pending a confirmed sponsor
- Past: issues that already have been published

On the other hand we have Sponsors. They access newsletters through the URL generated by a Creator and select an issue to sponsor.

One particularity about Sponsors is that they don't need an account, the app will just ask for an email when creating the sponsorship request instead.

After making a sponsorship request they can register using that mail (or any other time really) and any sponsorships they have will associate to their account. 

### Link to Source Code

{% github AminArria/sponsorly %}

### Permissive License

[MIT License](https://github.com/AminArria/sponsorly/blob/main/LICENSE.txt)


## Background

The idea for this submission came from [Cassidy Williams](https://cassidoo.co/). 

On one of her streams she started mentioning that an issue she has with here newsletter is managing sponsors. Some of the problems where:

- Keeping track of current sponsored issues
- Issues available for sponsorship
- Doing all this manually for each and every sponsor
- Payment

So I emailed her about using her idea, she gave me the OK, and here we are 😁.

### How I built it 
(How did you utilize DigitalOcean’s App Platform? Did you learn something new along the way? Pick up a new skill?)

To build this project I use my day-job stack:

- [PostgreSQL](https://www.postgresql.org/)
- [Elixir](https://elixir-lang.org/)/[Phoenix](https://hexdocs.pm/phoenix/overview.html) (maybe I'll use [LiveView](https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html))
- [Bulma](https://bulma.io/) 

It's nothing fancy, but it gets the job done.

To deploy the project I created a [Dockerfile](https://github.com/AminArria/sponsorly/blob/main/Dockerfile) which I then deployed using [DigitalOcean's App Platform](https://www.digitalocean.com/products/app-platform/).

For the deploy to work (and since I had the free credits) I decided to use [DigitalOcean's Databases](https://www.digitalocean.com/products/managed-databases/) to create a managed PostgreSQL instance.

And that's it! Now [Sponsorly](sponsorly.aminarria.tech) is deployed and ready for everyone to use.

Hope you enjoy it 😁