Case Study of Laundry Application

You may not think of laundry as a high-tech industry, but at Laundry we’ve invested large quantity in technology to transform the laundry room experience for our customers.

The result is drove towards the intelligent systems that allow for real-time connectivity, easy to use mobile apps, and quicker service response, remote laundry monitoring and smart-card payment.

Being dynamic, multi-national business, technology enables us to maximize laundry room profits, deliver superior service, keep a pulse on what’s important to our customers, and maintain the lifetime customer retention rate.

Phases of Laundry Application

A.) Pick  

pick up

B.) Wash 

laundryD application Development company

C.) En-Route  




D.) Drop  


Save time. Save money. Save the environment. It’s an easy choice. Revolutionize your laundry process today by signing up for Simply Laundry’s door-to-door laundry and dry cleaning delivery service!

Features of LaundryD App:

  • One tap (Request on the Home Pick Button) to complete all your laundry requirement
  • You can Track status of your laundry request whenever you want.
  • Order history of your current and previous orders.
  • You will receive Apps notifications on your mobile. After successful completion of your laundry request.
  • You can mark your pickup and delivery time slot at the time of placing the request.
  • Live location tracking of pickup/delivery persons.
  • Simplified and secured advanced payment options.


Working of Laundry:

PICK: This section is again divided in to 3 sub-sections with a progress form, where contractor have to add details of laundry, like type, unit and Quantity, than contractor have to Submit date for DROP, on last sub-section, contractor have to get sign of a assigned person and submit form.

WASH: After getting laundry, Contractor supply this laundry to washing unit. Taking washing unit authority signature. (Here authorities can check laundry details).

EN-ROUTE: On Getting, Laundry from washing unit, contractor can add notes for laundry.

DROP: This section is again divided in to 2 sub-sections with a progress form, where contractor have to add details of DROPED laundry, like type, unit and Quantity, than contractor have to get sign of a assigned person than contractor submit form.


Here, at Laundry, we believe that each of the laundry order – no matter big or small – is an opportunity to provide better service. We make it a point to collect data and feedback from user, and act on it as fast as we can. Also, we make sure that our presented laundry must know our customers’ standards and that you people as customers get the very best out of it. We trust in giving you the best and most remarkable experience – that even though doing your laundry is our job, it becomes a smooth and unified experience every time, without flop.


Deploy Ruby on Rails project with Passenger and Nginx

I’m assuming that you have installed ruby and rails at your server and have a Ruby on rails project to deploy with Passenger and Nginx

Step 1 –  First of all, we need to add a Sudo User to our system so user can have privilege to access the files.

create a user if not exists, in this example, I will explain to create a root user

tecorb@tecorb-Lenovo-B40-80:~$  adduser root

(this will ask few questions like your password etc.)

Step 2 – Now we have to add this new user to the sudo group


tecorb@tecorb-Lenovo-B40-80:~$ gpasswd -a root sudo

Step 3 – Now we need to install Passenger and Nginx

First of all we will install a PGP (Pretty Good Privacy) key:

tecorb@tecorb-Lenovo-B40-80:~$  sudo apt-key adv –keyserver –recv-keys 561F9B9CAC40B2F7

Now we have to create an APT (Advanced Packaging Tool) source file

tecorb@tecorb-Lenovo-B40-80:~$  sudo vim /etc/apt/sources.list.d/passenger.list

And insert the following line in the file:

deb trusty main

Press ESC then :wq and hit enter, Now our file has been saved through vi editor

Now we need to change the owner and permissions for this passenger.list file:

tecorb@tecorb-Lenovo-B40-80:~$  sudo chown root: /etc/apt/sources.list.d/passenger.list

tecorb@tecorb-Lenovo-B40-80:~$  sudo chmod 600 /etc/apt/sources.list.d/passenger.list

Now we have to update our APT cache:

tecorb@tecorb-Lenovo-B40-80:~$   sudo apt-get update

And finally, we will install Passenger with Nginx:

tecorb@tecorb-Lenovo-B40-80:~$  sudo apt-get install nginx-extras passenger

Step 4- In this step we will open the Nginx configuration file for some changes:

tecorb@tecorb-Lenovo-B40-80:~$  sudo vim /etc/nginx/nginx.conf

now file will be open in vi editer, Uncomment given line, These lines will look like this:

# passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;

# passenger_ruby /usr/bin/ruby;

uncomment these lines and update the path mentioned in the passenger_ruby line and add default user :

passenger_default_user root;

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;

passenger_ruby /usr/local/rvm/gems/ruby-2.3.0/wrappers/ruby;

Note if you are unable to get what is your path to ruby then follow these steps:

tecorb@tecorb-Lenovo-B40-80:~$   which passenger-config

this will return a path like: /usr/bin/passenger-config

If you are on RVM and use Ruby 2.2.1 (version can be whatever you are using)

tecorb@tecorb-Lenovo-B40-80:~$  rvm use 2.3.0

Now finally, we will invoke passenger-config with its full path, passing –ruby-command as parameter like:

tecorb@tecorb-Lenovo-B40-80:~$  /usr/bin/passenger-config –ruby-command

This will show you something like:

  To use in Apache: PassengerRuby /usr/local/rvm/wrappers/ruby-1.8.7-p358/ruby

  To use in Nginx : passenger_ruby /usr/local/rvm/wrappers/ruby-1.8.7-p358/ruby

  To use with Standalone: /usr/local/rvm/wrappers/ruby-1.8.7-p358/ruby /opt/passenger/bin/passenger start

From here you will get path for your passenger_ruby (Nginx). This path will use at passenger_ruby in nginx.conf

Now finally we will save our file and exit by Press ESC then type :wq and hit enter.

Step 5- Now we have almost done, we need to disable the default Nginx configuration at Nginx config file:

tecorb@tecorb-Lenovo-B40-80:~$  sudo vim /etc/nginx/sites-available/default

Findout these lines and comment them:

# listen 80 default_server;

# listen [::]:80 default_server ipv6only=on;

Save this config file, Press ESC then type :wq and hit enter.

Step 6- Now we will create an Nginx configuration file for our application (like our app name is tecorbapp):

tecorb@tecorb-Lenovo-B40-80:~$  sudo vim /etc/nginx/sites-available/tecorbapp

Add the following server block into this file:

server {

  listen 80 default_server;


  passenger_enabled on;

  passenger_app_env development;

  root /home/rails/tecorbapp/public;


In this file we enable listening on port 80, set our domain, enable Passenger, set the application environment here we have used development environment and set the root to the public directory of our ruby on rails project.

If you don’t want to add your domain to the application, you can skip the server_name line from this file, or if you want to use any IP address you can replace with your ip address.

Now we will save this config file, Press ESC then type :wq and hit enter.

Step 7- Now finally we will create a symlink this file:

tecorb@tecorb-Lenovo-B40-80:~$   sudo ln -s /etc/nginx/sites-available/tecorbapp /etc/nginx/sites-enabled/tecorbapp

and Restart our Nginx:

tecorb@tecorb-Lenovo-B40-80:~$  sudo nginx -s reload

Now our application should be accessible from our domain, go to your browser and hit the domain.

Also Read- AngularJs with Ruby on Rails Task-1

If you are, looking to Develop and design for your project then feel free to contact us at any time

  • Call Us- +91 9910781148, +1 8033353593
  • Email:
  • Skype- tecorb

“We maintain transparency with our customers. Our values and business ethics has given us repeated customers. We tend are proud to be a reliable outsourcing partner for many clients across the World.”

About UICollectionView in IOS

UICollectionView, Manages an ordered collection of data item and present them using customizable layouts.

UICollectionView is same as the UITableView. UITableView manages a collection of data or information and display then on the screen in a single column layout whereas UICollectionView offers developers flexibility to present item using customize layout.

UICollectionView has three components:-

  1. Cell:

It is an instance of UICollectionViewCell . It represent a single item in the data collection.

  1. Supplementary views:

It is optional and usually used to implement the header or footer view of the sections.

  1. Decoration views:

It is another type of supplementary view but for decoration purpose only. It is not related to data collection. We create decoration view to enhance the visual appearance of the CollectionView.

Step 1:

Open the Excode and select the Single View Application.

UI Collection View

Step 2:

Create project with “ExCollectionView” name.


Step 3:

Open the StoryBoard and there is a ViewController and drag the CollectionVIew inside the ViewController .

And set the Add New Constraints.


Step 4:

Select now the cell inside the UIViewController and add the UIImage in the UICollectionView cell and also set the UIImage constraints.



And open the ViewController.swift and add the extension of  UICollectionViewDataSource,UICollectionViewDelegatein the ViewCollection.swift.

And these three method in the ViewController.swift:

func numberOfSections(in collectionView: UICollectionView) -> Int {



    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {



    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) ->      UICollectionViewCell {




After that select the UICollectionViewCell and set the name of the reuseIdentifier = “MyCollectionViewCell”

Using Assistant Editor, add an IBOutlet to CollectionView in ViewController.swift

@IBOutlet weak var collectionView: UICollectionView!

Create a new Cocoa Touch Class file (File > New > File… > iOS > Cocoa Touch Class). Name it MyCollectionViewCell. This class will hold the outlets for the views that you add to your cell in the storyboard.


And open the ViewController.swift and add this code in the numberOfItemInSection in collectionview:


And go to the main story board and select the UIImage and set the image in the UIImage.


And also add one method in the viewcontroller.swift:

  func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout:    UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

        return (indexPath.section == 0) ? CGSize(width: collectionView.bounds.size.width, height: 200) : CGSize(width: collectionView.bounds.size.width/2 – 2, height: 170)


And after the execude your code


It should be look like this. If you want to add multi image in the UIImageView then you use the array and pass the image in the array and cell in the cellForRowAtIndexPath method.

Also Read- About Intents in Android

MVP (Minimum Viable Product) Part- 1

Over the past few years, minimum viable product (MVP) have begun to evolve

What is MVP?

Minimum Viable Product is development technique where fresh product or a website is being launched along with minimum resources in order to satisfy the tech-savvy or early adopters. The complete set of features is designed and developed after getting the feedback from the initial users about product that had already been launched. Through this initial version of product developers gather enough learning about product used by customers by applying least effort.

Importance of MVP

MVP is required to get data from customers regarding the product launch. When all the required data had been gathered then we move forward to develop fully functional product.

1). Save time and money.

2). Engage investors.

3). Cross checking whether project is being developed according to user’s feedback.

4). Get to know about the present market behavior regarding product.

 MVP for Startups

It is really a cool idea for an entrepreneur organization to begin with something that won’t let them down. These are MVP building blocks that make up an application live without actually building it. As startup’s they need not to invest on development all they have to do is to focus on Wireframes, Mockups, Explanatory Video or Rapid Prototype. This will give them a basic idea to release their initial model without wasting time and money. Being an entrepreneur one needs to think about having maximum output by providing minimum input features.

All the famous startups such as Facebook, Twitter, Dropbox, Zappos, Aardvark had just an idea that had been converted into live project. It’s all up to you, how well you can use the existing technology to build newer one. Get set and hit unless and until you achieve your destiny.  

 Factual MVP (Minimum Viable Product)

The basis: Associate participant could be a thanks to get the foremost bang for your buck once you’re promoting a replacement product construct.

So, you invest the smallest amount of cash and energy attainable to present your product plan a market check run so as to check if your target market is even remotely interested

 “The main concept of MVP is to sell product to market.”

 If they so no interest towards your concept, you only made a little investment. But if they are interested them it is green light to build a more sustainable product.

There are many building blocks to develop MVP, but I will talk about few of them.


Building blocks of MVP (Minimum Viable Product)

 1). Wireframes

 These are best choice if you are running out of time and money. You are explaining your product to tech-laden or creative audience. If your target are people who have real interest then MVP is best choice. It is based on visual concept. Apart from that if your aim is to present it to different audience that are not from above category then you need graphical or more enhance view of MVP. (Minimum Viable Product)

2). Rapid-Prototype

Other than that there are times that you need things that move, an eye catching stuff that contain buttons and images to attract them. Basically you need to explain you audience that they are not working on actual product so that they may not get over distracted by the functional behavior. Rest rapid prototype are best for people who need a virtual or visual representation of their product.

 3). Explainer Video

It is better idea to create a video rather to develop a product. So why? By biggest advantage of making a video prototype will lead towards better explanation of product that will be developed. User will get whole working of product in few minutes. It had great advantage to present your product to potential user or investors who are really interested without really building the main product.

4). Mockups

These are safe when you are working with an audience who don’t have mental practice to visualize abstract concept. They are ready made design that will help your audience to get perfect match to meet their requirements accordingly. To have better effect you can build interactive mockups of product.


 “For some shareholder, an image is worth than having multiple Wire-frames”  

Also Read- Fragments in Android

Fragments in Android- TecOrb Technologies

A fragment represents a conduct or a part of user interface in an activity. You can integrate more than one fragment in a single activity to build a multi-pane UI and reuse a fraction in multiple activities. you may consider a fragment as a modular phase of an activity, which has its personal life cycle, receives its very own enter events, and which you may upload or dispose of even as the interest is walking (kind of like a “sub interest” that you may reuse in exclusive sports).

Following are crucial points about fragment −

  • A fragment has its very own layout and its own behaviour with its personal life cycle callbacks.
  • You may add or do away with fragments in an interest whilst the interest is strolling.
  • You may integrate multiple fragments in an unmarried hobby to construct a multi-plane UI.


A fraction can be utilized in multiple activities.

  • Fragment life cycle is closely associated with the life cycle of its host interest which means when the pastime is paused, all the fragments available in the hobby will also be stopped.
  • A fraction can put into effect a behaviour that has no person interface aspect.
  • Fragments were added to the Android API in Honeycomb model of Android which API version eleven.
  • You create fragments via extending Fragment elegance and you can insert a fraction into your hobby layout by way of affirming the fragment inside the hobby’s format document, as a <fragment> detail.
  • Prior to fragment introduction, we had a difficulty because we will display only a single hobby on the display screen at one given factor in time. So we had been not capable of divide device display and control extraordinary components one by one. However with the introduction of fragment we got greater flexibility and removed the difficulty of having a single activity on the display screen at a time. Now we will have a single pastime however every interest can incorporate of more than one fragments in order to have their own format, occasions and entire life cycle.

Right here is the listing of techniques which you can to override for your fragment magnificence

  • onAttach():The fragment example is related to an interest example. The fragment and the hobby aren’t always fully initialized. Generally you get on this approach a connection with the interest which makes use of the fragment for similarly initialization paintings.
  • onCreate(): The device calls this technique when developing the fragment. You have to initialize critical components of the fragment which you need to keep when the fragment is paused or stopped, then resumed.
  • onCreateView(): The system calls this callback while it is time for the fragment to attract its person interface for the primary time. to draw a UI on your fragment, you need to go back a View issue from this technique that is the foundation of your fragment’s format. you may return null if the fragment does no longer provide a UI.
  • onActivityCreated(): The onActivityCreated() is referred to as after the onCreateView() method whilst the host hobby is created. Activity and fragment example have been created in addition to the view hierarchy of the activity. At this point, view may be accessed with the findViewById() method. Example. on this approach you may instantiate objects which require a Context object
  • onStart(): The onStart() technique is known as once the fragment gets visible.
  • onResume(): Fragment turns into lively.
  • onPause(): The device calls this technique because the first indication that the person is leaving the fragment. this is generally where you need to dedicate any modifications that must be endured beyond the modern-day person session.
  • onStop(): Fragment going to be stopped by using calling onStop()
  • onDestroyView():Fragment view will smash after call this technique
  • onDestroy(): onDestroy() known as to do very last smooth up of the fragment’s state however no longer assured to be referred to as by using the Android platform.

How to use Fragments?

  • This involves wide variety of simple steps to create Fragments.
  • To begin with determine what number of fragments you need to apply in an activity. as an instance permit’s we need to apply fragments to address landscape and portrait modes of the device.
  • Next based totally on number of fragments, create instructions to be able to amplify the Fragment class. The Fragment class has above noted callback capabilities. you could override any of the functions based totally to your requirements.
  • Corresponding to each fragment, you’ll need to create layout files in XML record. Those files may have format for the defined fragments.
  • Eventually adjust activity document to outline the actual good judgment of changing fragments based totally to your requirement.

Forms of Fragments

  • Basically fragments are divided as three ranges as proven underneath.
  • Single body fragments− single frame fragments are using for hand keep devices like mobiles, right here we can show best one fragment as a view.
  • List fragments − fragments having special listing view is called as list fragment
  • Fragments transaction− The usage of with fragment transaction. We are able to flow one fragment to any other fragment.

Mobile Search Engine Optimization

Mobile Optimization

Mobile optimization is the process of ensuring that visitors who access your website from mobile devices have knowledge of optimized for the device.

What is mobile Optimization

Every year people spend maximum time on their mobile devices and tablets, however several websites still are not designed to account for various screen sizes and load times. Mobile optimization takes a look at page speed, website structure, website design, and additional to create certain you are not unwittingly turning mobile guests or visitors away.


Mobile SEO Best Practices

If your website is already optimized for search engines, there are only some additional things that you can think about when you optimizing for mobile.

Page Speed:

Because of hardware and property problems, page speed is even a lot of necessary for mobile users than desktop users. Beyond optimizing pictures, you will need to minify code, leverage browser caching, and reduce redirects.


Website design for mobile

Mobile devices are simplifying and revolutionizing the ways in which websites are designed. “Above the fold” not has which means during a world whenever we have a tendency to scroll endlessly

Optimize titles and Meta descriptions

Remember that you are working with less screen space when a user searches using a mobile device. To show off your best work in SERPS (Tools for Keyword Checking on Google or Yahoo Search engine), be as concise as possible (without sacrificing the quality of the information) when creating URLs, titles, and Meta descriptions.

Optimize for local search

If your business has a local element, keep in mind to optimize your mobile content for local search. This includes standardizing your name, address, and signal and as well as your town and state name in your website’s data.

Mobile site configuration

Probably the most necessary decision you will build once fitting a website is deciding whether or not you wish to use a responsive, dynamic serving, or separate website configuration. Everyone has its advantages and disadvantages. Google prefers responsive design however supports all 3 choices as long as you have got set them up properly.

Responsive web design

Responsively designed websites use CSS3 media queries to serve an equivalent content to mobile and desktop users using a fluid grid and a useable design to automatically depend to the size of a user’s screen.


Responsive designed use media queries to focus on the layout supported screen dimension, resolution and orientation. For example, you might use the subsequent CSS to instruct browsers a way to show content for a screen that is 420 or fewer pixels wide:

Final thoughts

Sure, do paid search to get visibility in Google smart-phone search; however do not forget to try to mobile SEO (Search engine optimization) for additional visibility. These steps — target on fix mobile-friendly errors, core ranking, do mobile keyword research and content creation, do apps store optimization and apps indexing, and use AMP (Accelerated Mobile Pages) — will help bring more organic traffic to your content from mobile searchers.


About Intents in Android

Intents are asynchronous message which allow application components to request functionality from other Android components.

The dictionary meaning of Intent is Intention or purpose. So it can be described as the intention to do action.

Android intent is the message that is passed between components such as content providers, activities, broadcast recievers, services etc.

Android Intents are mainly used to:

  • start a service
  • dial a phone call
  • Broadcast a message
  • Display a list of contacts
  • Display a web page

The LabeledIntent is the subclass of android.content.Intent class.

An intent can contain data via a Bundle. This data can be used by the receiving component.

In Android the reuse of other application components is a concept known as task. An application can access other Android components to achieve a task.

Starting activities or services:

To start an activity you have to use a method startActivity().This method is defined the Context object which Activity extends.

The following code demonstrates how you can start activity via intent.

Intent i = new Intent (this,Login.class);


Activities which are started by other android activities are called sub-activities. To start a service via intents, use the startService(Intent) method call.

Types of Android Intents:

There are two types of Intents in android which are as follows:

  • Implicit Intent
  • Explicit Intent

Implicit Intent:

These Intents do not name a target and the field for the component name is left blank. Implicit Intents are also used to activate components of other activities.

For example-

Intent i= new Intent();




Explicit Intent:

Explicit intent going to be connected intenal world of application. Explicit Intent specifies the components. In such case,intent provides the external class to be invoked.

For example-

Intent i= new Intent();


Let’s see a simple example of Intent that take from one activity to another activity.

First Activity XML:

code 1

code 1.1

Second Activity XML:



In above example, there are two xml activity in which first is our main and login activity in which we take two edit text for email and password and a login button to submit the data by which on click we reach at the other activity where we take an edit text and show welcome as a text.

With the help of java we write code and by intent we connect two activities as first activity with the second.

Also Read- Model View Controller (MVC) Pattern

If you are, looking to Develop and design for your project then feel free to contact us at any time

  • Call Us- +91 9910781148, +1 8033353593
  • Email:
  • Skype- tecorb

“We maintain transparency with our customers. Our values and business ethics has given us repeated customers. We tend are proud to be a reliable outsourcing partner for many clients across the World.”