 
     schema              :
 
-      authorNick        : String
       identifier        :
         type            : String
         set             : (value)-> value?.trim()

      {connection:{delegate}} = client
      {profile} = delegate

      if not data.name or not data.url
        return callback new KodingError 'Name and Url is required!'

      data.manifest           ?= {}

      # Overwrite the user information in manifest
      data.manifest.authorNick = profile.nickname
      data.manifest.author     = "#{profile.firstName} #{profile.lastName}"

      # Optionals
      data.manifest.version   ?= "1.0"
      data.identifier         ?= "com.koding.apps.#{data.name}"

      app           = new JApp
        url         : data.url
        name        : data.name
        type        : data.type or 'web-app'
        manifest    : data.manifest
        identifier  : data.identifier
        version     : data.manifest.version
        authorNick  : data.manifest.authorNick

      app.save (err)->
        return callback err  if err

        type            : String
        set             : (value)-> value?.trim()
        required        : yes
      urls              :
        script          :
          type          : String
          set           : (value)-> value?.trim()
          required      : yes
        style           :
          type          : String
          set           : (value)-> value?.trim()
      repourl           :
        type            : String
        set             : (value)-> value?.trim()
      counts            :
        followers       :
          type          : Number
