All Projects → kdrag0n → earlypilot

kdrag0n / earlypilot

Licence: MIT license
All-in-one server for monetizing software development with the early access supporter model

Programming Languages

kotlin
9241 projects
Handlebars
879 projects
CSS
56736 projects

Earlypilot

This is an all-in-one server for monetizing software development with the early access supporter model, including managing Patreon benefits and Stripe purchases for one-time software downloads.

Purchase fulfillment page

Features

  • Serving content downloads
  • Email sending via Mailgun
  • PostgreSQL database support
  • Patreon integration
    • Authentication
    • Pledge validation
    • Payment validation
    • Benefit/tier validation
    • Subscription dunning for declined payments (via email)
    • Telegram group membership management
  • One-time download purchases
    • Stripe Checkout
    • Product info cards
    • Material You web UI
    • Purchase fulfillment via email and web
    • Localized prices using Purchasing Power Parity to make products affordable for more users
  • Telegram bot for admin actions
  • Live content filtering during downloads
    • Watermark downloads
    • Combat piracy
    • Personalize downloads for each user

Usage

The server can be built with ./gradlew shadowJar.

A configuration file is required for the server to work properly. Copy config.example.conf and edit the values as necessary.

For full functionality, credentials for the following APIs and services are required:

  • Stripe
  • Patreon
  • Telegram
  • Mailgun
  • MaxMind GeoIP database
  • PostgreSQL

Finally, run the server once you've built and configured it: java -jar build/libs/earlypilot-0.0.1-all.jar -config=config.conf

Filters

The default content filter implementation is a simple pass-through filter that serves static data from storage with no modification. No watermarking filters are available in the public source code because making them public would defeat the purpose of watermarking, so you will need to create your own filter if you want to track the source of leaks.

The following objects are available to filters:

  • File input stream (from static storage)
  • Ktor application environment
  • Ktor request and call
  • Output stream (to return data to the user)

The Apache Commons Compress and Google Guava libraries are available for use in filters, along with the entirety of Ktor.

To make a custom filter, create a class that implements dev.kdrag0n.patreondl.content.filters.ContentFilter and re-compile the server with your class included. The filter can be activated by setting web.contentFilter to the fully-qualified class name in the server configuration file.

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].