A downloadable project

Omnicore KnowledgeBase

Developed Using: HTML, PHP, CSS, JavaScript, MySQL

Omnicore KnowledgeBase acts as a host of user manuals for both Omnicore as a company as well as their potential clients for this product. KnowledgeBase will start off hosting their documentation on the websites, apps, and general products they create in their business. Then if the product expands further and businesses are looking to partner up, KnowledgeBase would expand further to include other companies' articles.

Because of this, the website needed a few things. The first is a generally good-looking design of the website; with the basics such as a "Home" and "About Us" page being represented but also our other pages as mentioned later. The next feature is an Article Creation / Editing tool, allowing Omnicore and other potential users of KnowledgeBase to create articles based on their products and edit them in case more information is needed or is deemed irrelevant. Thirdly is a way for users to search through the lists of articles for the article a person wants. It would have to search through the title, description, and tags of an article, then it needs to display them in an order that makes sense for what the user might want to see. And lastly, there needs to be a system for businesses to sort out who can see and edit articles, by managing their employee's view and editing permissions.

This was a year-long project, focusing on developing a major project for a client. Our group initially consisted of five people, which is why the scale of this project was relatively large. However, some members soft-dropped the unit leading only me and another to pick up the slack as seen in the contributions section.

My Contributions

My contributions to the project focused mainly on the backend side of the website, with the general layout of the website designed as a team early into development. As such my main sections were: the "Article Management" systems which included the article handling and storing parts of the website; the "Employee Management" systems which handle the viewing/editing permissions of employees at a company, as well as the rest of the employee's details; and the general data handling when storing all this information to a database in a safe way.  For my pages, I created a basic UI that the other members could build off of, but it was meant to just have the rough basics and highlight the important parts of my sections.

Sign In / Register

The most basic section I did was the "Sign In" and "Register" pages, where I had to handle the safe creation of accounts; where the accounts had to have their information parsed and safely processed before they could sign in; and the signing into their accounts, where their personal data should be kept hidden and unreachable at all times. 

Page Navigation

Although not a section, a contribution I had over the project was the various ways to navigate through the website; such as the navigation bar located on the top of every page, and assisted with the general layout of the pages.  The navigation bar is located on the top of every page on Knowledgebase and updates depending on whether the user is signed out, signed into an "Employee" account, or signed into a "Manager" account and everyone regardless of their account has a button to immediately navigate themselves to the home page.  The general page layout was done as a group effort, but I had a major decider on the pages I worked on, the whole sets of management tools, and the general navigation from page to page. This was done because I had the most experience with web programming, so other than basic sketches on paper it was all left to me.

Article Management Tools

The first major section that I worked on was the "Article Management" tools, where I created everything for making and managing articles. There was a basic UI that I created but it was later updated by one of the teammates as it was one of the main things people interact with.

Firstly when creating these tools, I needed a way for creating the articles and loading seeing all the articles that were created, which was done by having a separate page called articles that a specific employee can look at. This hosted all the articles that they could see, and all the ones that they could edit, with a "Create New" button for new articles.

Secondly was the whole article editing page, which allowed the employee to edit the title, tags, description and the actual article. This was simply done in that order, with a layout that highlights all those sections in that order. These were decided because every article needed a title and article that you could actually read, and the description was meant to be a 100-word description of the article's contents for search results. Tags were just an element primarily to help search results for larger articles, as we did not want the system to search the actual article's body for every little thing. At the bottom of the page were two buttons, the first being a "Save" button which saves the article and takes you back to the "Articles" page, while the second option is a "View" button. This allowed you to observe the article without any editing permissions to see if everything is formatted right, but unlike them, you have the option to go back to "Edit" the article.

The last thing with this page was making sure all data was correctly sent to the database with no intentional or unintentional malicious activity getting through. This could be from adding HTML into the article to someone injecting SQL code into the database.

Employee Management Tools

The next major section was the "Employee Management" tools, which were directly created for the reason that the users who interact with these articles need to have different viewing permissions from each other. For example, a random person scrolling the site should not be able to view all articles from a given company, nor should they be able to edit them, while an employee working on a certain product at the company should be able to have access to all related documents and editing permissions for when they add or remove new features on their product.

When developing these tools, the first thing developed was the basic employees list that the manager of this company can use to scroll through and find the correct employees. There was a lot of debating about what data should be shown when the manager scrolls through the employees, as the more information shown slows down the scrolling process leading to a more annoying time. Still, there needs to be some basic info for identifying the party. In the end, three things were decided to be shown. The first was the employee's profile picture, the second thing was their names and the third was their contact details. All of these are the most important aspects you need at a glance.

The next thing developed was a place to host more of the employee's details. Clicking on an employee should have a pop-up that can contain the rest of the missing information and allow the company to edit some basic details such as their email. This was not hard, but I spent a lot of time making it load quickly and look visually appealing as I believed it should.

The last thing with this page was the same as the "Article Management" pages: Ensure all data was correctly sent to the database with no intentional or unintentional malicious activity getting through. We did not want anyone to delete a company or give themselves full permission with everything in their catalogue or KnowledgeBase as a whole, so I made sure that I did everything within my knowledge to make this section safe and secure.

Client Communication

Lastly, although not really a part of the website, I did become the primary source of contact for Sam at Omnicore for the latter half of the project. When most of the members soft-dropped the unit, the rest of us had to focus on the project itself and did less communication with Sam. After noticing this, I tried to have personal meetings with Sam so that he was at the very least informed of the general direction of the project. He did seem appreciative of me, probably the reason why out of the group he gave only me a reference.


Leave a comment

Log in with itch.io to leave a comment.