KRK -- The Employee BBS & Time Management System

Introduction

Welcome to KRK (pronounced 'cork').

KRK is a virtual corkboard for businesses. I got the idea from back in the pre-internet era of the early 1990s. I worked at McDonald’s and in the breakroom, there was a corkboard where people would leave messages for each other, management would post notices, and a calendar was posted that had events and upcoming sales on it.

Concept

KRK works to replicate this by creating a Twitter inspired timeline where employees can post messages, reply to those messages, and favorite them. Supervisors can sticky important department information to the top of the timeline, and store management can post important messages seen by all users.

There is also an event calendar that allows department level and storewide events to be displayed. Finally, KRK offers a basic Time Management System which allows employees to keep track of their time worked.

Terminology

For the purpose of this README, there are 3 classes of users. To simplify this, we’ll say KRK is being used in a restaurant.

As well, admins cover both Management and Supervisors, as they both have some administrative privileges. Users refers to all users of the system, regardless of class.

Functions

Right now, KRK has three main functions – User Management, Posting, and Event Calendar.

User Management

Continuing with the concept of KRK being used for a restaurant, a new employee would sign up for an account, and, after management verification, be allowed to log in. Right now, for the live site there is no user verification so that people may try out the system but restricting access to only ‘verified’ employees is a simple matter to enable.

The user can then immediately access the Time Management System, which is a single click to clock in or clock out. There is a manual time edit in case the user forgot to clock in or out as well. The user has access to a profile which allows them to upload an image for their avatar, change their biography, and see all their posts, replies, and time clock punches.

Users can see anyone’s profile. Admins can edit anyone’s profile as well (say a user changed their username to something bad, or their avatar was not appropriate).

Posting

On the BBS main page is the post timeline. Employees and Supervisors only see posts from others in their own department, while Management will see all posts. Supervisors can ‘sticky’ posts for their department, which locks them to the top of the timeline and changes the formatting slightly to indicate that they are a sticky post. Storewide posts can only be added by Management and are also stuck to the top of the timeline with a slightly different format.

The concept of departments can be forgone as well allowing everyone to see everyone’s posts. The system is flexible in how to handle this.

When making a post, the post is immediately added to the timeline. There is also an auto refresh system to update the timeline every now and then to make sure new posts from other users will be seen. In the live version, this is currently disabled since, generally, there are not going to be multiple users posting at the same time so it would be an unnecessary drain on server resources.

Posts can be replied to and favorited. Replies are handled on a post’s own page to avoid cluttering the main timeline with reply threads. Replies can have replies and be favorited. Like with Twitter, Users cannot edit posts, but can delete their own posts. Admins can delete any posts. Replies are destroyed when the parent is destroyed.

Event Calendar

The Event Calendar is the simplest part of the KRK application. Admins can create events, assign them dates that they will be active, and assign them to be either storewide or to single departments only (for instance your kitchen crew would not care about training on a new cash register system).

These events show up, in chronological order, on the main BBS page. They disappear out of the calendar after they happen but remain in the database in case you want to simply change the dates and run them again.

Under The Hood

KRK is developed in Python and runs the Django backend framework. The current demo site uses Django 3.2. The front end now uses MDBootstrap 5 and regular Bootstrap 5 for styling, components, and so forth. There is not a lot of JavaScript in the app, given it’s rather simple and can mostly be handled with plain old HTML and CSS. The main BBS page uses jQuery and AJAX to process refreshing the post timeline without needing to reload the whole page.

I am hosting the live site on a DigitalOcean droplet. The database is a PostgreSQL database instance also hosted by DO. All static files and media are served off my DO Spaces CDN (if you inspect the page or use View Source – don’t worry, I won’t turn you over to the governor of Missouri – you will see that material comes from https://cdn.douglasavenue.com).

The Future

I have just gone through and redid the UI for the site, upgrading from Bootstrap 4 to the MDB5/Bootstrap 5 layout. I’ve also improved the responsiveness of the site to make it mobile friendly.

I also wish to separate the front and backend at some point, relying on React for the front and Django Rest Framework on the back. This is a long-term goal. I have already done some work on that, you can feel free to look at what has been done with both the backend and frontend repos.

In the short(ish) term, I plan on adding the following features:

Questions/Concerns?

Please email me at erin@douglasavenue.com


Thanks for checking this out!