Decent Portal App Requirements

App Requirements for Decent Portal

Apps that are hosted from the Decent Portal must meet the following criteria:

  • Doesn’t require service calls. Static content (e.g., map tiles, public data) is fine.
  • No promotion of activities illegal in the US or EU.
  • Displays Decent Bar at top of app. This allows the user some basic navigation and consistency within the Decent Portal. More info on the Decent Bar below.
  • Public open source - We need access to your source code, and to some extent our users do as well. Having the source code visible and buildable by anyone is part of safeguarding Decent Portal users. Deployments to our portal must be made from a CI environment built directly from the repository. The easiest way to achieve this is to host a public repo on Github and reuse our deployment action scripts with secret variables we provide you.
  • Persistent Storage accessed via subdomain. To avoid data tampering from other apps, any persistent storage (IndexedDb, LocalStorage, etc) you use must be via a subdomain we assign to you on the portal. If you use our library, you won't have to think about it very hard. If you don't use persistent storage in your app, then this requirement is moot.
  • No harm to users—this is a grey area, but we won’t accept apps that could cause real-world harm (e.g., medical advice apps).
  • Safe for minors—apps should have an "E for Everyone" sensibility since we don’t yet have age verification.

Your app must follow these requirements to launch on our portal. But you’re free to release a different version elsewhere that doesn’t necessarily follow them.

The Decent Bar

The Decent Bar is a React component that displays at the top of apps hosted on the Decent Portal.

It's the most significant intrusion we make into your lovely app. If your app isn't destined for our portal, you can remove the Decent Bar from your create-decent-app-generated code by just deleting a single line. You can also add conditional logic to only render the Decent Bar when your app is hosted from the Decent Portal.

Delete this line to "un-portal" your app.

What does the Decent Bar do? About what you'd expect:

  • Navigates back to a decentapps.net landing page.
  • Provides some information about the app in a consistent way.

In the future, we would like to add more functionality to the Decent Bar that isn't currently there like:

  • Cross-app user settings such as preferred LLM models, language, timezone.
  • UI related to cross-device synchronization, backup, and authentication portal capabilities.

Whatever changes we make to the Decent Bar, we want it to always be a simple component you can optionally include within your app. We don't want to build a framework.

Working In an Alternative Tech Stack

We picked React/TypeScript/Vite as the default tech stack for decent apps. We don't think this tech stack is necessarily the very best way to make a web app. It's just useful to rally around some popular choices when building a community. You can depart from these choices. In that case, we'll be less able to provide you help, but maybe you don't need it.

If you choose to use a front end framework besides React, (e.g. SvelteKit) we still need to get the Decent Bar showing in your app, and that might mean we work together to create a port in your target framework.

A web framework/language that requires server-side execution of code such as PHP will be incompatible with the Decent architecture. No judgment from us - it just won't fit what we're trying to deliver.