---
title: "Custom web application development | Miha Plohl"
language: "en"
canonical: "https://manitu.si/web-application-development/"
lmml_version: 2
---

<a id="main"></a>

[Application development](<https://manitu.si/applications/>)

# Custom web application development

Portals, SaaS products and internal tools that run in a browser.

## What we can build

A customer portal for documents and requests, a SaaS product with subscriptions, or an internal tool to replace manual work across spreadsheets.

## How I plan a web application

We start with the users, their roles and their tasks. Then we define the data model, sign-in, integrations, and the scope of the first usable release. I work with Ruby on Rails on the backend.

## Production experience

As lead developer I built Jetpack Workflow from the start to thousands of daily users. I also develop eternalfriend.io, my platform for artists and makers.

## Related services

### [Mobile app development](<https://manitu.si/mobile-app-development/>)

Apps for phones, connected to your data and systems.

### [Custom website design and development](<https://manitu.si/websites/>)

Business websites and redesigns.

<a id="contact"></a>

Direct contact

## What application do you need?

Describe the users, the problem and the main features. If an application already exists, include a link and explain what you want to change. Your preferred timing and approximate budget are useful too.

Miha Plohl · Slovenia
[info [at] manitu [dot] si](<https://manitu.si/web-application-development/#contact>)

[Contact form](<https://manitu.si/web-application-development/#contact>)

LMML v2 form contract (configuration, not a submission):

```json
{
"version": 2,
"source": "https://manitu.si/web-application-development/#contact",
"attributes": {},
"fields": [
{
"tag": "input",
"type": "text",
"name": "kich_ref",
"autocomplete": "off",
"label": "",
"hidden": true,
"tabindex": "-1"
},
{
"tag": "input",
"name": "sender_name",
"id": "sender-name",
"autocomplete": "name",
"required": true,
"label": "Your name"
},
{
"tag": "input",
"type": "email",
"name": "sender_email",
"id": "sender-email",
"autocomplete": "email",
"required": true,
"label": "Email address"
},
{
"tag": "textarea",
"name": "message",
"id": "message",
"rows": "6",
"required": true,
"label": "Your message"
},
{
"tag": "button",
"type": "submit",
"label": "Send message"
}
],
"integration": {
"kind": "eternalfriend-contact",
"form_attribute": "data-eternal-contact",
"endpoint": "https://eternalfriend.io/contact-forms/l2iChenfOylClJ1cdRd02En6S54e0Jtu",
"script": "https://eternalfriend.io/contact-forms/embed.js",
"status_attribute": "data-contact-status",
"instructions": "Use the supplied form attribute and embed script. The script owns submission and status feedback; do not infer a native action or invent a request protocol."
}
}
```

[Human-readable version](<https://manitu.si/web-application-development/>)
