ABOUT SHARE WASHI

Share Washi is a marketplace app built for a community of about 100,000 active users who consistently buy washi tapes to decorate their notebooks.

Sharing washi is now easy

With hundreds of new washi tape designs coming into market every month, people have started to form a new habit of sharing washi tapes. Instead of buying the whole unit (a roll), people are buying parts of a roll (by meters) and there’s many individual organizers who hold group buying and also do sub-packing for group members.


However, there’s no software, website or app that serves this need. Currently, group organizers are using online albums to upload new designs of tapes while members comment how many meters do they want to buy. After the deadline, the group organizers have to manually record and calculate the orders of each tape for each member using Excel. This is difficult and inefficient. An organizer with a 100 group members usually takes three days to generate orders and not surprisingly with many mistakes.

Share Washi

Choose one!

Customer

A.) Easily place, edit, pay, and view orders.

B.) Join groups based on location, activity, and time the group was created.

C.) Get the latest information on new products on the news feed.

app gif demo

KEY FEATURES

Earn Points

Sign in daily to earn 10 points (enabled at 12 am) that can be used towards advertising. A bonus of 20 points can be earned every 7 consecutive days.

Advertising

Companies and group organizers can easily set their CPC (cost per click) for their organization and each product and see their rank rise up. Rank is based on both CPC and created time to ensure customers have a chance to view the newest products.

Orders

With Share Washi, collective group buying of Washi tapes is made possible. Each customer decides on how many meters they want to purchase. When the sale is over, Share Washi automatically either confirms or cancels the amount of meters a customer can buy based on how many complete rolls are ordered as a group. Customers who order first will get priority of sale.

Payment

A.) Pay by credit card without registering to PayPal or Stripe.

B.) Receive payment using a Stripe account.

C.) Users who do not have a Stripe account, Share Washi will generate a deferred account using their email. Money will be sent to their Stripe account. All transactions can be viewed from the Share Washi app.

BUSINESS VALUES

A customized app built to suit your business needs

E-commerce

Making buying and selling of washi tapes fast and easy.

marketplace

Set up your own e-commerce platform so your users can create their own online stores.

Reward program

With an app your users will want to earn and redeem points. Loyal customers are essential for a succesful business.

Presale | Group-buy

A pre-sale app can help you to put your new designs of clothes into production only after you get certain amount of orders.

On demand

Provide services to your customers using contractors who are paid through your platform.

demo with screen shots

Features Coming Soon

Chat & Messaging

E-mail notification

Shops near you

More sign-in & Payment methods

Languages & Tools

Always learning & improving

X-code 9.0

Swift 4

Javascript

Stripe API

Storyboard

Share Washi carefully followed the MVC mode with sub-folders for company, group and customer. Under helper folder are all the reusable functions including firebase calls, extensions and subclasses of UI and NS elements. These helpers not only makes sure the code does not repeat itself, but also ensures visual consistency of the design.

storyboard

MVC mode and extensions

Share Washi carefully followed the MVC mode with sub-folders for company, group and customer. Under helper folder are all the reusable functions including firebase calls, extensions and subclasses of UI and NS elements. These helpers not only makes sure the code does not repeat itself, but also ensures visual consistency of the design.

MVC

Sample code

Reusable Sub-UIView

Buy Points View
embeded view

This sample code is a subclass of UIView that is embedded twice and used once as a pop-up view. Within this subclass, it uses another UIView subclass to repeat sections formed by the select button, preset points value and price before discount. This subclass uses delegate to send data to checkout view as well as the view that called it.

Click

to see

sample code!

CHALLENGES

To make stripe connect with Firebase

Stipe has an awesome API and Firebase, much different from self-built backend server, has its own tutorial to teach us how to implement strip to perform basic check out. However, when it comes to Connect, which is a stripe function enables our app to charge one user on behalf of another user, there’s not many resources online talking about how it can cooperate with Firebase. It took my days of researches , failing and trying to figure it out so my app can perform as a marketplace where people open their own shops and paying or receiving money only by a few clicks.

Design the database schema for Firebase

Due to the limited query functions, the best practice for firebase is to denormalize which is very nonintuitive. I have to repeat data in places and break the logic of the structure. Since this is an app dealing with heavy interactive product and order data for three totally different types of users, the design of its database schema was not a easy task. I listed down data needed for each page, try to find a balance between read and write performance. After rebuild it a few times, now data are organized logically with limited redundancy and the database is well performed.

firebase

What I would do differently next time?

Design first

Programming show only be started after UI and UX designs are finalized so I can better plan and design my code, have it well documented and keep it clean and consistent.

Take better use of source control with better commit history

Without the pressure from collaboration or show my app to people during development, I frequently forgets to commit changes and when i remember to do so, too many changes has been made which causes difficulty of writing good comment. I realized the importance of source control after I tried to write a page in another way and noticed it’s not the best choice. I did millions of control Z to go back and regret of not having an up-to-date master branch and testing things on another branch.

Build everything programically

Initially, it was clear to me why not taking advantage of the convenience storyboard provides until my app gets complex. I have 9 pages created programmatically and that practice make me understand the flexibility and capability pure code offers. Cooperation and maintainess are easier and designs can be implemented more accrete, dynamic and consistent.

back to top