Skip to content

MiniCheese26/scrabble-coursework

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 

Steps to run

  • Node.js version 16.1.0 was used at the time of submission. Also tested and working with LTS.
  • Navigate to the project root directory in a command line tool.
  • Use npm run setup to install dependencies and compile the application.
  • Run with npm start or ts-node src/index.ts.
  • To inspect the plain JS code that targets ESNext, please check project-dir/plainBuild and project-dir/client/plainBuild.
  • Navigate to localhost:8080 and Scrabble away!

What I have achieved

  • I've developed a fully functional web based Scrabble game that supports up to 4 player local and online multiplayer.
  • The game features all relevant game mechanics and rules of Scrabble allowing for a full game to be played.
  • The website is built as an SPA to allow more seamless navigation and UI updates.
  • The functionality is processed solely on the server-side and not under a peer-to-peer system which defends against a host abusing cheats.
    • Though arguably this system may scale up poorly if this was deployed for a larger user base.
  • I developed my own websocket system from scratch including the ability to
    • Easily create and manage rooms and connections
    • Develop a consistent and standard model for request/responses via JSON

What I would improve

  • I would've liked to have written unit tests for my application. On several occasions I made a change that I thought I knew all the side effects of. Only to later find some bug that I luckily happened to stumble across.
  • There is a lack of user feedback when actions fail on the server side. The program will handle server-side failures but will not inform the user explicitly.
  • The CSS is somewhat responsive but it doesn't always scale well on smaller screens, especially with the grid and the individual boxes.

What was this project?

  • This project was a first year university coursework project.
  • The objective was to develop a Scrabble-like game with whatever extended functionality you see fit.

Technologies used in this application

  • HTML, CSS (Styled Components), Javascript (Typescript)
  • ReactJS w/ React Router, JSX/TSX, React-Spring
  • Webpack
  • Express.js

About

A piece of coursework completed for my first year of uni

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published