Build desktop and web apps visually

Create desktop apps for macOS, Windows and Linux, rich web apps for the browser, and command line tools. One visual IDE. One approachable BASIC-like language.

Your next app could run in a browser.

Build customer portals, internal tools and data dashboards with responsive forms, searchable lists and interactive charts. Design the page visually, write its events in Objo and run it in your browser.

Discover web apps
The Web page designer.
The Web page designer.

Why Objo Studio?

Desktop, Web and Command Line

Choose the right target for each application. Keep desktop tools, browser apps and command line utilities in one solution, sharing data models and business logic where their APIs overlap.

Visual Designer

Drag controls onto desktop windows or responsive web pages, then connect their events with Objo code. Arrange web layouts for Compact, Medium and Wide screens in the designer.

Familiar Language

The Objo language is a modern, statically typed language with BASIC-like syntax. Very easy to get started but powerful enough for professionals.

Powerful Debugger

Set breakpoints, step through your code line by line, inspect and watch variables.

Self-Contained Applications

Build desktop and command line apps, or publish a web app as a self-contained server executable. The destination computer needs no Objo Studio or separate .NET installation.

Optional AI Assistant

Objo Studio supports working with LLMs if that's your thing, with optional deep integration with all the proprietary and open LLMs right in the IDE.

Simple to Understand Code

Objo is designed to be readable and approachable. Everything is an object, methods chain naturally, and there's no boilerplate to wade through.

objo
# Create player.
player = GameCanvas1.CreateSpriteFromAsset("Player")
player.X = 400
player.Y = 300
player.CollisionGroup = "player"
player.CollidesWithGroup("enemies")

# Create enemies.
For i As Integer = 0 To 4
  Var enemy As Sprite = GameCanvas1.CreateSpriteFromAsset("Enemy")
  If Maths.RandomInt(0, 1) = 0 Then
    enemy.X = Maths.RandomInt(50, 150)
  Else
    enemy.X = Maths.RandomInt(600, 750)
  End If
  enemy.Y = Maths.RandomInt(50, 550)
  enemy.VelocityX = Maths.RandomInt(50, 150)
  enemy.VelocityY = Maths.RandomInt(50, 150)
  enemy.CollidesWithBoundary = True
  enemy.CollisionGroup = "enemies"
Next i