Code Monkey home page Code Monkey logo

xextension-flus's Introduction

Flus

Aggregate, save and share links from all over the Web.


Flus brings together news feed aggregation and social bookmarking in a modern way. It is designed as a simple, yet complete tool for organising the links you gather around the Web. It comes with four main features:

  • the feeds aggregation (RSS and Atom) to follow any website, podcast or video channel in one place;
  • the bookmarks and collections to save your favourites articles for later and to organise them;
  • the news to keep control over your newsfeed;
  • the profile to share links with others.

You can try Flus for free at demo.flus.fr.

It’s free/libre software (politically speaking) while being supported by a micro-enterprise to ensure its viability. The main service is available to French people at flus.fr. You can help to fund the development by taking a subscription to the service.

Flus is licensed under AGPL 3.

Screenshot of the news page with 3 links

Credits and dependencies

Flus is built upon the work of many other people:

It’s also based on other projects:

How to contribute?

I sincerely appreciate if you want to contribute. Here’s a few things you can do:

  • taking a subscription at flus.fr (French);
  • reporting bugs or make feature requests in issues;
  • writing blog posts to speak about the project.

I don’t accept Pull Requests on this project. A code contribution requires a lot of time to review, to comment and to maintain. Even the smallest one can require hours of my time. Also, code isn’t where I need help.

If you have any question, feel free to send me a message.

Administrator guide

This guide is intended to people who want to install Flus on their own server.

  1. Deploy in production
  2. How to update Flus
  3. How to improve performance
  4. Enable experimental features
  5. CHANGELOG

You also might be interested by the following:

  1. Technical stack overview
  2. How is the CLI working

Developer guide

If you plan to take a look at the code, these guides should be helpful to understand how Flus is developed.

  1. Technical stack overview
  2. Setup the development environment
  3. How to update Flus
  4. Getting started
  5. Working with Docker
  6. How are the users’ errors managed
  7. How is the CLI working
  8. How is the localization managed
  9. How are the assets bundled
  10. How to run the test suite

Maintainer guide

This guide is intended to myself, as a maintainer of Flus.

  1. How to release a new version

xextension-flus's People

Contributors

marienfressinaud avatar

Stargazers

 avatar

Watchers

 avatar  avatar

xextension-flus's Issues

Billing system v1

I need to bill users registered on Flus. This billing system doesn't have to be in the core of FreshRSS so it'll be developed in this extension. Note: I planned to use the "Subscription" term, but it's already used in FreshRSS :/

I'll stay with a basic workflow to start. I don't plan to have automatic renewal in a first time. Also, the payment system will come in a second time. This first version will basically just set up the renewal form and logic.

Billing will be available from the main menu, via a new "Billing" entry, under the "Extension" entry.

The page will show the date until when the subscription is valid and a button will offer to "renew" the subscription. A page showing how much it costs to renew appears, with a switch or a radio button to choose between monthly or annual renewal, and two "illustrated radio buttons" to choose between paying by card or by Paypal. A "Pay" button brings the user to the payment service. Two pages should be implemented: one for the successful payments, the other for the failures. The successful payment should show for how many month/year the user renewed, and the date until its subscription is valid.

As an administrator, I may want to let some users have no need to subscribe, it will be done manually in the configuration files, but the screens need to take care of this case. The button to renew should always be visible in case the user wants to do a special "support".

Raw illustration:

subscription

This PR doesn't have to implement the interface with the payment systems.

UX considerations:

  • the "renew" button should become "primary" at subscription_end_at - 1.week
  • the default choices (payment frequency and type) should be remembered from the last time
  • it might be interesting to show for how long the subscription is valid on the main page

Technical considerations:

  • a new hook has to be added in the extensions system to add entries in the menu
  • at least 3 values need to be stored in the user (saving custom keys from extensions needs to be confirmed):
    • subscription_end_at (a date or null, set to now + 1.month at registration)
    • subscription_frequency (monthly or annually, monthly by default)
    • subscription_payment_type (card or paypal, card by default)
  • the renewal "algo" must be subscription_end_at = max(subscription_end_at, now) + 1.month # or year
  • a user can have a subscription_end_at set to null to have a free plan
  • payments need to be saved somewhere but I'm not sure it's a good idea to have them in the user config.php file. Maybe in a separated db but… meh! I need to think more about it. -> delayed to a next ticket

Follow-up of my progress:

  • Add a hook to add entries to the menu and to initialize configuration at the end of FreshRSS init (see FreshRSS/FreshRSS#2482)
  • Add a "Billing" entry to the configuration menu
  • Add support for custom default configuration from extensions (not necessary)
  • Add a subscription_end_at item in the users configuration (default now + 1.month)
  • Display the subscription end date on the billing main page
  • Add the renewal form (the "Pay" button should act as if the payment is successful for the moment)
  • Block user to ask him/her to renew its subscription
  • (nice to have) Add support for no-billing users
  • (nice to have) Configure the amounts of subscription
  • (nice to have) Remember choices of payment frequency and type
  • (nice to have) Transform "renew" button into a primary one 2 weeks before subscription_end_at

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.