How far can we push Discourse in customization?

I’m curious to know how far we can customize Discourse, not only the UI, but moving things around, adding new features, etc, without breaking any of those when Discourse updates (or at least, not as much)?

I love all about Discourse, but there are a few things that I know I will eventually want to implement/change. I would like to have my own mobile app, instead of relying on Discourse’s. Something more custom and dedicated to my community.

I also don’t like that old mobile phones see the ugly Times New Roman text and a very stripped version of Discourse. I understand that things move forward, but I wonder if we needed to really go back to that ugly look to show that something is not supported anymore? And breaking access to maybe features that are probably no longer there, crucial to a community?

I also want to customize other things that are not just UI, implement new features, moving things around, etc. Basically, using the database and most of the “skeleton” of Discourse, and make it as close as possible to my own style, rather than feeling that “it’s just another Discourse forum, with different colors”.

I would guess that a lot can be customized via components, plugins, etc, but I wonder what the limits are? Especially when it comes to things breaking when Discourse updates?

This is exactly what i’m doing right now and coming from a Wordpress background for 15years this is like going back in time. However i’m starting to learn some things with help of the dreaded chatgpt and finding it aint that hard if you understand github and can edit files and use css etc

Yes, I work with Git/Github and I have a “basic” understanding of how things work (been learning more lately as I’m building other things on the side). I would guess that a lot can be done, but there’s always that challenge: what we build against Discourse version XYZ today, can break tomorrow when it updates, which is a bummer, especially if you are not aware of what broke…

So, customizing as little as possible feels more secure, but not as “branded”. It’s a matter of deciding which one is more valuable, I guess.

Are you using ChatGPT or Codex? I’ve been using Claude Code CLI in Github Codespaces and it’s a breeze! And because I keep everything I want Claude to do, how to behave, etc, in the CLAUDE.md file, it very rarely hallucinates, or at least, not as hard. That file keeps growing as I find new things I want Claude to do/not do.

That should be a single line of CSS in a theme to change.

Quite a lot as long as you use the existing extension hooks.

Have you seen the sites at Discourse customers | Discourse - Civilized Discussion and https://discover.discourse.com/, like Epic Developer Community Forums and https://community.robotime.com/ ?

I’ll be honest i got rid of claude as it wouldn’t do images and play nicely with OPEN Router and i had loads of subscriptions so cancelled all apart from GPT

I just mentioned that as part of the overall change from a platform that just worked, to suddenly not working anymore, or at least not quite like it used to. I started avoiding going to forums using Discourse because of that. I know I need to upgrade my phone eventually, but this one still works so…

This one look quite nice: https://forums.unrealengine.com/
Saved to my notes for future reference. Thanks!
There are some others that look interesting, but I always feel like I know it’s Discourse. I know I’m overthinking instead of building, but I was just wondering how far we can actually customize it? As I said, I believe a lot can be done, especially when it comes to the UI. Wonder if the features will be ok when Discourse updates? I have to do some testing.

Self fulfilling prophecy right here :slight_smile:

I almost never need images, so that was never an issue for me. And the very few times I needed, I asked ChatGPT. 50% of the time, depending on what I ask, I never get something that’s even remotely close to what I have in mind anyway, so I end up doing it myself in Photoshop.

But Claude Code has been a great help for me. Super fast.

If ChatGPT works for what you do, then that’s the right tool for sure. As long as it works, that’s what matters.

Not that I think Discourse looks bad, I just want more of my own style in it, even when it comes to how it’s structured, how some features are implemented and shown.

Again, maybe I’m overthinking, but I definitely need to do some testing and see how it goes.

I think its stuck in the past with a lot of the themes etc, I had a rant about this actually a while back

The other issue is forums will look the same as thats what they are - a list of titles. Look at facebook, reddit and x. All there topic cards look similar to a degree.

I’m not an expert but from my point of view Discourse is highly customizable. Not only that but the developer seem to create new and easier ways of customizing it constantly. Discourse also seems to be careful to provide warning when things will eventually be change that could effect things people have done to customize it.

The possibilities are there to create something much more then "just another Discourse forum, with different colors” and I am actually amazed at how much can be changed only using theme components and plugins provided by the official development team. And as the support staff will tell you, anything in the interface is available through the API meaning if you want to “us[e] the database and most of the “skeleton” of Discourse” there is nothing stopping you

With all that said… I like your ideas mentioned in the other thread about building community and sharing and giving people a place to share, That is the basis of what I am trying to do. You also mentioned you are a musician, a musician that perhaps enjoys software development. Once you build a completely bespoke web site, you will be responsible for maintaining it and things (Discourse related and otherwise) will break and you will have to take your own time or pay someone to fix it.

Start some new topics. Use only one single idea in each topic. Tell the forum what you want and ask for suggestions about how to achieve your idea. Breaking it down to individual features will help people brainstorm solutions but it will also give you a more structured approach and help you define your goal more clearly.

Check out ask.discourse.org

it is AI built for Discourse specifically

and… don’t be insulted, take this on advice as to what your own time is worth, consider hiring a professional developer. There are several who hang out in this forum and the marketplace is a category specifically provided for such inquiries where you can provide your idea and developers can bid on performing the work

Yes, I always say that everything can be done, one way or another, when it comes to anything digital. So I guess I need to do some research on this and go one step at a time. I guess the next step is to bring my Discourse back. I had it installed at one point, but then decided to take it down until I was ready to really focus on it.

Yep, since 2001 or so. But more recently, especially with the help of Claude Code, I’ve been able to create helpful tools for myself and eventually put some out there for others as well.
Not trying to be a developer or spend too much on it, but definitely something I enjoy. Being a creative all the time can be very taxing. Having something more binary like software, is very rewarding.

Not insulted at all. Any feedback it valuable. And I agree that one of the things I’ve been analyzing more and more often how much of my time is valuable to not spend it doing certain things and hire someone else, and what I actually enjoy doing, regardless of the time and effort. That’s why developing new tools has been so rewarding for me. It’s actually time I enjoy seeing things becoming a reality, so it’s never wasted time.

Yes, the internet has become very “generic”. I think most of it is because function is being prioritized instead of style. Not that I see an issue there, but having something unique is also important.

And I agree with your other topic. There’s a lot of space to grow with Discourse. One thing I love about Discourse is that it actually feels like a growing platform, with the team interacting here, sharing the roadmap with us, etc. It’s not like a sterile platform where no one knows what’s happening. And that is something I value a lot here.

100% its one of the better back end platforms ive ever used.

There are very few limits. The only major limitation is that templates cannot be overridden and you need to add new things to existing views using Plugin Outlets. That said, doing that in combination with some CSS usually gets the job done.

You can create new routes and have complete control over how those are laid out.

The back end is more flexible.

So, use the official APIs for as much as possible and rework will be more limited but you will never completely eliminate maintenance work.

It is not reasonable to expect no maintenance … just look at my GitHub account and some of my popular extensions and you will see plenty of "COMPATIBILITY: " commits :slight_smile:

It’s good practice to maintain a staging server where you can test upgrades and see if any of your customisations break - the more custom your site, the greater will be a need for some kind of staging instance - although use of a development instance can help.

It’s hard to say how “safe” a customization is without knowing the specifics… but generally the more you customize the more maintenance you’ll need to do.

If you add something like a custom component to a plugin outlet or replace a Discourse component entirely… generally these should keep working because you’re slotting in custom code to an extension point (and we try to preserve these points because a lot of people use them).

In CSS you should make use of existing --variables to change things where possible because sometimes we have to change content structure, but even if we do that we can reuse the same variables.

So this is a safer path:

.d-header {
   --title-color--header: red;
}

This is less safe:

.d-header {
    .extra-info-wrapper .topic-link {
      color: red;
    }
}

We’ve been pushing the platform away from old customization methods that were more prone to breaking, like template overrides and modifyClass usage. We’re also working on more stable APIs… but everything will still need a little maintenance now and then.

Thanks for the feedback.
I think I need to really think about that staging server. That’s a good approach for sure.

Right now I think that the first step is to install Discourse again, create content, and when the time comes, start with the easy stuff that doesn’t require big changes and can be done with Components. See how far I can go with it. Then, start thinking about the staging server.

Thanks!

That tip about the variables is valuable indeed.
I guess I just need to sit down one day, make a list of all the things I want to change/implement, and go one thing at a time, starting with the ones that can be modified via Components and see how far I can go.

Indeed,

I am currently conducting systematic stabilization work on Discourse,

and I have used some theme components and written some of my own theme components for customization, to meet the cultural habits of my local users.