New personal project: - a next-generation forum written in PHP

John Avis by | March 1, 2020 | PHP

I had been looking for a project to take-on that I could write in PHP as I hadn't done much in PHP before. So I built a forum platform.

I had been looking for a project to take-on that I could write in PHP as I hadn't done much in PHP before.

Over recent years I have seen the effect of Facebook on my favourite forums. For some of them, the number of users and posts diminished significantly, and others disappeared altogether.

I thought about how forums could be improved to survive against Facebook and set about creating my own prototype next generation forum that would combine the best of forums and the best of Facebook.

I didn't really plan on making this website public, but once I was close to a finished product I thought I may as well and moved all my old automotive blog content to it.

Here's what I was trying to achieve...

Firstly, Facebook is quite good for many of the things that forums do, but I'm sure most people will agree that:

• There's too many groups to join for most subjects
• Public tag discussion is generally poor (ie. if you want to chat about a topic, you are best joining a group)
• People don't always want what they discuss in groups or pubic topics appearing to their family and friends - sometimes they like to keep their hobbies and interests separate
• It is very photo/video oriented and often people don't actually read much or all of the post but still go ahead and reply, so the quality of discussion can be low

So here are my ideas for improvements to traditional forums...


While a rigid list of categories is appropriate for some forums, I think the option of allowing users when they post to select one or many existing categories or add new ones allows a forum to evolve to it's users interests.

As an example, one of my favourite forums (now gone, but was about a brand of cars in Australia) had a "General category". This category was one of the most popular parts of the site and had lots of large threads about certain topics. Picking one of these threads as an example, people would reply to the thread sharing interesting cars they found for sale. Some of these attracted many replies, but in a single thread where you have a mixture of new replies and replies about another reply, it became quite messy.

There were quite a few similar threads and each deserved its own category.

I like the idea of tagging as used in many social media websites where users categorise their own posts with existing or new tags and popular and interesting tags become well known.

For this to work well there needs to be a good system in place to recommend categories to users. This can be done by showing users popular categories, and recommending categories based on other categories of posts with categories that the user is already following. You could also do like some social media sites where the user automatically follows categories after they have viewed a certain number of posts with that category.

The home page

On some small forums that I frequently visit that I am interested in most topics I usually find myself visiting the "unread posts" page so I can see all of the new and replied-to posts since my last visit.

On larger forums with a lot of posts and where I am only interested in some of the categories, I usually go to each of the category pages to see whats new or replied-to.

This isn't ideal, and I am not always interested in some threads that have new replies.

I think Facebook feeds handle this better than traditional forums and something similar could be adopted.

A logged-in user's home page should be a list of all new posts for categories that they follow and posts that the user has followed (or replied to themself) that have new replies. Possibly there might also be some suggested posts based on what I mentioned above about categorisation.

The home page for a new user (not logged-in) could be a list of latest posts, or most popular recent posts, and perhaps categories with the most recent posts.

I don't think Facebook feeds and other pages encourage the serious discussion that I think forums are better suited to because they are too oriented to photos/videos and also because users can immediately reply (comment) right there on the page. Also because some previous replies are hidden (for space reasons), you often get lots of duplicate replies.

For my prototype, for each post I displayed the post title, the first part of the post and also a small photo (if one was posted) with a number overlayed indicating how many photos were posted.

Post Templates

I like the idea of being able to customise the type of posts so I thought there should be post templates that could be extendable.

Some of the typical templates are:

• Normal post
• For sale post, with price, location and ability to mark as sold
• Question and answer post, with ability to mark a reply as the accepted answer (or do like Stack Overflow do where the question can have replies, and there are also answers with their own replies)
• Events, with date, time and location

Collections/Personal Pages

Many forums are dedicated to hobbies which often involve having something or a collection of something.

For example. car enthusiasts usually have one or more cars.

For some forums it would be a good feature if users could post about their item, and they could have a page for each of their items which would show all the posts about it. Other users could follow an item so they get updated to new posts about it.

This would work well with things like car projects, but also for many other hobbies and interests. It could also work well for support forums where a user could record the product/s they have.

The website is and so far I'm the only member #lonely.


There are no comments yet. Be the first to leave a comment!

Leave a Comment



...random postings about web development and programming, Internet, computers and electronics topics.

I recommend ASPnix for web hosting and Crazy Domains for domain registration.


Get the latest posts delivered to your inbox.