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

AI-generated summary

TripleU introduces Dumbcourse, a lightweight, old-browser-friendly Discourse plugin providing a minimal SPA at /dumb. Designed for D-pad navigation, small screens, and older Android WebViews, it uses ES5 with no build step and integrates directly with Discourse JSON endpoints. Key features include topic lists, category views, posting, search, and real-time updates. The project includes a companion Android APK and credits @ars18 for initial contributions.

Discussion highlights include:

  • Naming and Configuration: Ed_S and elmuerte suggest renaming the path and plugin to avoid the term “dumb,” citing potential offensiveness to non-technical users. TripleU agrees to add a configurable path setting, which is implemented in post 7. merefield defends the name based on engineering history.
  • Features and UX: Ed_S asks about media handling; ars18 confirms inline rendering. Ed_S requests automatic redirection for users preferring the old UI, which ars18 considers. agemo asks about post pagination, and ばこん asks about custom CSS.
  • Updates: ars18 details updates including real-time topic refreshing, unread indicators, upload fixes, and bug fixes. TripleU adds LanguageTool integration for text correction.
  • Repository Structure: merefield questions why Dumbcourse was merged into the larger JTech Tools plugin. TripleU explains that JTech merged nine distinct modules (including Dumbcourse, Mini-mod, Disteleplus, etc.) into one bundle for easier management, though each has independent toggles. The standalone Dumbcourse repo remains available. The thread is closed by staff in post 39.
: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 GitHub - JTech-Forums/JtechTools: Jtech — combined Discourse plugin bundle: dislike, another-smtp, mini-mod, mod-categories, dumbcourse. One plugin.rb, six admin tabs, no namespace collisions. · GitHub
:open_book: Install Guide How to install plugins in Discourse


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

https://github.com/alltechdev/jtech-web

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.

18 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

4 Likes

Forgot to mention, here is the companion Android APK.

Supports Android 6+ and Chrome WebView 44+.

https://github.com/alltechdev/dumbcourse-apk

Sample (our forums apk)

3 Likes

There ya go.

4 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?

1 Like

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

4 Likes

Pushed!

2 Likes

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:

4 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:

4 Likes

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

3 Likes

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

2 Likes

In testing

1 Like

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.

2 Likes

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 …

4 Likes