Standard Grant: Lume Web 2024

Progress Report for September

What progress was made on your grant this month?

  • Completed IPFS support, including tracking unixfs metadata provided via API for the client
  • Completed billing support. Includes:
    • Tracking quota usage of users
    • Limiting access if over usage
      • Every protocol plugin will need to be checking the users usage on its endpoints, this is not centralized in the core outside possible helpers
    • A very basic plans support (a db table that currently needs direct manual entry). This is used for the quota side, not the billing side.
    • Support for a free plan via config that requires no external systems
    • Support for paid plans that require external systems
    • Paid plans rely on Killbill.io for subscriptions (java based) and hyperswitch.io (rust/js) for payments. These systems are rather complex and documentation will be created over time as issues are found for running them in prod.
      • A lot of research went into finding FOSS billing systems to avoid vendor lockin and future proof merchant control for political and business risk. There are very very few options that are suitable and maintained/have funding. The rest are SasS.
      • Stripe is supported now via hyperswitch, as you can treat hyperswitch as a payment gateway in itself.
    • Got the webapp in an alpha state with:
      • IPFS service
      • Account management and security
      • Uploads management
      • 2FA
      • API keys
      • Dashboard statistics, removing the mock UI’s
    • The webapp will likely heavily evolve over time in architecture, as plugins will need to be supported in a dynamic way. For now, things are activated in a feature flag approach and detected in the webapp as a monolith from the /api/meta endpoint accessible from any domain of the portal server.
      • In the future I will be looking at using tech called module federation and creating the infra needed for this to work. However, the JS ecosystem is heavily in R&D mode and these things are just not ready yet :(.
      • So for now things are done the most pragmatic way until it can be more sophisticated.
    • The support plugin has been created and uses oAuth2 to SSO into freescout.net, a laravel-based PHP support system. This required buying a plugin that provides an end-user support portal, but as all plugins are AGPL, the plugin has been forked and is on GitHub now.
    • Lots of internal refactoring and internal changes have been made this month and more will be made over time in the future.

Summarize any problems that you ran into this month and how you’ll be solving them.

  • Only persistent issue has been IPFS DHT/discovery. After fixing the configuration logic for announcement addresses (the original mistake made), this worked earlier this quarter, but it has been flaky lately. Direct peer connections via multiaddresses work regardless (thus pinning works). This was also tested with fsd to compare against a known working node besides kubo, with no success (fsd didn’t work either). It is possible a mis-configuration exists somewhere, but time will need to be spent to find the cause.
    • Outside that IPFS is working as expected.

Links to repos worked on this month:

What will you be working on next?

  • Webapp Changes:
    • Lots of small bugs exist in the webapp that need to be fixed
    • UX fixes are needed to be done by my team
    • Community feedback is needed to polish the webapp UI further
  • Solve IPFS network discovery problems
  • Start on work with S5 support again and help @redsolver as needed on the typescript side
  • Start on planning & design for the portal website frontend
  • Work on further internal changes to the portal, if time permits this month, such as:
    • Restructuring how config files are stored
    • Live config editing system
    • Updating portal price tracker to use explored
    • Working on more cluster-related support

Q3 Milestones Report

Per the grant proposal here is the video demo for the quarter: https://youtu.be/iqm7K_m8FeU

The testing node is live at: https://account.testing.pinner.xyz/