No description
Find a file
2024-01-14 14:50:37 +02:00
.vscode Temporary solution: renderToStaticMarkup 2023-12-21 19:07:06 +02:00
public Implemented hello message on join 2024-01-02 19:10:32 +02:00
src Temporarily resolved keydown repeat event bug by circumventing sendData empty string alert. 2024-01-14 14:50:37 +02:00
.gitignore Initialize project using Create React App 2023-12-19 19:09:12 +02:00
LICENSE Added MIT License 2024-01-03 18:19:45 +02:00
package-lock.json FIXME Buggy send message 2023-12-21 17:20:37 +02:00
package.json FIXME Buggy send message 2023-12-21 17:20:37 +02:00
PAPERWORK.md Added MIT License 2024-01-03 18:19:45 +02:00
README.md Added MIT License 2024-01-03 18:19:45 +02:00
tsconfig.json Initialize project using Create React App 2023-12-19 19:09:12 +02:00

EPQ IRC Chat App Front-end

This project is the client-side companion to the Java 17 WebSockets and MySQL backend.
Copyright 2024-2025 Zhongheng Liu

Purpose

This repository stores code that partially comprises the IRC chat project. This is an A-Level Edexcel Level 3 Extended Project Qualification in the form of an Artifact. Its purpose is to create a convenient self-hosted IRC chat solution, with HTTPS encrypted text transfer and end-to-end SSH asymmetric key-exchange, encrypt-decrypt functions to ensure that the messages uploaded and downloaded are anomynous and untrackable.
It hopes to produce an aesthetically-pleasing and modern-looking interface through the use of a combination of HTML, JavaScript/TypeScript logic, and CSS formatting to create an interactible UI/UX for users of the application to communicate with each other through a server that acts as the message broker between 2 or more parties through the use of the STOMP library and the WebSockets protocol.

Explanation

Project initialisation

The skeleton code of the epq-web project is first generated by the command npx create-react-app <directory> --template typescript, by incorporating TypeScript support into the project, easy access to static type-checking is granted, providing for a more efficient debugging process, since common errors such as type mismatchs will be detected first instead of during the build-and-production cycle. which produced a directory tree structure similar to the following:

<directory root>
├── node_modules
│   ├── ...
├── package.json
├── package-lock.json
├── public
│   ├── favicon.ico
│   ├── index.html
│   ├── logo192.png
│   ├── logo512.png
│   ├── manifest.json
│   └── robots.txt
├── README.md
└── src
    ├── App.css
    ├── App.js
    ├── App.test.js
    ├── index.css
    ├── index.js
    ├── logo.svg
    ├── reportWebVitals.js
    └── setupTests.js

3 directories, 17 files (ignored node_modules/*)

This part of the EPQ artifact creation process utilized predominantly 3 libraries. It involved ReactJS, TypeScript, @types/* type notation libraries, and most crucially the underlying Node.js application structure.
Of this newly created tree structure, most of the code encapsulated within the generated files are redundant and are immediately purged from the repository. The file /package.json auto-generated by npm documents the libraries that are imported throughout the project, tracking its dependencies. The actual development of the software required 1 more library called StompJS.

Project dependencies

StompJS and WebSockets

STOMP is the name of a protocol that allowed clients to talk to each other using JSON and WebSockets technology. It also provides an interface for WebSocket (aka. an abstraction from the functions provided by the SockJS library).

ReactJS

Lorem ipsum

TypeScript

Lorem ipsum

Node.js

Lorem ipsum

Project development

Initial project infrastructure

Lorem ipsum

License

This project is licensed under the MIT License, found under /LICENSE.