Dumbcourse – /dumb에서 구형 브라우저에 최적화된 UI (D-pad + 소형 화면)

:information_source: 요약 Dumbcourse는 표준 Discourse UI가 무거울 수 있는 D-pad 내비게이션, 작은 화면, 구형 Android WebView 환경을 위해 /dumb 경로 아래에 경량화되고 구형 브라우저에 친숙한 Discourse UI를 추가합니다.
:hammer_and_wrench: 레포지토리 링크 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: 설치 가이드 Discourse에 플러그인 설치 방법


이 프로젝트는 @ars18님의 작업 덕분에 가능해졌습니다:

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

원본 프로젝트는 Cloudflare 워커 프록시를 사용하여 포럼을 서빙하며, Dumbcourse 플러그인은 이를 Discourse 인스턴스에 완전히 통합합니다. Dumbcourse는 프록시를 사용하지 않고 직접 서빙합니다.


기능

  • 동일한 Discourse 도메인에서 /dumb 경로에 최소한의 SPA를 서빙합니다.
  • ES5 / 빌드 단계 없음; 구형 브라우저와 WebView를 위해 의도적으로 DOM/JS/CSS를 최소화했습니다.
  • 동일 출처의 Discourse JSON 엔드포인트와 표준 Discourse 세션 쿠키를 사용합니다.
  • 토픽 목록: latest, new, top, unseen, hot, my, 그리고 카테고리
  • 카테고리 뷰: /dumb/c/:slug/:id
  • 토픽 읽기 및 게시 (답글/인용/반응)
  • 검색 및 기본 프로필 뷰
  • 포커스 가능한 UI 요소를 갖춘 D-pad 친화적 내비게이션

설정

  1. 플러그인 설치

    • containers/app.ymlhooks -> after_code 아래에 레포지토리를 추가한 후 컨테이너를 다시 빌드합니다.
  2. 활성화

    • 관리자 → 플러그인 → Dumbcourse로 이동합니다.
    • **dumbcourse_enabled**를 활성화합니다.
  3. 기본값 선택

    • 기본 테마와 기본 랜딩 뷰를 설정합니다(아래 설정 참조).
  4. 확인

    • 방문: https://YOUR_FORUM_DOMAIN/dumb
    • 익명 사용자는 /dumb/login에 도달해야 합니다.
    • 로그인한 사용자는 설정된 기본 뷰를 확인해야 합니다.

스크린샷

구형 브라우저 / 표준 Discourse UI

Dumbcourse UI

스레드 내부

게시물 작업 / 선택

기본 메뉴

플러그인 설정


상태 / 알려진 한계

이 프로젝트는 현재 베타 버전입니다(초기 구현이 빠르게 이루어졌으므로), 따라서 거친 부분이 있을 수 있습니다. 기여 및 코드 리뷰를 환영합니다.

현재 알려진 결함 / 미해결 질문:

  • 가입 + CAPTCHA: 계정 생성은 Discourse의 표준 가입 플로우에 의존하지만, CAPTCHA 동작은 사이트 설정에 따라 달라질 수 있습니다.
  • 보안 검토: 단순화된 UI는 Discourse 권한을 우회하지 않아야 하지만, 아직 철저한 보안 검토를 거치지 않았습니다. 우려 사항이나 의심스러운 동작이 발견되면 보고해 주세요.
  • 모더레이션/관리자 UX: 현재 모더레이션 및 관리자 도구는 최소한이며, 이를 안전하게 확장하는 것은 로드맵에 포함되어 있습니다.
  • 터치 + D-pad 상호작용: 일부 기기에서 터치 입력이 포커스 내비게이션과 충돌할 수 있으며, 개선이 계획되어 있습니다.
  • 링크 공유: /dumb는 대체 UI를 제공하므로, “dumb” 사용자와 표준 사용자 간의 정정 링크(canonical links) 공유에 대한 질문이 제기됩니다. 일관된 접근 방식이 아직 정제되는 중입니다.

크레딧

주요 기여 및 초기 아이디어 착수에 도움을 주신 @ars18 (GitHub: https://github.com/alltechdev)님께 특별한 감사를 드립니다.


설정

이름 설명
dumbcourse_enabled Dumbcourse의 마스터 켜기/끄기 토글.
dumbcourse_default_theme /dumb의 기본 테마 (dark / light).
dumbcourse_default_view 기본 랜딩 뷰 (latest / new / top / unseen / hot / my / categories).
dumbcourse_sidebar_link_enabled /dumb에 사이드바 링크를 추가합니다.

18개의 좋아요

정말 훌륭한 아이디어네요!

다만, URL에 이름이 노출되는 부분은 마음에 들지 않아요. 예를 들어 /dumb/ 대신 /simple/처럼 설정할 수 있을까요?

(사실 그 이름 자체는 별로 마음에 들지 않지만, 설정할 수 있다면 도움이 될 것 같아요. 그 이름은 비속어에 가깝고, 상당히 관용적인 표현이거든요.)

3개의 좋아요

와, 정말 좋아 보이네요! Dropping iOS 15 & other old browsers in July 2025 에서 언급된 구형 브라우저 미지원으로 인한 일부 사용자의 불만에도 해결책이 될 것 같습니다.

당기폰에서는 허용되는 일이지만, 네, 해당 설정을 추가하겠습니다.

2개의 좋아요

최근 관리자/모드 설정 추가 기능을 구현했습니다. 검토 대기열(Review Queue)은 아직 일부 작업이 필요합니다.

스크린샷

4개의 좋아요

참고로, 여기 동반 안드로이드 APK를 첨부합니다.

Android 6+ 및 Chrome WebView 44+를 지원합니다.

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

샘플 (저희 포럼 APK)

3개의 좋아요

자, 여기 있습니다.

4개의 좋아요

빠르시네요… 감사합니다!

@TripleU 메타에서 무한 스크롤을 비활성화하고 대신 페이지네이션을 사용할 수 있는 옵션을 요청하는 요청이 여러 건 접수되었습니다. 이 플러그인이 해당 기능을 구현하나요?

1개의 좋아요

Dumbcourse에는 아직 그런 옵션이 없습니다(사람들이 정말로 원한다면….).

4개의 좋아요

푸시 완료!

2개의 좋아요

경로를 (심지어 플러그인 이름도) 덜 모욕적인 것으로 변경하는 건 어떨까요? simple이나 basic 같은 이름처럼요.

이건 어리석은 기능이 아니라, 실제로 저해상도 인터페이스를 제공하는 것은 꽤 현명한 선택입니다.

1개의 좋아요

조금 늦으셨네요 :grin:

4개의 좋아요

정말 재미있고, 이름도 좋아합니다. 이름 뒤에 공학 관련 역사가 있어서 전혀 모욕적으로 느껴지지 않거든요. 하지만 라우트 설정 제공 기능은 정말 멋진 추가입니다.

아무튼, '멍청하다’는 말로 이어가자면, 저도 하나 올려볼게요:

4개의 좋아요

오, 그러면 이런 질문이 생깁니다: 이미지와 임베디드 미디어는 어떻게 처리하나요? 링크화되나요, 아니면 숨겨지거나, 렌더링되거나,…?

3개의 좋아요

이미지, 동영상, 오디오 및 iframe은 모두 게시물 본문에 인라인으로 렌더링되며, URL은 올바른 자산 기반으로 재작성됩니다.

2개의 좋아요

테스트 중

1개의 좋아요

훌륭하군요! 그렇다면 Nate가 위에서 언급한 대로, 구형 브라우저(구형 컴퓨터, 구형 휴대폰, 구형 태블릿)에서 우리 포럼을 사용할 수 있게 만드는 좋은 방법인 것 같습니다.

사용자가 이 표시 방식을 자동으로 적용하도록 설정할 수 있는 방법이 있을까요? (가능하다면 "dumb"이라는 이름보다는 사용자가 선택한 이름으로 부르는 것이 좋겠습니다.)

그것은 괜찮지만, 생각해보면 크게 중요하지 않습니다. 만약 이 기능을 노인 요양 시설, 성인 교육 센터, 또는 사람들이 불리한 처지에 있거나 기술적으로 문해력이 없거나, 단순히 젊지 않거나, 영어 모국어가 아닌 수많은 맥락에서 배포하고 싶다면 'dumb’이라는 라벨을 붙이는 것은 정말로 좋지 않은 인상을 줄 것입니다. 중요한 것은 당신이 모욕을 느끼느냐 아니냐가 아니며, 사이트 관리자의 관심사도 아닙니다. 그것은 잠재적 최종 사용자에 관한 문제입니다.

2개의 좋아요

의아합니다. 그냥 선택된 경로 URL을 방문하면 되는데 다른 뜻인가요?

에드, 제발 나를 바보로 보지 마. 물론 나는 그걸 이해하고 있어. 이건 신경 쓰이는 골치 아픈 문제라… 이제 그만할게.

4개의 좋아요