I have a website where there are many users. There are some training involved. When users first start using the website (newbies).
I would like to lock or hide certain parts of the website or simply grey out the buttons UNTIL user has done the training module for that section before using that feature.
What is the best way to implment this type of structure?
There is not just a few sections. Also users may skip a module and do a different learning module first and do it in different order. So there is not ordered level number.
E.g. User might do learning Module A, B, C, E and F, M and O
So I would like to unlock / unhide features A B C, E and F. M and O feature. But for example Feature D would be greyed out or not available to them.
Also would it affect page load speed if I am checking all the time making a call to the database if they user has done the module or not? Would I user another field to store a true or false boolean?
I don’t wanna have a large table with heaps and heaps of fields just to store true or false 🙁 or this is industty standard?
Summary of Challenges:
There could be a large number of learning modules.
I wanna only unlock that part of the website after they have done the module.
By the end majority of all users would have done all the learning modules in the end.
I don’t want the website to be very slow for page load speed checking this for regular users.
What’s the best way to go about it? Or should I just have a level number. Where their level is the highest module that they have completed that doesn’t skip a module. e.g. Module A, B, C, E and F, M and O So even thou they have completed higher modules their level is only level 3 since they only completed A B and C?
I haven’t tried anything. I only began thinking about this design and thinking about the problem.
I would like to get insight on how profressional programmers would tackle this problem.
What database structure would you use?