How to format the backend of my climbing app?

2 weeks ago 16
ARTICLE AD BOX

I am trying to build an app for a climbing gym using JavaScript (along with some HTML and CSS). I am using Vue for the frontend and MongoDB for the backend.

For those not familiar with climbing gyms, there are several wall sections within the gym, and each wall section has several routes that route setters make by drilling climbing holds into the wall. Here is a video so that it makes more sense (you only need to watch the first minute or two to get the idea). https://www.youtube.com/watch?v=1uP7TiZDJbg&t=1624s

One feature I would like in the app is for each user to be able to keep track of which routes they have done, along with how many attempts it took them to finish each route. Furthermore, I would like the app to give recommendations for improvement in climbing performance based on this information. On the frontend, this would look like a page with each route section and that section's climbing routes listed below it. Each climbing route will have a checkbox to the left to indicate whether the user has completed it, as well as an entry to the right indicating how many attempts it took. On the bottom of the page will be a 'Get Feedback' Button users can click to receive feedback, which will also be displayed on the bottom of the page.

The meat of my question:

What do I need on the backend to accomplish this? Should I have a schema for a list of all the routes along with how many attempts taken to complete each route, or maybe a schema for each individual route that includes the accountId, routeId, and number of attempts taken to complete that route? Those are my two ideas at the moment, but to be honest, I'm not sure if either one of these is right as I'm pretty new to coding. As for the feedback, I will probably have to implement AI in some way to generate the feedback?

This is my first question on stack overflow ever, so I apologize if the question is poorly formatted or I broke any protocol. I did my best in writing the question, but I definitely could've messed up. Thanks!

Read Entire Article