DEV Community

Amin Arria
Amin Arria

Posted on

A Sponsorship Manager for Your Newsletter

What is a "newsletter sponsorship manager" you say? Well, think a scheduling/appointment app, but for your newsletter's issues and their sponsorships slots.

The Roadmap (I hope so)

The following will serve as a high-level roadmap for the features that will exist.

The application will have 2 set of features, 2 types of users:

  • Creators (people that have a newsletter)
  • Sponsors (people/companies that want to sponsor a newsletter issue)

For our Creators we need the following:

  • Specify interval of newsletter issues (this to automatically create availability)
  • Create one-off issues
  • Define amount of sponsors per issue (might allow only one for v1, related sponsor slot tiers)
  • Unique link to your newsletter "calendar" for sharing (think Calendly)
  • Receive payment
  • Sponsorship confirmation step (maybe only for first-time sponsors)

For our Sponsors we need the following:

  • Sponsor an issue (duh)
  • Send copy
  • Track sponsored issues
  • Send payment

There is one extra feature that I would love to build, but might be a bit too much for the duration of the hackathon and my time constraint, but maybe I can do it.

What I want is an automatic way to detect when an issue is sent and update the information (and maybe notify the sponsor). For this I'm thinking about a special email address they can add to their mailing list and then detect the sent issue.

Tech Stack

The stack used its going to be something boring simple:

GitHub logo AminArria / newsletter_sponsorships

Newsletter Sponsorships Management


To start your Phoenix server:

  • Install dependencies with mix deps.get
  • Create and migrate your database with mix ecto.setup
  • Install Node.js dependencies with npm install inside the assets directory
  • Start Phoenix endpoint with mix phx.server

Now you can visit localhost:4000 from your browser.

Ready to run in production? Please check our deployment guides.

Learn more

Top comments (0)