Hofstadter Studios Documentation
The Declarative Programming and Rapid Development Platform
Hofstadter Studios is a flexible and extensible declarative programming and rapid development platform. Express your application through focused languages, via designs, describing the data shape, flow, and presentation. Studios will generate the majority of the implementation leaving you to focus on the concept and experience for your application or business.
Getting Started 🐢 Basics 🐢 Concepts 🐢 Videos 🐢 Downloads
In Hofstadter Studios, you describe your application. You can talk about users and their profiles, the kinds of things they can do, the relations they have with their resources and each other, the rules around who can do what given their roles. You will also talk about how data and information is visualized, how interfaces look and feel, to how the user flow and interactions work.
Hofstadter Studios will build you a live, real-time application that you can rapidly iterate on. Domain Specific Languages are used to drastically increase the word to powering technology ratio. In a few hundred lines you can create applications full of features and ready for users. Change your design, do a hof push and the application updates itself automatically on all the devices. When your ready to send the latest version just do a hof deploy and it does.
Behind the scenes Hofstadter Studios is creating and managing a code base and technology stack. Infrastructure, DevOps, databases, backend API servers, authentication, frontend web and mobile apps, all generated to let you focus on the important parts.
Your ability to configure and customize is what makes your app yours and is built into the core of Hofstadter Studios. From the look, layout, and feel, to the business logic and data sources, you have the ability to style your application and create that desired experience or process.
Enough of the high-level, let’s see some designs.
Designs express and idea in special languages, as a group referred to as Domain Specific Languages (DSL). For example, here is a design for a user:
user: profile: fields: - name: first_name type: string length: 64 - name: middle_name type: string length: 64 - name: last_name type: string length: 64 - name: title type: string length: 16 - name: suffix type: string length: 16 - name: age type: int validation: - type: >= value: 0 - name: language type: enum choices: - en_US - es_ES - name: picture type: image
“user” is the name of a DSL. All users have a profile, composed of a number of fields. Each field has a required name and a type, as well as extra details or configuration, depending on the type. Every DSL will have its own words, components, and options. One important commonality between the languages, designs, and sub-details is the use of “name”. “name” is used for significant pieces of your designs and files.
What you don’t see here are typical fields,
Hofstadter Studios has a number of fields
pre-included so that users can
manage thier account and credentials
and the platform can manage
authentication and permissions.
You can also configure OAuth and Payments.
Let’s look at the design for an “Item” such as in a todo application:
type: name: Item fields: - name: name type: string - name: description type: string - name: contentType type: string - name: content type: text - name: data type: json owners: - type: user relation: has-many relations: - name: categories type: type.modules.todo.ItemCategory relation: many-to-many - name: tags type: type.modules.todo.ItemTag relation: many-to-many auth: edit: ["admin", "owner"] view: ["public"] search: fields: - name - description - content relation-fields: - categories.value - tags.value
“type” is an important DSL and is central to data shape and flow. We see types can have have fields, like the user profile, as well as owners and relations to other types or data. You also specify the auth or permissions as well as advanced functionalities like searching, social, and privacy.
As you work with Hofstadter Studios and update your designs, just hof push to send the latest out to your live application server. Here’s what it’s like…
The following demo will show you what it is like working with Hofstadter Studios, by designing a blogging site.