diff --git a/src/app.js b/src/app.js
new file mode 100644
index 0000000..cad2394
--- /dev/null
+++ b/src/app.js
@@ -0,0 +1,30 @@
+// Copyright 2015 The Vanadium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+module.exports = App;
+
+function App(name) {
+  if (typeof this !== App) {
+    return new App(name);
+  }
+
+  this.name = name;
+}
+
+// noSqlDatabase returns the noSqlDatabase with the given name. relativeName
+// must not contain slashes.
+App.prototype.noSqlDatabase = function(ctx, relativeName) {};
+
+// listDatabases returns of all database names.
+App.prototype.listDatabases = function(ctx) {};
+
+// create creates this app.  If perms is empty, we inherit (copy) the Service
+// perms.
+App.prototype.create = function(ctx, perms) {};
+
+// delete deletes this app.
+App.prototype.delete = function(ctx) {};
+
+App.prototype.getPermissions = function(ctx) {};
+App.prototype.setPermissions = function(ctx) {};
diff --git a/src/service.js b/src/service.js
new file mode 100644
index 0000000..308fa52
--- /dev/null
+++ b/src/service.js
@@ -0,0 +1,21 @@
+// Copyright 2015 The Vanadium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+module.exports = Service;
+
+function Service() {
+  if (typeof this !== Service) {
+    return new Service();
+  }
+}
+
+// app returns the app with the given name. relativeName should not contain
+// slashes.
+Service.prototype.app = function(ctx, relativeName) {};
+
+// listApps returns a list of all app names.
+Service.prototype.listApps = function(ctx) {};
+
+Service.prototype.getPermissions = function(ctx) {};
+Service.prototype.setPermissions = function(ctx) {};
