Whenever you buy movies or games, usually a code is present for some online media that you aren't usually interested in. Digital codes also exist for a myriad of different formats, you may receive them by gift, or you may decided you didn't want it before you used it. Selling these codes isn't all that difficult, but you are hit with large eBay and Paypal fees, alongside the lack of automated code sending. Buying the codes, again, isn't difficult, but sometimes you may be waiting a long time to receive the code from the seller. Another concern with the buying and selling of codes is security, it's very easy to sell a "dud" code to someone and simply accuse them of lying about said "dud" code. Due to the lack of identity surrounding communities that may trade these code.
What it does
Dicode is a peer to peer digital code buying and selling platform/marketplace. Dicode forces all users, regardless of intent to buy or sell, to have a fully authorised Stripe account, meaning that bank account details, billing addresses and legal names must be used. Once authorised, users can post up products they wish to sell. The code is entered when you list the item to sell, therefore, when bought, the code is instantly delivered to the buyer. Once bought, a feedback system is in place to allow the buyer to notify the system and other users, whether this seller has a good ratio of good to "dud" codes. In order for the platform to make money, a small 5% application fee is taken on buyer payment. Users can search for the codes they want based on name, category and price range.
In just 24 hours, this application has actually been placed live and multiple real-life purchases have been made.
How I built it
Ruby on Rails has been used in conjunction with Heroku to get the app live. Stripe's OAuth implementation has been used for user creation. Stripe Connect has been used to allow us to place money in our seller's account without the need for continued approval, as well as take the application fee. Bootstrap provided a fantastic stepping stone to get the app looking great
Challenges I ran into
The main challenge was getting a payment from a buyer's card, to a seller's stripe account, with an application fee making the way to our platform's account, all in 1 go.
Another challenge was getting the app to be usable and look nice in just 24 hours whilst being up against the wall with the sheer amount of backend work needed.
Using Stripes OAuth to get our users, rather than using a traditional email and password sign up was an interesting and new problem to solve.
The problem of "what if?" when it comes to people using "dud" codes is a hard problem to get across. However, by forcing full Stripe authorization, a big brickwall is put up to stop people from abusing the system. The addition of the feedback system creates a great foundation to build on for the future, regarding this issue. It is important to remember that when it comes to buying and selling online, regardless of digital content or not, trust is required.
Accomplishments that I'm proud of
We are extremely proud of getting a fully P2P marketplace in to production within 24 hours. In its current state it is fully usable, it's not perfect, but it serves its purpose.
What I learned
We learnt about a lot more ruby "gems", which are community created code snippets that help with various issues. We learnt that dealing with payments online is rather troublesome, and even harder to test properly. We learnt that trust can never be fully modeled in an online environment. We learnt that Stripe is an absolutely extraordinary product.
What's next for Dicode
Considering we managed to achieve so much in such little time, we are thinking about taking steps towards adding a few more things that would make the product fully "public ready". In it's current state it can be used for its purpose absolutely fine, but there are some fundemental things missing that no website should be launching without. This includes proper mailing (registration mailers, payment invoices etc) and in particular for a system involving a marketplace, some sort of dispute system, which we planned but decided against due to time constraints. Terms and conditions and privacy policies are also lacking. Due to the nature of Stripe Connect, the seller is lawfully treated as their own merchant, which takes a lot of the heat off of our backs when it comes to legal issues and the like. However, this needs to be made clear.