- Personalized features. Currency, language, country specific deals, taxes, or delivery options are changed based on user's location.
- Registering provides value to users. For example a "Free Trial" button communicates a clear benefit, but a "Register" button doesn't. Unnecessary registration is avoided.
- Transparent pricing. Prices are clearly displayed. There are no hidden costs or surprises in the terms.
- Pages don't refresh automatically. Users can get confused if new content is uploaded suddenly, for example on news websites.
- Sample content. For example there is a sample newsletter next to a newsletter sign up form.
| class RecipeSerializer < ActiveModel::Serializer | |
| embed :ids, include: true | |
| has_many :steps | |
| attributes :id, :title | |
| end |
| Recipe = DS.Model.extend | |
| title: DS.attr('string') | |
| steps: DS.hasMany('step', {async: true}) | |
| Step = DS.Model.extend | |
| substeps: DS.hasMany('substep', {async: true}) | |
| Substep = DS.Model.extend() |
| import TokenAuth from 'appkit/lib/token-auth'; | |
| export default { | |
| name: "token-auth", | |
| before: "store", | |
| initialize: function(container, application) { | |
| application.register('auth:main', TokenAuth); | |
| application.inject('controller', 'auth', 'auth:main'); |
| var TokenAuth = Ember.Object.extend({ | |
| accessToken: $.cookie('accessToken'), | |
| serverTokenEndpoint: 'http://api.lvh.me:3000/oauth/token/', | |
| init: function() { | |
| if(this.isAuthenticated) { | |
| DS.RESTAdapter.reopen({ | |
| headers: { | |
| "Authorization": "Bearer " + this.accessToken | |
| } | |
| }); |
| <UITableViewCell: 0x12a4c3e0; frame = (0 44; 300 44); autoresize = W; layer = <CALayer: 0x12a4c370>>\n | <UITableViewCellContentView: 0x12a4c510; frame = (0 0; 300 44); gestureRecognizers = <NSArray: 0x12a4c770>; layer = <CALayer: 0x12a4c570>>\n | | <PXUITextField_InsetTextField: 0xb158f00; baseClass = UITextField; frame = (0 0; 300 44); clipsToBounds = YES; opaque = NO; gestureRecognizers = <NSArray: 0xb1595b0>; layer = <CALayer: 0xb159080>>" |
| Analytics | |
| Ask Lifestyle.io | |
| Consulting / Freelancing | |
| Design | |
| Entrepreneurship | |
| Failure Stories | |
| Feedback | |
| Growth Hacking | |
| Health | |
| Hiring |
How We Bootstrapped a $20K Website into a $4M/year Business
APRIL 17, 2013 4:40 PM \ LEAVE A COMMENT \ MYCLEAN When MyClean started 3 years ago, we did everything the hard way. The founders of our company are all non-technical – our CEO is a former derivatives salesman – and other founders had backgrounds in marketing and finance. We outsourced design and development for a cleaning website that allows customers to book appointments online, semi-automates scheduling, and emails cleaners their schedule. Until we hired a product manager a few months ago, there wasn’t a single full-time employee or founder who knew how to write HTML or open a .PSD. Using this simple platform from 3 years ago – the design hasn’t even been changed since then – we’ve bootstrapped our business into something to be proud of. Long story short – we hustled, cleaned and persevered.
Things were never easy. When our server crashed, we called our out-sourced developer in Canada and prayed he wasn’t at the movies with his girlfriend. When
| $mq-mobile-portrait : 320px !default | |
| $mq-mobile-landscape : 480px !default | |
| $mq-tablet-portrait : 768px !default | |
| $mq-tablet-landscape : 1024px !default | |
| $mq-desktop : 1382px !default | |
| // Both portrait and landscape | |
| =mobile-only | |
| @media (max-width : $mq-mobile-landscape) | |
| @content |