Dumbcourse – Old-browser friendly UI at /dumb (D-pad + small screens)

:information_source: Summary Dumbcourse adds a lightweight, old-browser friendly Discourse UI under /dumb, designed for D-pad navigation, small screens, and older Android WebViews where the standard Discourse UI can be too heavy.
:hammer_and_wrench: Repository Link https://github.com/TripleU613/dumbcourse
:open_book: Install Guide How to install plugins in Discourse


This project was made possible with the work of @ars18:

The original project uses a Cloudflare worker proxy to serve the forums, and the dumbcourse plugin fully integrates it into your discourse instance. Dumbcourse does not use a proxy but serves it directly.


Features

  • Serves a minimal SPA at /dumb on the same Discourse domain
  • ES5 / no build step; intentionally minimal DOM/JS/CSS for older browsers and WebViews
  • Uses same-origin Discourse JSON endpoints and standard Discourse session cookies
  • Topic lists: latest, new, top, unseen, hot, my, plus categories
  • Category view: /dumb/c/:slug/:id
  • Topic reading and posting (reply/quote/reactions)
  • Search and basic profile views
  • D-pad-friendly navigation with focusable UI elements

Configuration

  1. Install the plugin

    • Add the repo to containers/app.yml under hooks -> after_code, then rebuild the container.
  2. Enable it

    • Go to Admin → Plugins → Dumbcourse
    • Enable dumbcourse_enabled
  3. Choose defaults

    • Set the default theme and default landing view (see Settings below).
  4. Verify

    • Visit: https://YOUR_FORUM_DOMAIN/dumb
    • Anonymous users should land on /dumb/login
    • Logged-in users should see the configured default view

Screenshots

Old browser / standard Discourse UI

Dumbcourse UI

In a thread

Post actions / selection

Basic menu

Plugin settings


Status / Known limitations

This project is currently beta (initial implementation was done quickly), so expect rough edges. Contributions and code review are welcome.

Current known gaps / open questions:

  • Signup + CAPTCHA: account creation relies on Discourse’s standard signup flow, but CAPTCHA behavior may vary by site configuration.
  • Security review: the simplified UI should not bypass Discourse permissions, but it has not yet had a thorough security review. Please report any concerns or suspicious behavior.
  • Moderation/admin UX: moderation and admin tooling are minimal today; expanding this safely is on the roadmap.
  • Touch + D-pad interactions: touch input can conflict with focus navigation on some devices; improvements are planned.
  • Link sharing: /dumb provides an alternate UI, which raises questions about sharing canonical links between “dumb” and standard users. A consistent approach is still being refined.

Credits

Special thanks to @ars18 (GitHub: https://github.com/alltechdev) for key contributions and for helping kick off the original idea.


Settings

Name Description
dumbcourse_enabled Master on/off toggle for Dumbcourse.
dumbcourse_default_theme Default theme for /dumb (dark / light).
dumbcourse_default_view Default landing view (latest / new / top / unseen / hot / my / categories).
dumbcourse_sidebar_link_enabled Adds a sidebar link to /dumb.

12 likes

This sounds like an excellent idea!

I don’t like the surfacing of the name in the URLs though - can it be configurable, so for example /simple/ instead of /dumb/?

(In truth I’m not that happy with the name, but if it can be configured that helps. It’s a slur, and it’s rather idiomatic.)

3 likes

Wow, this looks really good! Looks like there’s a solution to the frustrations of some users due to old browsers being unsupported in Dropping iOS 15 & other old browsers in July 2025.

In the dumbphone world it’s accepted, but yeah will add a setting for that.

2 likes

I recently implemented admin/mod settings addition. Review Queue still needs some work.

Screenshots

2 likes

Forgot to mention, here is the companion Android APK.

Supports Android 6+ and Chrome WebView 44+.

Sample (our forums apk)

1 like

There ya go.

3 likes

Quick work… many thanks!

@TripleU There have been a number of requests here on Meta that have asked for an option to disable infinite scroll in favor of pagination. Does this plugin accomplish that?

Dumbcourse does not have that option (yet, if people really want it….).

1 like

Pushed!

Might I suggest to change the path (maybe even the plugin name) to something less insulting. Like simple, basic.

Because this isn’t a dumb feature, it’s actually quite smart to a have a low fidelity interface

1 like

You are a bit late :grin:

3 likes

This is great fun, and I love the name, because there is engineering history around it and don’t find it insulting at all - but the provision of the route setting is a fab addition.

Anyway, talking of dumb, I’ll raise you:

2 likes

Oh, that raises a question: what’s the treatment of images and embedded media? Are they linkified, or suppressed, or rendered,… ?

2 likes

Images, videos, audio, and iframes are all rendered inline in the post body with their URLs rewritten to the correct asset base.

1 like

In testing

Splendid! So this seems like a good way to make our forums available on old browsers (old computers, old phones, old tables) as noted in Nate’s post above.

Is there a way for a user to set a preference so they automatically enrol in this presentation? (Preferably called by the chosen name, not necessarily “dumb”.)

That’s fine, but if you think about it, not important. If one wanted to roll this out in an old people’s home, or an adult training centre, or any number of contexts where people are disadvantaged or not technically literate or just not young, or not native speakers of English, then having it labelled ‘dumb’ is going to be really bad optics. It’s not your being insulted or not insulted that matters, nor is it the site admin’s concern, it’s the would-be end-user.

I’m confused. They can just visit the chosen path url. Do you mean something else?

Ed, please don’t take me for a fool, of course I understand that. I’ll stop now because this is an irritating can of worms …

3 likes