The Declarative Programming and Rapid Development Platform
Hofstadter Studios is a declarative programming and rapid development platform. You describe your idea as “designs”, the single-source of truth for your application, and your real-time application updates to reflect the changes. Hofstadter Studios will generate a full-stack implementation and handle the management so you can rapidly iterate on your ideas. Customize the client with pages, components, and styling. Specialize the logic with events, hooks, serverless functions. Integrate with proxies, sdks, pipelines, and third party systems.
Getting Started 🐢 Basics 🐢 Tutorials 🐢 Universe 🐢 Reference 🐢 Open Source
In Hofstadter Studios you describe your application. You design 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 then specify how data is visualized, interfaces look and feel, the user flows and much more, all while having control down to the pixel. An event and serverless system enables you to customize the logic and take extra actions.
Hofstadter Studios will build you a live, real-time application that you can rapidly iterate on. Just hof app push and your application is sent to Studios where the changes are understood and applied as neccessary throught the technology stack. Databases will be migrated, code will be updated, clients will be refreshed.
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.
Resources and Designs
Designs are the central concept in Hofstadter Studios with which you describe your application. Designs express your idea in special languages, commonly referred to as Domain Specific Languages (DSL). Studios has DSLs for apps, modules, and types. Apps group modules, modules group types, and all three can have pages and components.
Here is an eample design for an “Item” for 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 owned: name: author type: has-many relations: - name: labels type: type.modules.todo.Label relation: many-to-many auth: default: true pages: default: true components: default: true search: fields: - name - description - content relations: - labels.value
DSLs 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 app push and the application updates itself automatically on all the devices.
The following are the top-level specification for the app, module, type, and page/component DSLs. Check out the getting started with Designs to learn more.
app: name: my-app title: My Studios App config: ... modules: ... layouts: ... pages: ... components: ... forms: ... imports: ... files: ... translations: ... seeds: ...
module: name: notes types: ... pages: ... components: ... forms: ... files: ... translations: ... seeds: ...
type: name: note fields: ... relations: ... owned: ... auth: ... visibility: ... pages: ... components: ... forms: ... files: ... translations: ... seeds: ...
Page & Component Design
# can appear in app, module, or type app|module|type: name: ... # pages and components have the same sub-design or DSL pages|component: - name: page-view route: "/page/:id" style: ... # list of SCSS files content: ... # list of JSX files imports: ... # custom imports, pages only components: ... # custom components translations: ... # internationalization files # Inject the user and data into the page or component # the current user in the page data current-user: ... data: ...
Building with Studios
Building with Hofstadter Studios is a highly iterative process designed to help you go “From idea to application with ease.”
Getting Started will show you how to:
- Get an account, install the tool, and connect to Studios.
- Create an application, frame out modules and types, and design all the things.
- Push, deploy, and enjoy your application.