Skip to main content

UX/UI Software Development with O.I.C.E. Framework for Earth Day Everyday Bottle Drive Fundraiser Project

· 4 min read
Asia K

Intro​

About a year ago, I came across a problem solving framework for solving JavaScript coding challenges. It's pronounced oy - chee and uses the letters O.I.C.E. to help remember the framework by using an acronym.

Traditionally, the framework's acronym stands for the following:

  • O: outcome
  • I: input
  • C: conditions/concerns/complexities
  • E: examples/edge cases

I've found that with some tweaking, the framework can be useful in other areas beyond solving coding challenges.

For example, when moderating a session on a topic, it has proven to be a useful way to:

  • 1) keep the conversation on track
  • 2) summarize what's already been said (helping to avoid circular conversations)
  • 3) find/maintain focus on the desired outcome
info

For more information on the O.I.C.E. framework, check out the Medium.com article What’s OICE? Oh that’s niceee… A Setup Framework to Technical Interviews and White Boarding

Project Planning​

Outcome​

Print flyer that:

  • Thanks employees for participating
  • Presents qr code link to web application

Web application that:

  • Provides update on fundraiser
  • Presents survey asking for input on next actions & suggestions

Inputs:​

  • Designed & printed flyer
  • QR code linking flyer to application
  • Info on what the funds are going towards
  • Info on how many items have been recycled
  • Info on how much has been raised so far
  • Form with:
    • radio inputs allowing users to vote to continue the fundraiser
    • radio inputs allowing users to vote for a goal amount
    • textarea to share comments, questions, and suggestions
    • submit button to handle form processing

Concerns/Conditions:​

UX/UI should:

  • Thank users for participation
  • Reiterate the purpose of the fundraiser
  • Be accessible to employees only
  • Display the qr code large enough to be scanned easily

Examples/EcoSystem/Tooling:​

Content

Technical Tools


Project Development Log​

Creating the UX & UI​

  • Met with reresentative stakeholders to discuss desired project outcomes and completion dates
  • Designed the flyer in Figma using a community template with recommended print flyer dimensions (2100 x 2800)
  • Then for the web application, created a basic UI prototype in Figma
  • Next, created a new React Application npx create-react-app bottle-drive-fundraiser
  • Manually installed ChakraUI
    • With NPM npm i @chakra-ui/react @emotion/react@^11 @emotion/styled@^11 framer-motion@^6
    • Set up the ChakraProvider at the root of the application in index.js
        1. Imported ChakraProvider component
        1. Wrapped ChakraProvider at the root of the app
    • Installed Chakra UI icons
      • npm i @chakra-ui/icons
      • imported selected icons in App.js
      • Used the boxSize prop to change the icon sizes
    • Created a React component for the form, Form.js
      • For backend form processing and integration with third-party services (in this case, slack), installed formspree with command npm install @formspree/react
      • added import statement, import { useForm } from '@formspree/react'; to Form.js
      • using React useForm hook and event listeners to handle the change in form data's state.
      • Imported Form.js to the top of App.js
    • Created and imported form.css to access styles for form
    • Installed Chakra UI Buttons
      • npm i @chakra-ui/button
    • Added current date to application with Moment Library npm install --save moment package info
    • Uploaded to GitHub Repo
    • Deployed web application to Vercel for hosting
    • Created qr code linking to web application with the QR Code & Barcode Scanner app on iphone.
    • Added qr code to flyer

Thank You For Recycling

Web Application Screenshot​

Web Application Screenshot

Conclusion​

As is, the deployment functions as expected, but there is more to be done. Will be following up this post with a documentation post on testing the web application for user accessibilty.