# Custom Platform

**URL:** https://meta.discourse.org/t/custom-platform/336090
**Category:** Development
**Created:** [November 14, 2024, 8:48am UTC](https://meta.discourse.org/t/custom-platform/336090 "2024-11-14T08:48:22Z")
**Posts on this page:** 17
**Page:** 1

<div class="post-metadata">

### Author: ![JstTan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jsttan/32/464389_2.png) [@JstTan](https://meta.discourse.org/u/JstTan)
#### Post date: [November 14, 2024, 8:48am UTC](https://meta.discourse.org/t/custom-platform/336090/1 "2024-11-14T08:48:22Z")

</div>

Hello Discourse Community!

I’m planning to build a platform on top of a self-hosted Discourse instance that will include various custom features like a search engine, documentary resources, wikis, and more. These features are developed using HTML, CSS, and JavaScript, primarily as static pages.

My goal is to integrate these custom pages directly into the Discourse forum so that they appear as native pages rather than posts, creating a seamless user experience where they feel like an integral part of the forum. I’d like these static pages to be accessible to forum users, with all JavaScript functionalities running as intended.

Could anyone advise if this approach is possible within Discourse, or if there are specific plugins, best practices, or configurations that I should look into? Any guidance on embedding and displaying custom HTML/JS pages without making them look like posts would be greatly appreciated!

Thank you in advance for any insights!

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [November 14, 2024, 8:53am UTC](https://meta.discourse.org/t/custom-platform/336090/2 "2024-11-14T08:53:41Z")

</div>

I don’t know (you can embed though) but out of cat killing curiosity: what do you mean about static page of a dynamic app?

---

<div class="post-metadata">

### Author: ![JstTan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jsttan/32/464389_2.png) [@JstTan](https://meta.discourse.org/u/JstTan)
#### Post date: [November 14, 2024, 8:55am UTC](https://meta.discourse.org/t/custom-platform/336090/3 "2024-11-14T08:55:46Z")

</div>

Well all of the features I plan to implement, like those mentioned above, is static codes, which means all of it is build through HTML, CSS and vanilla JS. I wonder if it is possible to make static page, and add the custom codes for the features mentioned onto my own Discourse instances.

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [November 14, 2024, 9:06am UTC](https://meta.discourse.org/t/custom-platform/336090/4 "2024-11-14T09:06:49Z")

</div>

Sorry to continue this, but Discourse isn’t static. It is dynamic. So are most of JS-solutions too, or PHP-based.

So, is this now question of terms? And you just want embed Discourse forum per se into a web page among everything else? You can show topics, but you will miss almost everything else functionalities of Discourse AFAIK.

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [November 14, 2024, 9:08am UTC](https://meta.discourse.org/t/custom-platform/336090/5 "2024-11-14T09:08:26Z")

</div>

@JstTan You may want to take a look at:

> [@Landing Pages Plugin small\_airplane](https://meta.discourse.org/t/landing-pages-plugin/180967):
>
> The Landing Pages Plugin lets you make standalone landing pages for your Discourse instance. You can display topics, users and other content from your forum. You can restrict pages to groups, apply Discourse themes, set custom paths, and manage pages in a dedicated git repository. [[Screen Shot 2021-02-23 at 6.11.10 PM]](https://thepavilion.io/welcome)desktop_computer[Get the code](https://github.com/paviliondev/discourse-landing-pages)page_facing_up [Read the documentation](https://coop.pavilion.tech/docs?category=130)raising_hand_woman [Request a feature](https://coop.pavilion.tech/c/support/discourse-landing-pages/131)bug [Report a bug](https://coop.pavilion.tech/c/support/discourse-landing-pages/131) Not sure how to install a plugin? [Follow t…](https://meta.discourse.org/t/install-plugins-in-discourse/19157)

---

<div class="post-metadata">

### Author: ![JstTan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jsttan/32/464389_2.png) [@JstTan](https://meta.discourse.org/u/JstTan)
#### Post date: [November 14, 2024, 9:26am UTC](https://meta.discourse.org/t/custom-platform/336090/6 "2024-11-14T09:26:00Z")

</div>

No, the code that I plan to implement, like the page I want to add into my Discourse forum is static page, so there wouldn’t be any server-side rendering and etc.

No, I want to add the web page, onto my Discourse forum instance. Opposite of what you saying actually.

---

<div class="post-metadata">

### Author: ![JstTan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jsttan/32/464389_2.png) [@JstTan](https://meta.discourse.org/u/JstTan)
#### Post date: [November 14, 2024, 9:32am UTC](https://meta.discourse.org/t/custom-platform/336090/7 "2024-11-14T09:32:25Z")

</div>

This is quite cool, but I actually thinking of another thing, like adding and creating static page inside Discourse. The page would also needed to add custom HTML, CSS and JavaScript.

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [November 14, 2024, 9:55am UTC](https://meta.discourse.org/t/custom-platform/336090/8 "2024-11-14T09:55:03Z")

</div>

A similar question was aked eecently.  
Here is an answer given:

> [@How to link a static html page](https://meta.discourse.org/t/how-to-link-a-static-html-page/334489/5):
>
> I would look at using published pages.

---

<div class="post-metadata">

### Author: ![JstTan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jsttan/32/464389_2.png) [@JstTan](https://meta.discourse.org/u/JstTan)
#### Post date: [November 14, 2024, 10:07am UTC](https://meta.discourse.org/t/custom-platform/336090/9 "2024-11-14T10:07:51Z")

</div>

Well, I has noticed that my question might be very confusing, so I has edited the question with the message re-generated with ChatGPT. This is the edited question:

Hello Discourse Community!

I’m planning to build a platform on top of a self-hosted Discourse instance that will include various custom features like a search engine, documentary resources, wikis, and more. These features are developed using HTML, CSS, and JavaScript, primarily as static pages.

My goal is to integrate these custom pages directly into the Discourse forum so that they appear as native pages rather than posts, creating a seamless user experience where they feel like an integral part of the forum. I’d like these static pages to be accessible to forum users, with all JavaScript functionalities running as intended.

Could anyone advise if this approach is possible within Discourse, or if there are specific plugins, best practices, or configurations that I should look into? Any guidance on embedding and displaying custom HTML/JS pages without making them look like posts would be greatly appreciated!

Thank you in advance for any insights!

---

<div class="post-metadata">

### Author: ![JstTan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jsttan/32/464389_2.png) [@JstTan](https://meta.discourse.org/u/JstTan)
#### Post date: [November 14, 2024, 10:10am UTC](https://meta.discourse.org/t/custom-platform/336090/10 "2024-11-14T10:10:06Z")

</div>

Would published page be suitable for my aim through?

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [November 14, 2024, 2:29pm UTC](https://meta.discourse.org/t/custom-platform/336090/11 "2024-11-14T14:29:04Z")

</div>

> [@JstTan](#):
>
> I’m planning to build a platform on top of a self-hosted Discourse instance that will include various custom features like a search engine, documentary resources, wikis, and more.

Those all sound like things that Discourse has already.

> [@JstTan](#):
>
> My goal is to integrate these custom pages directly into the Discourse forum so that they appear as native pages rather than posts, creating a seamless user experience where they feel like an integral part of the forum.

The easiest way to do that is to just host them somewhere else and add links to them with a theme component and have that site themed to look the same as your Discourse site. People don’t notice URLs, so if you keep the navigation on the other sites such that people can get back to Discourse, then it Just Works and nothing fancy is required.

> [@JstTan](#):
>
> I’d like these static pages to be accessible to forum users, with all JavaScript functionalities running as intended.

I"m not quite sure what that means, but if you really want to add whatever your custom features are to Discourse then you’ll need to create them as plugins or theme compononents.

> [@JstTan](#):
>
> Would published page be suitable for my aim through?

It’s not clear what your aim is.

> [@JstTan](#):
>
> if there are specific plugins, best practices, or configurations that I should look into?

- [Discourse Doc Categories](https://meta.discourse.org/t/discourse-doc-categories/322376)
- [Configuring wiki settings](https://meta.discourse.org/t/configuring-wiki-settings/30802)
- [Discourse Algolia Search](https://meta.discourse.org/t/discourse-algolia-search/73517), [Search Banner](https://meta.discourse.org/t/search-banner/122939), [Baidu Search](https://meta.discourse.org/t/baidu-search/170283)

---

<div class="post-metadata">

### Author: ![denvergeeks](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/denvergeeks/32/327671_2.png) [@denvergeeks](https://meta.discourse.org/u/denvergeeks)
#### Post date: [November 14, 2024, 2:44pm UTC](https://meta.discourse.org/t/custom-platform/336090/12 "2024-11-14T14:44:46Z")

</div>

> [@JstTan](#):
>
> I’d like these static pages to be accessible to forum users, with all JavaScript functionalities running as intended

JavaScript from where?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [November 14, 2024, 3:10pm UTC](https://meta.discourse.org/t/custom-platform/336090/13 "2024-11-14T15:10:58Z")

</div>

that’s exactly what it does if you use the Home Pages extension of Landing Pages plugin.

see:

> **[The Home Pages Add-on - integrate static content from Landing Pages and add...](https://coop.pavilion.tech/t/the-home-pages-add-on-integrate-static-content-from-landing-pages-and-add-dynamic-pages-too/3554?u=merefield)**
>
> What are “Dynamic” and “Simple Pages” There are special pages facilitated by the Pavilion Landing Pages plugin and the new Home Pages Theme Component. The new Home Pages Theme Component is required to blend the content of the Landing Pages into...

---

<div class="post-metadata">

### Author: ![JstTan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jsttan/32/464389_2.png) [@JstTan](https://meta.discourse.org/u/JstTan)
#### Post date: [November 17, 2024, 1:46pm UTC](https://meta.discourse.org/t/custom-platform/336090/14 "2024-11-17T13:46:37Z")

</div>

Hi,

Sorry for the late response. The features I listed is a few examples of features that I want to implement, there are around 20 of them. All of them are written with vanilla JS, HTML and CSS, without needing any server-side rendering.

I prefer to integrate it directly into Discourse, such as creating a page within Discourse, and edit the page to add all of the custom codes into it, and deploy it together with Discourse. It would be easier to maintain for me, as everything is in a single place, while my users could access the content through the Discourse forum directly without the need of leaving it. Is it possible to do this through Discourse? If possible, how?

I want to add custom features into the Discourse forum that I would host. The custom features is build directly through HTML, CSS and vanilla JS. I wonder if it is possible to do it directly, without the need of creating plugins through.

---

<div class="post-metadata">

### Author: ![JstTan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jsttan/32/464389_2.png) [@JstTan](https://meta.discourse.org/u/JstTan)
#### Post date: [November 17, 2024, 1:48pm UTC](https://meta.discourse.org/t/custom-platform/336090/15 "2024-11-17T13:48:27Z")

</div>

I want to implement the features code (JavaScript, HTML, CSS) directly into a single page source code, with each features having its own page.

---

<div class="post-metadata">

### Author: ![denvergeeks](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/denvergeeks/32/327671_2.png) [@denvergeeks](https://meta.discourse.org/u/denvergeeks)
#### Post date: [November 19, 2024, 3:40am UTC](https://meta.discourse.org/t/custom-platform/336090/16 "2024-11-19T03:40:00Z")

</div>

I think the Landing Pages Plugin linked above is the closest method to what I think you are describing that is already built into Discourse.

---

<div class="post-metadata">

### Author: ![denvergeeks](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/denvergeeks/32/327671_2.png) [@denvergeeks](https://meta.discourse.org/u/denvergeeks)
#### Post date: [November 25, 2024, 6:23pm UTC](https://meta.discourse.org/t/custom-platform/336090/17 "2024-11-25T18:23:46Z")

</div>

Another approach I use for what (I think?) you are describing here is to use a Ghost Blog/CMS for creating and hosting individual pages or posts where I want to display custom pages. Ghost is uniquely well suited for this purpose because of its flexibility for including and inserting all three (JS, CSS, and HTML) types of code on a per-page basis, and/or section/tag-specific and/or on a sitewide basis through “header code injections”, “footer code injections” and inline code/scripts inclusions right in the page/post editor.

Then you have multiple options in Discourse for how you want to embed or otherwise seamlessly include those external pages in your Discourse sites. You can then use RSS, embedded comments, Iframes, linked pages, or other methods.

I find this combination/pairing of Discourse and Ghost can provide an ideal platform for this particular use case where you need the flexibility of “on-the-fly” coding and arbitrary JavaScript injections.

Once I understood (both) the very opposite and very complementary natural strengths and limitations of each of these platforms (Ghost and Discourse) and how they can be combined and integrated, I have not found a better solution.

This way you can get the crazy-robust full content organization and community platform features of Discourse, along with the simplicity of Ghost’s on-the-fly approach to inline code editing and flexibility of including JS, CSS and HTML (and even Markdown) on individual pages.

A true bonus is that both platforms, both being open source and GitHub-based, have similarly robust, active, friendly and supportive communities where you can participate and get support and learn quickly and endlessly.
