Develop Apps

⚠ Work in progress: This page references tools and APIs that are works in progress. Some of them might not work or exist yet. We’re working on getting everything in place. Please let us know if you run into trouble or if you have feedback.

An Alloverse app is a server-side app that you run on your own server, similarly to how you would host a web app on your own server. The difference is, when a user goes to your app on the web, it loads into that user’s web browser on their computer; but when a user goes to your alloapp in an Alloverse Place, the app loads into the Place for all users in that Place to use, and your code gets collaboration and VR super-powers for free.

This tutorial will take you through creating an Alloverse app using the Lua programming language, since that is the language we’ve developed the most support for so far.

You can build apps on Mac, Linux or Windows; but for the latter, you’ll need a Unix shell, e g mingw, msys2 or WSL.

In contrast to a web framework like Rails or Django, Alloverse doesn’t install any software onto your system; instead, a project is completely self-contained within its project folder, and contains everything it needs to run.

Creating your project

First, create a project folder, and initialize an alloapp environment into it, and make sure it works:

$ mkdir allo-todo
$ cd allo-todo
$ /bin/bash -c "$(curl -fsSL"
$ ./allo/assist help

(This is also a good time to git init and git commit -a, so the next commit only contains your own changes.)

The curl’d script will have created this project structure for you:

  • lua contains the Lua source code for your app
    • lua/main.lua contains your app! It barely does anything yet. But you can add more code to this file to keep going, and add more files into lua to modularize your code.
  • allo contains the Alloverse app framework. You should not edit anything in here, as an upgrade of the framework will overwrite your changes.
    • allo/assist is a script that helps you with tasks such as starting a server, installing dependencies, etc…
    • allo/libs contains compiled C dependencies as dynamic libraries and executables. These are .gitignored to save space; if you check out your code on another computer, you can assist bootstrap to install them again.
    • allo/boot.lua sets up the runtime environment for your app.

Trying your app out

That’s it! You should now be able to start your project and see it appear in an Alloplace. If you don’t have one already, you can get or rent a Place at, boot one on your own, or just use our playground alloplace://

$ ./allo/assist run alloplace://

If it all checks out, you should be able to jump into that place on your VR headset and press the button it has created:

[TODO: Image of app inside nevyn’s place]

Making it pop

Let’s open up main.lua and have a look at the code, and start extending it to make a to-do list app.


Deploying your app