Don't have time to read? no worries, play instead with the app 😎: finalfrontier.earth

What is it?

Final Frontier is a functional concept of what the near future will be for space tourism. In the same way today travelers buy plane tickets online, tomorrow travelers will use something very similar to Final Frontier to book tickets for suborbital and orbital space flights.

A user experience out of this world

The first space tourists will need to make a non-trivial investment, that's why the user experience needs to be top-notch. Final Frontier uses state of art web technologies combining 3D and pixel-perfect interfaces that look like something from the future, so good in fact that it will make any space exploration company proud.

A ad-hoc payment experience

Final Frontier leverages the power of the Finctech As A Service Rapyd APIs to offer travelers payments in their local currency using a regular bank transfer, with no fees!

The space company receives the sums on a virtual account created and assigned to each traveler for easy segregation and simple reimbursement procedures when needed. As mentioned before, the space company/agency reseller just needs to provide a Rapyd API key.

Hackathon hard requirements

  • Use Rapyd’s Virtual Accounts API: Each traveler creates a single virtual payment account for the downpayment and the final payment, each VA is matched to the seller (Final Frontier) wallet.

  • Accept multiple local bank payments in the customer’s local currency: During the payment process, the user chooses one of the supported countries and currencies.

  • Be a Two-Step Payment Process: 1) Make a Deposit 2) Pay the Remaining Amount before lift-off: The user experience is divided into two steps, one in the web application finalfrontier.earth where the downpayment is asked, and the second via an email asking for the remaining amount.

  • Show how the transaction can easily be reconciled in your application: There is a minimalistic admin panel the seller can use to check the payments received and how they related to the travelers and space flights. Demonstrated in the next requirement

Hackathon soft requirements

  • Demonstrate a clever and frictionless way to do a refund of the deposit amount: By using the admin panel, the seller can simply choose a payment and generated a refund in a couple of clicks.

Try it here Admin Panel user: rapyd@email.com password: rapyd

  • Demonstrate how your application could facilitate other space transport scenarios that are B2B: Even if Final Frontier seems like a very static project, in reality, almost every relevant aspect of it is dynamic, meaning that, with the right knowledge, you can change the way it behaves, the name of the company, the Rapyd API integration, and many other aspects. If you are a technical person, take a look at the .env.example and the flights.js to name a few key files that let you see how easy it easy to manipulate. With a few tweaks you can go from a B2C platform to a B2B, and with minimum refactory to a B2B2C, like a company welfare marketplace, well a very cool company welfare that is :).

  • A great UX that would make a space exploration company proud: finalfrontier.earth is centered around an amazing user experience, try it either on desktop or mobile, and you'll love it!

How we built it

Final Frontier is built on top of a backend supported by Nginx, MongoDB, NodeJS, and the unofficial Rapyd JS SDK made by same the same author of this entry. Each service is containerized with Docker. The front end uses ThreeJS to manage all the 3D effects.

Problem we run into

How do we refund a pay-in transaction to a VA?

The complexity of making a refund for a pay-in to a VA is that you do not refund the sums to the source like in any regular refund, since the source is a virtual/real bank account not owned by the payer.

So you need to do a new bank wire to the payer using their bank account details, BUT ALSO, you need to keep track of the fact you refunded the transaction, by linking the original transaction to the new refund bank wire. You can use the metadata field of the original transaction to keep track of this, but the listing endpoint of the transactions directed to a VA does not include the metadata field, so in order to list the transactions that have been refunded using this method, obligates you to make a get request for each transaction to the transaction details endpoint, extremely inefficient if you have hundreds of payments.

In order to fix this, we decided to make a local copy of the transactions to manage a custom state, so we can keep track of what transaction was refunded for ease of use. This increments the complexity, having to manage the webhook for new deposits and a DB for persistence, but it also improves the admin panel speed since fewer calls to the Rapyd API are needed.

Recommendation to Rapyd Team: If it wasn't for this, this project (and similar) would not need to have an admin panel, since every administrative action could be done using the already robust Rapyd dashboard. Integrating this refund flow could benefit Rapyd's clients, or even better; having some no-code/low-code capabilities in the dashboard will make it even more powerful (for example the winner of last year's hackathon FFlow 😊 #shamelessplug).

Rapyd API Methods used

RAPYD WALLET

  • Create Wallet
  • Retrieve Wallet
  • List Wallet Transactions
  • Issue Virtual Account
  • Virtual Account capabilities

RAPYD DISBURSE

  • Create Payout
  • List payout method types
  • Payouts required fields

RESOURCE METHODS

  • Simulate Bank Transfer

Credits

  • Voyager - Cinematic Space Ambient music by Jonny Easton
  • La Station Spatiale Internationale (ISS) 3D model by Visactu
Share this project:

Updates