Background
Following on from previous work on integrating Vouchers into OFN, OFN Australia secured funding for a major Voucher experimentation project, to set up a system which enables generation and use of vouchers both via OFN and through in-person markets, as well as enterprises that trade online but don’t use OFN.
Within this project we assessed options for both improving OFN voucher functionality and being able to support in-person voucher redemption and non-OFN e-commerce. We came up with a pathway that is also consistent with the desire to reduce the monolith and build complementary apps that leverage the API and can move faster. We are working with a local company (OK200) that specialises in vouchers / promotional software and has built similar systems for other small community food enterprises and similar schemes (e.g. Grocer Gift and Give Where You Live). Working closely with both these organisations we looked at the systems in operation to decide whether to work from / adapt or start afresh (knowing that lots of learning and code could be quickly adapted). We decided to start fresh because:
- Build from the outset to avoid problems / painpoints in the previous versions
- To build for us and not need to negotiate needs with different existing use cases
- Design and build as ‘multi-agent’ i.e. that many different enterprises / use cases can use to issue and redeem vouchers (rather than retro-fitting this as would be needed in existing ones)
- We can set it up as open source project
- Lots of functionality that we want in OFN can be enabled more quickly and cheaply by doing separately and connecting with API
New Integrated App - VINE
The result of this is a new app called VINE. Some may have noticed this new repository pop-up in OFN Github in the last few weeks https://github.com/openfoodfoundation/vine
The core functionality of the app is expected to be completed in the next 2 weeks. We do have a staging version that we are testing - ping @Kirsten if you are interested in having a look.
Some notes around specs for our Pilot (which will run Feb - Aug 2025):
- Initially Voucher Sets (e.g. 20 x $40 vouchers with expiry date X and type ‘Food Equity’) can only be created by Super-Admin. This will be a constraint to broader use initially, but we decided it makes sense while broader things get worked out
- A Voucher set is allocated to a ‘Service’ (who can distribute it) and a ‘Merchant’ (who can redeem it). A Voucher Set is not ‘created’ until the Merchant has responded/approved it via signed url
- Each Voucher has a random unique 6-digit code, as well as a QR code.
- For in-person redemption, the QR code can be scanned on a logged in device (phone or tablet) which will check the balance, take user input on amount to reduce, update the balance etc. User then manually updates POS
- For online OFN redemption, Customer enters the code into OFN checkout
- For OFN shops to be Merchants i.e. to redeem these Vouchers, they need to connect to the VINE system via Connected Apps, put in their API key from VINE and voila
- NB. This new system provides most of the desired functionality from OFN design process, I am in process of mapping this and will update below. But the key things: expiry date; partial redemption / balance and ‘type’ i.e. Food Equity or Promotion will all be available immediately
OFN Integration
So now we are working on the integration of the VINE app with OFN. This has two main parts which we are about to estimate:
- Create a new Connected App to connect to VINE, takes VINE API key, see API Docs here
- Update OFN Voucher logic to check code against internal system first and if not present then VINE. Order adjustment and reporting logic stay the same
I will be keeping a high level view on this, @Rachel is picking up the product work and @Gaetan leading on dev. Estimation happening now and work commencing next week (Sept 2024). All work to be tracked in Clockify #11922 and see #11922 on Github
VINE Use outside Australia:
Taking some learnings from OFN’s life journey, we have built into the first version of this app the ability to set any currency on a Voucher set. This will mean that users in other places could just use the server / system we are operating rather than needing to run another instance, as long as you are ok to use it in English. There are no plans to translate it at this time, someone else could take that on later if you want