RentFreeMedia / rentfreemedia

Media distribution without the platform markup. Home of the free/open source Rent Free Media distribution of Django + Wagtail.
https://rentfreemedia.readthedocs.io
GNU Affero General Public License v3.0
77 stars 7 forks source link

There are any demo website or sample? #4

Open aperezlillo opened 2 years ago

aperezlillo commented 2 years ago

Would be nice to have a demo or some screenshots of what could be achieved with the project.

RentFreeMedia commented 2 years ago

Hey, thanks for taking a look. I plan to make some demo / how-to videos at some point but haven't gotten around to it yet, only so much time in a day ;).

https://dubiouspod.com is a minimal example. I'm also the co-host of that podcast. We have only modified the bootstrap CSS and about 7 or 8 HTML templates for minor style changes, the rest is stock.

The subscribe page for an active subscriber is in screenshots below. For a new subscriber it's the same page, with only the subscription tier choice box. The tier choices are populated directly from the Stripe subscription products. As mentioned in the docs, you must have an extra metadata key / value of "tier: (int)" for your premium media subscription products on Stripe's end.

Generally, there are only two sets of pages / views outside of what you create in the CMS.

  1. The payment app, all of which is contained in the "/subscribe/" page as far as the user is concerned. It brings them to a new subscription form if they do not have a subscription, and brings them to a page that lets them modify their subscription and see their payment method + premium RSS links if they do have a subscription.
  2. The user signup / profile pages. If you happen to be a Django developer, these are provided via Dango-Allauth so are mostly the same, exceptions being the addition of 2FA options and the user profile page.

All of the stuff in the screenshots is of course automatically generated. In the case of podcasts / video casts and premium articles which can be contained in RSS feeds, if there are more index pages with content below them matching a user's subscription tier, more authenticated RSS links will show up on that user's subscribe page. You can "syndicate" multiple brands / shows / article writers this way.

If you are doing something that doesn't need an RSS feed and just want premium content on pages on your site, that's easy enough too. Just modify the payments / templates / payments / update_subscription.html file and remove the references to RSS links...

{% if podcasts %}
{% for podcast in podcasts %}
...
{% endfor %}
{% else %}
<div class="col-9 mb-4">
    <h5 class="mb-3 pl-4">No Episodes to Show</h5>
...
</div>
{% endif %}

...

{% if articles %}
{% for article in articles %}
...
{% endfor %}
{% else %}
<div class="col-9 mb-4">
    <h5 class="mb-3 pl-4">No Articles to Show</h5>
...
</div>
{% endif %}

There's nothing more to do for paying users to be segmented to pages on the site if you are doing something that doesn't require RSS. It "just works." Anonymous and non-paying users will get the base page, and when you create a variant page specific to a subscription tier, users in that tier will get the premium tier page when they go to the URL for that page.

The basic workflow for podcasts and articles is:

  1. Make the index page with the RSS options you want.
  2. Make content pages beneath it, which automatically show up in the feeds. The caption + body text is the episode notes in the case of a podcast. The page title is the episode title. If you attach an audio or video or link an audio or video, that's the enclosure for the RSS item. You can do any mix of paywalls and preview text and preview audio / video on the base pages of premium episodes / articles however you like.
  3. Make sure your social media (and network links in the case of podcasts) are specified in the main site settings along with the base JSON+LD data in the main site SEO settings for Google.
  4. That's it, there is no 4.

See docs for email marketing capability and other particulars. Storage for premium content needs to be compatible with django-storages. See rentfree / custom_storages.py in the root of the project if you need to change the settings particular to your storage service, the defaults are Digital Ocean compatible.

image

(continued)

image

(continued)

image