Creating my own custom forum software

Ghost

Seasoned Veteran
Joined
Jun 25, 2009
Messages
3,585
Reaction score
348
FP$
3,264
Hello all! I am creating my own forum software that I will be using for my own site. Here's the break down of how it will work! It's similar to reddit, but brings in the old style of forums too 🙂

Users can create their own community & add forums/sections to their community page. There will be a long list of available sections they can add to their community. A new community's sections will always be empty. All new posts in those sections will be displayed in that specific community, but also be submitted to the default Forumojo community that all users are a part of (basically the homepage is the default Forumojo community). A toggle will allow users to see all the sections/categories & go into them to have a more filtered display of content. This feature allows new communities to gain exposure by being looped into the main website, but will be highly competitive once a lot of communities exist.

Community founders will also be able to create custom sections that are not available in the main/default Forumojo community. These sections will not be looped into the main Forumojo community / home page (example custom sections that are not looped in: community announcements, introductions, suggestions).
The default sections that can be linked up are things like: General, Funny, Gaming, etc (there will be a long long list of available sections). Once a community has achieved a certain trust level, they will be able to give these default sections custom titles & descriptions on their community page. By default a linked up section will use the default Forumojo section name & description, but can be displayed in the specific community in any order.

As time goes on I aim to build a Forumojo software that allows users to:
-> use Forumojo as a single-community software on their own website, possibly costing money
-> automatically share their content with the main Forumojo community sections, possibly costing money

General ideas...
-> Bootstrap, jQuery & MySQL or MariaDB
-> Considering using Node.js for server, otherwise standard Linux / apache install
-> If not Node.js, will be using PHP integrated with AJAX for a modern design
-> There will be a pretty nifty trust system built in that can decide whether a community is violating main section rules (for ex: their users are submitting gaming memes to a 'Cooking' section)
-> This will go off of reports/flags & communities will have a set amount of flags/reports allowed based on number of users, activity, history of violations, etc
-> If a community founder or moderator takes action against a user breaking the rules of their community or a default Forumojo section, it will count in their favor for their community trust
-> Communities will lose their privilege to be connected to the main homepage if they fall below a certain trust level
-> Users can share a video post, image post, or text post
-> Users can share videos/images/text as replies to other posts too
-> Users can give or take 'Mojo' on a post (basically it's a Like/Dislike or Upvote/Downvote)
-> The more Mojo you have, the more your Mojo impacts the post (more it gives/takes), but will have some other math included - for example if you earned a ton of mojo 3 years ago, your impact is less than someone who has earned a lot of Mojo in the last 3 months - so that old time members aren't forever more powerful than a new user
-> Mojo is delayed so that a powerful user can't take Mojo from a post & make it hidden farther down the page immediately - giving a chance for other users to give/take Mojo too
-> Mojo impact deteriorates with time, meaning your Mojo impact (how much you give/take) is more reliant on RECENT activity, not all time
-> You can however see how much Mojo you've received over time
-> Posts are sorted by amount of Mojo, number of replies, number of views, time since posting, etc. An algorithm will be deciding the quality of the content
-> Posts are not "bumped to the top" just because they got a reply
-> Community founders can however 'pin/sticky' 1-3 posts per section
-> More trusted communities will receive priority over new communities for showing on the homepage, basically adding a Mojo multiplier
-> I haven't decided on the final flow yet, but basically creating a post will require user to be in a specific section to add the content
-> Home page shows content from all sections, unless you toggle section/category view & go into a specific one
-> Community homepages are the same as main homepage, but only pulls content from that specific community & has the section toggle as well
-> Community tools will allow owners to view bans/suspensions/flagged content/etc for their community
-> Successful community owners will be invited in as official Forumojo moderators to moderate the main site content & review flagged content from other communities that have been submitted to the homepage (because of linked up default sections)
-> Forumojo will not allow video/image uploads at start... instead users will link to images/videos uploaded elsewhere
-> A limited number of awards will be available at the start, with more added throughout time, but most awards will be manually given or incredibly hard to receive to avoid award bloat which feels meaningless
-> Community owners will not be able to give their own custom awards as these are meant to distinguish members throughout ALL communities on Forumojo
-> If successful, it is possible that community owners will be able to receive $ from ads displayed on their community page if they toggle this option 'on'. At the start Forumojo will have no ads or paid/premium posts
-> Scrolling down the page loads more content into the grid display
-> List view will be available on all displays to convert the page into a more standard forum display

There's a lot more to it, but here's the basic design so far!
"in communityname" will actually be turned into:
"in sectionname from communityname", with sectionname linking to the overall Forumojo section, and communityname linking to that community's home page

large screen:
popular link next to 'Forumojo' will be changed to 'Home'
Forumojo will be an 'F' logo most likely
39AkzBV.png


tablet... search bar will show up still though & the share/filter options will still be spread out in final version
fJ33ctb.png



small tablet... same final changes as above:
6pjzyL8.png


mobile view:
glTgy8K.png



The first version of content sharing modals! just got these done 🙂

I think I might make these one form... instead of in modals...
Just allow them to link to an image OR video, and then have the textbox.
I'm not sure if I want to have separate buttons/modals or not yet. :/

O7pV8NO.png
 
Last edited:
  • Like
Reactions: Jon
Very nice. I like this already.
Thanks Web! I'm glad you like it 🙂
I'm going to do all the designs first & then work on the jQuery/JavaScript to handle loading content, posts, etc. Then I will hook it up to PHP & the database to get it working.

Then I will need to test it a lot & then release it.
It will take a while, but should be a good fun project 🙂 I have had it in my mind for a while, but figured I would just start designing it already.

There will also be a cool color changer / theme styler allowing communities to have their own custom theme. Basically they'll pick a few main colors & be able to upload a cover photo to customize their style & then I'll probably have some default themes they can pick from too 🙂

Users will be able to also choose a default theme to override community styles if they wish to, so the whole site is the same & nice.
 
Very nice project in the making, best of luck with this!
 
What an very large project that you have ahead of you and seems that you have thought about everything and also down to the details. You are glad that you know how to do things 😛 I'm interested in helping if you want any testers
 
Very nice project in the making, best of luck with this!
Thanks danthex, I appreciate the support!

What an very large project that you have ahead of you and seems that you have thought about everything and also down to the details. You are glad that you know how to do things 😛 I'm interested in helping if you want any testers
Yeah it will be pretty large, but nothing I haven't built already.
User base & secure logins... check
User profiles... check
drag & drop ordering (for category order)...check
Forum categories & threads... check (built a small forum software already for a business portal we created at our company)
Post replies... check
Video streaming / auto embed function... check
Math/algorithms for Mojo & trust levels... check, made similar things years ago
Showing content in multiple areas... check
Multi-role dashboards (like customers/staff/admin)... numerous times /check
etc..

All in all it will just come down to time & dedication. The actual work involved isn't too complex, it just has to be done right so it's not complicated to work on it a year from now. So I'm sticking to views right now so I can perfect the flow. Then I'll get it going with jQuery & make things submit to dummy pages, then I'll work on saving everything. Then once that's done I'll do all the security tests and protocols. Going to be a pain, but I think it will work out okay. I'm going to build a pretty nifty permissions class so that I can build one user dashboard for admin/community founders/users & then just add things on top of that for role-specific features.

The hardest part will be making it fast, stable, secure and able to be modified by other developers without them being super confused (aka spaghetti code)

I am going to get v1 up & running ASAP, which will be the default sections for the main Forumojo site and then I'll build the admin panel for that, then I'll build the community pages and the community owner panel, then I'll build the user dashboard

Will take a while doing it all myself on my free time, but a fun project 🙂
I'll release the full project when it's done on www.Forumojo.com, but I'll release early versions on www.generalforum.org, which will probably just be a single community forum without all the integration so I can have that as my version 1 playground that people can play with/test while I develop the overall software. I'll use my FP cash to get people to BETA test on GF basically.
 
Last edited:
It looks like it's the perfect forum software for mobile. Perhaps a decent alternative to Tapatalk. I love the simplicity of it.
 
Security is very important and also regards the admin panel/dashboard will be made separate from the front end. also good to have that option.
 
It looks like it's the perfect forum software for mobile. Perhaps a decent alternative to Tapatalk. I love the simplicity of it.
Yeah I want to keep it very simple & fresh looking. List view will be available, but I like the idea of moving away from lists & forum/section names and instead just focusing on the content/posts themselves.

Looks pretty neat. 🙂
Cheers Smokey, I'll keep updating with images as I progress 🙂

Security is very important and also regards the admin panel/dashboard will be made separate from the front end. also good to have that option.
Yes, security is going to be a major aspect. It has to go right. It would be a huge shame to see a large site, especially one of my own, go down due to a vulnerability. Yes, the admin dashboard & community owner dashboards will be separate to a degree, but I am not sure if I will move them off to a different server or anything at the start.
 
Are you trying to make something more similar to Discourse?
No, I would relate it more to Reddit.
The content would stay on Forumojo. The main difference is the additional layer of "forum-like" management.

On reddit you basically:
create a subreddit (reddit.com/r/communityname)
When a subreddit post becomes popular on reddit, it is displayed at the top of that community subreddit page and reddit.com itself. However, a subreddit cannot have forums or sections inside. Each subreddit is essentially a category. example: reddit.com/r/gaming does not have sections for specific games or consoles. There are however "flairs"/tags that can be applied to posts.

On Forumojo, your community (like a subreddit) can have custom sections.
So forumojo.com/c/communityname is the main community homepage, but specific sections would be like forumojo.com/c/communityname/sectionname
example: forumojo.com/c/forumpromotion/marketing

If a post becomes popular in that community's marketing section, it could show up on the main forumojo.com homepage, and have an even higher chance of being near the top of the forumojo.com/marketing page.

Community owners can use the forumojo.com main categories in their own communities, to allow their community's posts to be more visible to a wider audience. Forumojo.com is the main site, but will display popular content from all communities & sections on the homepage and not require any user to navigate to a specific community or section to find interesting content.

It's not meant to be a "managed forum host" (like forumotion) or like Discourse. Instead, my aim with Forumojo is to create a social experience that is essentially a giant forum that allows for users to create their own forums inside of it. It will be a giant eco system in which people can join communities if they wish to participate in a specific community more than others, but also engage with content from all over the site.

Example 1:
You join up to Forumojo.com and find a few art communities.
These art communities may all have a 'Art History' section. While a specific community will only display the art history posts from their community members, the overall Forumojo 'art history' category displays the best posts from ALL communities connected to that category.
So to start, you would probably be at forumojo.com/art-history to see art history posts from a lot of communities & you might see that a single community is responsible for most of the posts. Perhaps that community is called 'We Love Art' and so you might navigate to forumojo.com/c/we-love-art/ to see their specific contributions.

Example 2:
You want to use Forumojo as your forum host.
You create Forumojo.com/c/ForumPromotion
Inside your community, you start setting up sections. You can create unique sections, or use default Forumojo sections. Perhaps you want an off topic 'Funny Videos' section.
Forumojo.com/c/ForumPromotion/funny-videos/ would display ONLY posts made by users in the Funny Videos section of your community.
If any of those posts become popular within your community, they would show up on Forumojo.com/funny-videos/ or if extremely popular, Forumojo.com itself.

Essentially it's giving the power of a managed forum host, but is more focused on the integration with the main site. The aim of a specific community is to do something better than others.

Example 3:
Forumojo.com/c/GamingCommunity1 is doing great & is the main source of all Forumojo.com/gaming content.
You come along and you think you can run a better gaming forum. You create Forumojo.com/c/GamingCommunity2 and it gets widely popular. Both communities would see their posts on Forumojo.com/gaming & gain visitors and new community members from that exposure.

I think I will alter the way this works over time, perhaps doing the following.
Forumojo.com/categorynamehere
When you create a community, you choose 1 default category that your posts can be displayed in
Create any number of sections in your community, and any popular post would show up in that category.

The premise is that you can create your community/forum & sections, but the goal is to not have millions of communities. It's to have good content, and if a community is really good at attracting members & producing content it will be on the main page & category page a lot. However, ratings will be 'weighted'. A new community with 10 active members that has 20 votes on a post may receive more attention than a post in a community with 100 active members that only gets 20 votes.

The logic is that a new community can always gain exposure with good content. Forumojo members will likely spend a lot of time on the main category pages & home page, but can always become a community member if they wish. This does not mean they will always visit that single community. They could be part of 100 different gaming communities if they wish to. Additionally, regular users can post to the main Forumojo.com/category page. They are not required to be part of a community to share content. This also has a huge positive for new communities. Although a popular community's homepage or sections will never display content from outside their community, a NEW community will automatically have related Forumojo content dragged in so that every community is relevant & popular for a visiting user. Basically there will never be a time where a new community is completely empty unless specifically toggled off by the community owner.
 
I love this. This is almost the blend of forum/social media that the internet needs.

Good luck with this! I hope it succeeds.
 
quick update:
The initial modals for sharing content 🙂
O7pV8NO.png




I love this. This is almost the blend of forum/social media that the internet needs.
Good luck with this! I hope it succeeds.
Thank you! I appreciate that 🙂
I'm happy with how this is going, but am still brainstorming so I'm just sticking to the VIEWS right now. I think the most exciting part of this is that a built-in forum software exists for the communities, so I'll end up with two different products.

1) Forumojo.com site as a whole, with the extra layer of integration (homepage above)
2) Standalone forum software that has all the features needed. I will be powering www.generalforum.org with the single-community software portion.

I'm very happy about what I'm doing with this. I'll keep you posted!
 
Last edited:
Damn, looks really good. Looks really sleek and modern.

I've got a few questions though:
  1. Since it's a forum software will it be available to the public or just for this website?
  2. If it's public will it be free, open-source or paid?
  3. How are you going to deal with copyrighted content?(E.g. Let it pass or deal with it immediatley to avoid any legal issues)
  4. How will you monetize the site to earn money?(E.g. Ads, Merchandise, Promotions)
Those are all of my questions. Good luck with the project and I hope it all goes well.
 
I always have to ask this, but why have you chosen jQuery and Bootstrap as frameworks? Although they are both still maintained, at this point jQuery is a 10-year-old library, and Boostrap is seven years old. They are both large packages, and consequently, slow when compared to modern frameworks that utilize a virtual DOM for client-side rendering.
 
Looks like a good project.

If you are planning to open source this, then make sure to make some sort of installer pages so that people with limited tech knowledge can do so in cpanel.
 
Damn, looks really good. Looks really sleek and modern.

I've got a few questions though:
  1. Since it's a forum software will it be available to the public or just for this website?
  2. If it's public will it be free, open-source or paid?
  3. How are you going to deal with copyrighted content?(E.g. Let it pass or deal with it immediatley to avoid any legal issues)
  4. How will you monetize the site to earn money?(E.g. Ads, Merchandise, Promotions)
Those are all of my questions. Good luck with the project and I hope it all goes well.
Hey, thanks Dan! Sure, I'll try my best to answer 🙂
1) It will just be open to me at first. I will most likely release the single community software portion to the public, but not the overall software that connects all communities together.

2) I will probably make it free or paid, but not OS. I'm not sure about this yet.

3) Users will sign a TOS & admins/mods will make sure copyrighted material is removed. Also, all images/videos will be hosted on other websites, so that gives me a little bit of leeway. If it's a video on YouTube, I won't face much legal pressure if it's shared on my site and we would obviously respond to all DMCA notices.

Looks like a good project.
If you are planning to open source this, then make sure to make some sort of installer pages so that people with limited tech knowledge can do so in cpanel.
I will not be making it open source, but may provide free versions of the software.
Yes, a custom installer will:
->create database tables
->make sure all files exist

I always have to ask this, but why have you chosen jQuery and Bootstrap as frameworks? Although they are both still maintained, at this point jQuery is a 10-year-old library, and Boostrap is seven years old. They are both large packages, and consequently, slow when compared to modern frameworks that utilize a virtual DOM for client-side rendering.
I can change and use something else instead of Bootstrap, but jQuery & Bootstrap aren't that slow. They're pretty fast and the whole site will be rendering things client-side, so it will really depend on the user's specs.

jQuery 3.3 was released 1 year ago & is still actively developed and supported.
Bootstrap 4.2 was also released a year ago and is still actively developed and supported.

I'll be eliminating most of Bootstrap & only using parts of it.
As for jQuery, I'm greatly in love with it & it's not too slow with slimmer versions once production is ready
 
Last edited:
@Ghost Don't get me wrong, I love jQuery—it's the library I learned JavaScript through and I still use it regularly, probably more than vanilla JS. But compared to ES6, it's not as efficient in the DOM. To boot, the issues that jQuery solved years ago (namely cross-browser compatibility and vanilla JS not being as feature-rich) no longer exist.

Since I'm not familiar with the needs of your project, I won't presume to know the best tool for what you're trying to accomplish. And anyway, it's your project. :blush: Whatever you choose, this is still very cool and I'm excited to see it completed!
 
@Ghost Don't get me wrong, I love jQuery—it's the library I learned JavaScript through and I still use it regularly, probably more than vanilla JS. But compared to ES6, it's not as efficient in the DOM. To boot, the issues that jQuery solved years ago (namely cross-browser compatibility and vanilla JS not being as feature-rich) no longer exist.

Since I'm not familiar with the needs of your project, I won't presume to know the best tool for what you're trying to accomplish. And anyway, it's your project. :blush: Whatever you choose, this is still very cool and I'm excited to see it completed!
To be honest, I can definitely just use core JS.
I'm really only...
  • Using AJAX to submit strings & non-confidential data
  • Button / element events (modals, etc)
  • Fetch data with AJAX
I'm not really doing much with JS at all, so I probably will use core JS instead of jQuery or any library by the time it's live & public
 
Back
Top Bottom