2023

Oura

Oura is a project meant to allow the creation of a storefront site dedicated to clothing. It allows the creation of products, categories and sales with a great degree of customization.


Technologies and Tools

  • Next.js

    Next.js was chosen as the framework for the project due to its simplicity in developing server-side and client-side components, and its industry-wide adoption. This project needed to display a lot of data, for which server-side rendering was a great fit, and at the same time, it needed to be highly interactive as the user clicked on the products or categories. Due to this, Next.js was a great fit for this project.

  • Stripe

    Naturally every storefront needs to have a payment system, and Stripe was chosen as the payment provider due to its ease of use and security. This project was the first time I used Stripe, and I was able to integrate it with Next.js seamlessly.

  • PostgreSQL

    PostgreSQL was chosen as the database due to its reliability and scalability. This project has many related pieces, and it was important to have a database that could handle all of these relationships and interactions.


Roles and Responsibilities

This project was developed single-handedly by myself in 2023. I was responsible for every facet of it, from design to development. Of note are:

  • Full-Stack Developer

    Implemented the project’s functionality and ensuring it was secure and scalable. I used Next.js, tRPC, NextAuth.js, and Stripe amongst other tools to build the project.

  • UI/UX Designer

    Designed the user interface and user experience of the project. The project wanted to be different from other clothing stores, and I wanted to create a unique experience for the user. I used Figma to create the designs and implemented them in the project using TailwindCSS.


Challenges and Solutions

  • Security

    One of the biggest challenges when developing a storefront site is security.

    To help with this, I used NextAuth.js, which provides a simple and secure way to handle user authentication and authorization. I also used Stripe to handle payments, and Supabase security features to ensure the data was safe.

  • Payment System Implementation

    This was my first time working with any payment system, and I had to figure out how to integrate it with the project. I used Stripe. It required a bit of setup, but it was somewhat straightforward. I struggled a bit more dealing with orders, how to tag them as they were created, how to deal with deleted ones, refunds, failed payments, etc. This required a lot of research and dealing with edge cases.