April 29, 2019
This post roughly covers the process of creating the graphic style and developing the logic for the interface of my application.
Related Links:
GitHub Repository for template version of my front end - Source Code
Tackling the design and logic for my front end is essentially a process of trying to figure out what is the personalty of my app and how will users interact with it. In general, the project followed a path from design to development to testing.
The following are some of the questions and tasks I wrote out to help me to figure out the project.
What is your app’s personality?
Is there a design principle behind your color choices?
Decide on Approach
Will I use any existing front end frameworks / libraries to help with the logic of my app?
What existing resources will I use to help with the design of my app?
Before starting work on the design, I had a rough idea in my head on how I wanted to approach the design. I knew that I wanted the design to be fun, and fun to make. I did not want the design to seem corporate, slick, or minimal. I wanted the design to be arty, illustrative and kind of weird. Keeping with weird, the idea that I came up with is that each scooter would be a unique “creature” and that users would discover them out in the wild. (sort of like Pokemon meets Bird scooter app). Each scooter would be paired with a creature illustration and brief background story.
The first task I set out for my self was designing the logo. Starting with the logo helps, to set the mood for the rest of my design assets and to define some of the core colors.
The next task is to figure out the layout for the website and create a hero image. I wanted my site to open up with a large hero illustration, setting the tone for my site. Additionally the illustration gave me an excuse to do some painting 🖌️
The layout for the home page will contain: info explaining the app, an FAQ, and a big shiny button to sign up. The rest of the application’s interface will be links to policy documents and a system to handle scooter management.
The software, I used to make my illustration is: Autodesk Sketchbook, and Krita both are free and excellent.
After finishing the illustration, I spent some time creating a few little guys to populate my site.
Fonts are an important aspect of a site’s personality. For my fonts, I used Google Fonts, they have a bunch of free fonts to use and you can simply link to their CDN so that you do not have to download or install anything.
The fonts I used in my app:
Font | Use |
---|---|
Nunito | primary body text |
Nunito Sans | logo and headers |
Rokkitt | creature descriptions |
The last asset I worked on is an illustration for the first “Creature”. The idea being that when a user scans a scooter it would bring up an illustration and a brief description of the corresponding Creature. My first Creature is “Zi”, an ancient, nebulous , spirit eye… thing 🤔
Creature description:
One of the ancient elemental creatures, formless, mysterious, and possessing vast power. Many tales and legends surround the origin of this creature. Some worship it as a god (the cult of I) others regard it as an evil spirit or doubt its very existence. Those believed to have gazed upon the creature, are oft heard repeating the phrase: “The eye knows. The eye sees…
With all my assets created, my next step is put them all together into a usable website. Strictly speaking this project did not progress linearly from design to development. In reality both design and development happened simultaneously.
Because people need to be outside to use one of my scooters, I can assume that my site will be visited mostly by mobile devices. That being the case, I will need to decide if I want to develop native mobile apps (andriod, IOS) or just a web app. After doing some research and looking into my project requirements, I found that I did not require any of the added features that a native mobile app provides such as bluetooth, sensor data, flashlight access, etc. By not having to develop native versions of my app, should save me a considerable amount of time and heartache.
An important decision when building a app is what tools will you use to build it. As much as possible, I try to make use of existing frameworks when building a site.
Tool | Description / Use |
---|---|
Bootstrap | Super popular component library, makes it quick and easy to throw together a site |
SASS | CSS extension, adds some nice extra features to css. |
React | My favorite Javascript library |
Reactstrap | Ready for React Bootstrap 4 components |
React Router | A router that makes adding navigation to your react app easier |
Font Awesome | Icon Pack - My site relies heavily on emojis, for icons however some times you need something that you cannot find an emoji for. |
Hero Patterns | Repeatable SVG patterns to add texture to my site. |
React Stopwatch | A stopwatch component built for React, I need a timer so that users can keep track of their ride time. Modifying an existing component is usually faster than starting from scratch. |
React QR Reader | A QR reader component built for React. I needed a QR reader so that users can scan a QR code on the scooter. |
I chose the tools I did mostly based previous experience using them. It is always easier to go with what you know.
I started by creating a simple mock up of the site using default bootstrap components. The mock up allowed me to focus on figuring out the logic and navigation of my app before worrying about importing any of my visual assets.
The following lists map out the paths a client can take when using my app. The ride flow has more steps than I would like, maybe in the future I will look at simplifying the process.
Signup flow:
Ride flow:
App presents Creature illustration and description
If scooter is available, User will have the option to unlock the scooter
After unlock, the app routes to the stopwatch component, with start button
Ride ends after time limit or user presses stop button
At this point in the project, my back end was already setup on AWS. To help connect the API I setup on AWS with my front end I used Amazon’s Amplify Framework. I found Amplify’s documentation lacking in useful examples. I think the Amplify section on the Serverless Stack guide provides a really good example of how to use Amplify.
The final step after getting both sides of my app communicating, is to take my working mock up and combine it with the visual assets I made. After a lot fiddling, testing, and breaking stuff, I slowly got every to fit together. This part of the project was the most tedious part and probably took the longest period of time to complete.
To see the “final product”, visit: https://creature-share.com/
One last step for my site is to set it up for hosting on Netlify I could have used AWS for hosting, which seems like a natural fit because my back end is already on AWS, however I found Netlify better for these reasons:
At this point, I have a working proof of concept site. The next step for this project is to figure out the scooter hardware and get it communicating with my app. My site is by no means a production ready app. I purposelessly left out necessary features like payment, because I do not currently intend to try to make my app into a working business. For me, the purpose of making Creatures was to learn and have fun. However, if I was going to try to make a production ready site, here are some things I would try to implement:
If you are interested in starting your own scooter share, I put together a repo with a generic version of the front end.
A blog about Creatures an open source scooter share project
Started by Joshua Sheridan