Looking back, the game-making was made unnecessarily arduous by the fact that I didn't know many site-building tools yet (React, Express, etc). The entire website is made entirely through raw Javascript and DOM API calls. To be clear, using the DOM API directly isn't bad by any means. However, compared to something like React, which handles all interactions with the DOM for you, it is a bit messier to deal with.
This was also created at a time when I was fairly new to programming in general. At the time, I had been seriously programming for only a couple of months. Naturally, I had no knowledge of proper programming practices. This meant that my code had no modularity, no tests, and didn't use any design patterns
[2]. And of these issues, the biggest was how tightly coupled my code was. Every time I changed anything in the code, I had to simultaneously make updates in several other places. This made debugging and updating the code a nightmare. Plus, since I didn't have any unit tests, bugs popped up frequently, making the problem even worse.
Eventually, I did get the game made. It's not perfect by any means
[3]. But considering that I was a complete novice, I don't think it's that bad, either.
You can try out the game here:
https://shan2024.github.io/battleship/