Inspiration
I have never build a finance based app and this is a new learning opportunity. And I am a big Sci-Fi fan so I really want to try it out when I saw the space theme.
What it does
Users can book a tour to various locations in the space. They can select a tour from the list. They will be given option to select the seats, once they select the seat they can proceed with the payment. The users will be provided a personal wallet. Reason for a personal wallet is it can be used for other payments like food and leisure during travel. User will be able to add money to their wallet via virtual accounts added to that wallet. Once they have the required funds in their wallet they can either deposit 25% of the cash to hold the seats or pay the full cash to buy the ticket.
This is app is not built for desktop. Please use mobile browser to view it. Install as PWA will give a more immersive experience
How we built it
The app is built with React for frontend and node.js + mongodb for backend.
A wallet is created by default for the company VinVeli. Every ticket purchase's payment will we added to the company wallet.
A personal wallet will be created for the user. User can add multiple virtual account to their wallet based on their preferred country and currency. For the demo, simulate payment link is given in the app itself using which users can add funds to their virtual account.
For the ticket payment the money will be deducted from the user's wallet and moved to company's wallet.
When a user chose to cancel the ticket, they will be asked to provide beneficiary details. Once the beneficiary details are given the ticket's amount will be deduced from company's wallet and sent to beneficiary account.
Here is how the ticket booking flow works,

This is how the ticket cancellation flow works,

Challenges we ran into
Had some issues initially while using Rapyd api, but the Rapyd Team is very active in discord and helped in solving it soon.
What's next for VinVeli App
Complete the desktop app.
Log in or sign up for Devpost to join the conversation.