DIFF Clothes Customize Service

An app for creating custom clothing and accessory designs

Tilda Publishing
Fashion & Beauty
Desktop
Stand
Print
Multitouch
Front End
eCommerce
Hardware
Back End
Adobe AIR
The task
The task
Our customer was insistent on giving the user a tool with an intuitive, good-looking and accessible interface, developed for touchscreens.
With the help of a kiosk multi-touch table stand, the user creates a design out of a wide selection of prints, stickers, labels and their own images to be heat-printed on T-shirts and phone cases.
Designing
Designing
Before creating their design, the user selects a template for a T-shirt of suitable size (and type if it’s a women’s T-shirt) or a phone case for one of the phone models. A minimalistic model is rendered according to the existing pattern or shape of the clothes/case to let the user fully focus on their design.
Design creation screen
The user can place prints and stickers, draw and write text on the T-shirt.
Design creation screen
The user can place prints and stickers, draw and write text on the T-shirt.
Text
To make typing easy, we developed a keyboard for the device. An interim version can be found and downloaded from our Dribbble.
To make font selection convenient, we picked a few memorable phrases to showcase the fonts.
Text
To make typing easy, we developed a keyboard for the device. An interim version can be found and downloaded from our Dribbble.
To make font selection convenient, we picked a few memorable phrases to showcase the fonts.
Drawing
The drawing tool interface was designed to look similar to the typing keyboard. As a result, all tool control panels have a consistent style.
The drawing tool allows the user to pick various brush shapes, colors and sizes and correct the drawing with an eraser.
Drawing
The drawing tool interface was designed to look similar to the typing keyboard. As a result, all tool control panels have a consistent style.
The drawing tool allows the user to pick various brush shapes, colors and sizes and correct the drawing with an eraser.
Grouping control buttons
Grouping control buttons
After we established the right button size and decided on the design elements, we thought about the best way to place them on the screen. We kept these two things in mind:
1
the part with the model has to be as large as possible;
2
the user shouldn’t block the screen with their hands while designing.
Consequently, we decided to place all of the control elements at the bottom, freeing up space and making it so the user wouldn’t have to reach for the buttons on the top of the screen and lose sight of the model.
Development
Development
Adobe Integrated Runtime (AIR) is Adobe’s cross-platform environment for launching apps. It allows the use of HTML/CSS, AJAX, Adobe Flash and Apache Flex for porting web applications (including Rich Internet Application) to PC’s and mobile devices.

We chose Adobe AIR because:
1
it offers high development speed;
2
it has premade libraries for working with system touch and multi-touch events;
3
we already had some groundwork in our drawing tool;
4
it’s a good environment for working with graphics and effects with the help of Bitmap and BitmapData classes;
5
we tested each part of the app in the past, so this solution promised to be dependable and economically efficient for our customer.
Hardware requirements
Hardware requirements
The customer asked us to draw up minimal hardware requirements for kiosk computers to run DIFF smoothly.
Having looked into it, we have compiled a list of required hardware:
1
a CPU with a high base clock frequency, e.g., an Intel Core i3−3240 with 3400 MHz;
2
a RAM stick with a clock frequency compatible with the CPU, e.g. Qumo [QUM3U-4G1600С11] with 4 GB and 1600 MHz;
3
a motherboard-integrated video card;
4
an SSD drive (capacity depends on the amount of content);
5
a long-lived power supply unit.
Optimizing images
Optimizing images
The source image size is somewhere around 5000×5000 px, as it is the quality necessary for printing on a relatively large area. However, working in real time with such large images proved to be impossible; cumbersome operations like applying filters would throttle system performance.

To keep the design creation process smooth and interface response instant, we decided to work with copies of the large source images shrunk to 1200 px (on the wider side). After the source images are uploaded to the server, they are automatically copied in 1200 px and sent over to the app.
The server side was made using the Rails framework. The carrierwave library handles the uploaded files, and the mini_magick library processes the images with the help of the imagemagick package.
Quick image upload
Quick image upload
DIFF has a lot of graphics: prints, stickers and fonts. We required an uploader that would quickly sync the content on the hard drive with the content on the server and prepare the data on the hard drive for instantaneous upload.
We could not use pre-existing solutions, as they tend to upload the content directly into RAM, which is insufficient in this case. Consequently, we wrote a custom synchronizer that gets the images from the server in such a way that the user doesn’t even notice it.
In this case, the monitor and the computer can be separated from each other, allowing to speed up syncing and general performance by installing an SSD drive.
Action history
Action history
A tool that saves action history is invaluable when something goes wrong during the creative process. We wanted this tool to:
1
have an infinite amount of undo steps;
2
perform quickly;
3
do both of the above despite low RAM size.
To achieve this, the action history saving feature was made using the Actions method, which writes actions that have taken place with the objects instead of states (as per States method). The Actions method allows the app to work faster; however, there were a few issues with keeping track of a large amount of unique actions and issues with the difference in undo/redo algorithms.
The Live Typing team successfully finished the project and handed it over to the customer.
Account manager
Denis Vizigin


Developers
Yakov Scherba
Maksim Sidorenko

Managers
Yuri Kuzmenko
Daria Abramova

Quality Assurance
Ivan Savin

Designers
Sergei Popovich
Elena Galtsina