Web-App - Messaging Board (Jan. 2021 - May 2021)
Technologies and Skills: Python, JavaScript, SQL, HTML, CSS, Socket Programming, Cryptographic Methods, Information Security
During the outbreak of COVID-19, my neighbour’s small business was looking to utilise an online service to co-ordinate meetings and hold discussions between employees. The company was dissatisfied with existing options such as Microsoft Teams as it did not meet their specific requirements. Primarily, the client was concerned with keeping the all the data within the company having considered the recent Cambridge Analytical data-breach scandal. Therefore, I set out to code a bespoke web-app for communication within my neighbour’s company as part of my A-Level Computer Science practical project.

This project was my first foray into web-development and taught me a lot about what goes into the backend of a website. It's clear that a lot of the design language for my current personal portfolio website is borrowed has been borrowed, along with the backend code which I have reused in multiple projects. The backend was built on Python Flask, a micro-web framework ideal for low traffic websites, which was sufficient given the company was small. The development process was highly stimulating as it was my first opportunity to work on a real-world computer science project, exploring a lot of modules and programming fields which I hadn't previously worked on. For example, the client wanted real time group-chats which required a live socket connection between the web-app and the host, which you can see below. This was an interesting challenge which involved using the SocketIO module.

In addition, I also needed a secure databasing system for messages, chat names, usernames, passwords and other sensitive information which was predominantly tackled using hashing algorithms such as SHA-256 integrated into a SQL database encrypted with SQLCipher. In addition, the website utilised SMTP for email confirmation to ensure users were a part of the company with verified emails. A final feature I added was a chat monitoring system to discourage employees from making comments that could be deemed as inappropriate or harassment. The main lesson I learnt from this project was that more preplanning of the specifics of your application before further development can lead to much fewer revisions in the long run of the development cycle, which I consciously thought about during future programming projects. The client was pleased with the web-app and hosted it for a number of months until they had more thoroughly scoped a long-term solution on a larger scale platform.