Skip to main content

Frequently Asked Questions

Answers to most frequent questions from users and developers

What is Smileupps?

Smileupps is an app store for portable and cloud web apps. They are portable because they run inside every browser or native webview. They are cloud because they can deal with a central application and db server, your smileupps instance, to safely store any kind of data related to your business.

Smileupps mission is to provide a comprehensive easy way to use, build, publish and get paid for business apps running everywhere.

Why Smileupps?

Today, building a portable app which runs everywhere, is very challenging! You have to deal with so many different languages languages, operating systems and complicated toolchains. You may have heard them: Android Studio, Java, XDE, iOS, Objective C, Windows Phone, C#, Visual Basic, C++, and this is just the tip of the iceberg!

  • What if you could just use HTML, CSS and Javascript?

  • What if you could develop both client and server-side code with the same Javascript scripting language?

  • What if you could use a same opensource software as your database, web and application server at the same time?

Smileupps wants to ease app development and first-time access for young developers. We strongly think portable web apps and in-browser IDEs are a real step forward in this sense and definitely the way to go!

Why open-source?

Smileupps hosting is based only on opensource DBaaS solutions, for these main reasons:

  1. because we don't want to lock you in! We are firmly convinced developers should not be bound to an infrastructure provider. They should develop their couchapps regardless of Smileupps or whatever. After that, they can eventually choose our services to reach customers worldwide in a convenient and easy way.

  2. to support their growth. We support open-source with documentation and free hosting: developers just need a click, to install their own free server and they are ready to start!

  3. we can concentrate on our work. We aren't interested in developing the next new database server. They already exist and we want to make them accessible to everyone in a convenient and easy way.

Hosting FAQ

Which kind of hosting do I need?

It really depends on what you are searching for:

  • If you are searching a productivity app for your company, you may be interested in browsing our app store
  • If you are a developer with a great idea to sell worldwide, you may probably be interested in building an upp and benefit from our automated store services
  • If you are a developer in search for hosting services only, you may probably be interested in our hosting apps.

Where are servers located?

Smileupps servers are currently located in Arezzo, Italy, but we are going to expand worldwide soon to allow customers deploy their apps and data exactly wherever they need.

How much will I pay my upp?

Upps are provided for free for first 30 days. We call this period the free trial period. You should use this period to understand if the app suits your needs. After expiration, you will be asked to renew your plan by paying a monthly fee. This fee starts from 0.3€ per day for personal micro hosting subscriptions. You may renew and change your hosting plan fee by clicking the upgrade button within your instance cloud panel.

How is the upp monthly fee calculated?

The monthly fee is calculated as hosting fee + app fee.

  • Hosting fee depends on the hosting plan and class selected when renewing. The plan refers to your monthly available resources, such as cpu, disk and network needed to host and run your app in the cloud. Hosting class instead, refers to features provided to your app, like custom domains or custom ssl certificates.

  • Application fee is set by the upp publisher and can be free. It includes the usage fee and all the services detailed within its store page. Upp developers may choose to provide support or maintenance at their discretion.

How is resource usage billed?

Resource consumed from your data and apps are measured in equivalent hits. By upgrading your hosting plan, you raise the number of equivalent hits available to your app within the month. Here is the mapping table between hits and resources:

  • 1 GET,HEAD request counts as 1 equivalent hit

  • 1 POST,PUT,DELETE request counts as 5 equivalent hits

  • 1 GB of disk space used counts as 100,000 equivalent hits

What if my equivalent hits exhaust?

If you run out of equivalent hits, your instance will be pushed to stand-by mode and you will face two options:

  • upgrade your hosting plan, thus increasing your available monthly hits. In this case, your instance will come back online shortly after the upgrade.

  • or wait for the next month. The first day of the next month your equivalent hits counter will be automatically reset to zero and your instance will instantly come back online.

Developers FAQ

What is a portable web app?

A web app is an application built using Javascript, HTML and CSS languages only, thus it runs using a plain web browser only (e.g. Chrome™, Firefox™, Opera™, ...). A portable app is meant to run on any operating system or device, thus a web app is portable by definition, because almost every device comes with a web browser. Developers can then even deliver them as usual native apps, by using special native containers (WebView and UiWebView).

What is a couchapp?

A couchapp is a web app totally hosted inside CouchDB™ and using CouchDB™ features to run. Even if couchapp name derives from CouchDB™, this kind of application is nowadays supported from other backends too, usually forked from CouchDB™ and supporting its API. Technically a couchapp is made from a bunch of design documents stored in your database.

What is an upp?

Upp name derives from Smileupps, and is a way to automatically instantiate couchapps for customers in the cloud. An upp consists of:

  • a dedicated store page for your app, with details like description, pictures and price
  • a script, actually an ordered set of HTTP requests, automatically executed each time a new customer choose to install your app

Can I develop offline-first apps?

Couchapps are 100% compatible with PouchDB, the unique Javascript database that syncs. This makes them perfect for offline first applications able to work completely disconnected or under very unreliable network conditions.

Are couchapps compatible with third party libraries?

Being web apps, couchapps are compatible with any kind of Javascript and CSS library out there, both client and server side. On the client, these libraries may be served to your app from a CDN or downloaded together with your app code from the same database. On the server, you can embed these libraries in a design document and use them within a show or list function. As example you can use a javascript templating library to appropriately render SEO friendly web pages from templates and documents stored in your database.

What are design documents?

Also called ddocs, they are stored in your database and replicated as any other document, but instead of storing business data, they contain application logic and assets. In fact a couchapp is a set of design documents, conveniently arranged in one or more databases. DDocs enable features needed by modern apps, such as:

  • serving formatted contents from your documents as HTML, JSON, XML, RSS, text or the way you like
  • providing authentication features
  • giving read and write access selectively to your documents
  • defining exact routing for incoming HTTP requests

For more information, read the official design document documentation or browse our resources.

What if I need to provide server-side processing?

Simple background actions, in response to user interaction, such as e-mail notifications, sending sms, accepting payments, or interacting with a third party HTTP service, may be easily specified together with your couchapp source code. This is possible by activating triggerjob, a background general purpose daemon installed by default on every Smileupps instance, responsible for listening to documents changes and reacting as defined by your couchapp.

Can I schedule backups or other custom activities?

Yes, triggerjob allows you to activate jobs, such as replications, or other custom jobs defined in your couchapp by simply postponing the activation date of the job to execute.

Do I need node.js or any other module for my server-side code?

No, you don't strictly need anything else than CouchDB™. You may indeed take advantage of triggerjob features and define your background jobs behaviour and scheduling, directly within your couchapp source code. Scheduling them would then be as easy as updating a database document.

Is it safe to use only CouchDB™ as all-in-one web, app and db server?

If you use Smileupps as hosting provider you don't need to take any extra step. If you plan to use your own dedicated server instead, you need to put a proxy in front (e.g. haproxy), and filter unwanted requests by:

  • using proxy rules to disallow every single unwanted request to the root of your instance (much prone to errors)
  • or more simply allowing only requests with a known host header and taking advantage of CouchDB™ Vhost rewriting capability to conveniently handle all passing requests from a unique design document (safer and more manageable)