If I am going to start over again, I'll have a much further/more detailed plan. For this project, I have a broad plan about where I wish my project will go, how do some core modules look like and etc. However, my plan was not detailed enough, for example, I did not plan ahead to my function/variable names, and I ended up with a little bit of disappointment. Secondly, I also wish I could've spent less time on styles, I would probably focus on functionalities a little more based on the time frame we have. I realized how much time I wasted on styles, just to pick a better font, color, size, alignment and etc. I think that is what I should also be planning ahead of time. Thirdly, I wish I can get more familiar with projects have scales like this one. This is the largest project I have ever done in computer science (I feel bad about that), and I hope I could've practiced a little before actually doing the project.
Yes, I have completed everything in my "needs to have" list in my proposal. In fact, I also have some of "nice to have" list and some other things completed.
In my opinion, I would probably say the security part. I know Laravel has a built-in anti-SQL Injection and an anti-CSRF system. Regardless, my knowledge of web security is unsatisfying, every time I develop a module, I will keep one thing in mind: "Do not trust users' input", and the majority of the time, I can figure it out. However, a sacrifice I have to make is the styles, for example, the most secure way for users to view is put their markdown is in a textarea, however, this will result in getting the HTML code instead of getting the actual "view". I understand my web security is weak, so I have to look up some books and websites, to learn how to prevent malicious inputs. Now my website can prevent some basic hackings (you can try some XSS; it won't work.), but unfortunately, this website is a piece of cake for some experienced hackers.
Absolutely, and not just one.
- I can't figure out how to prevent DDoS, absolutely no clue. The only solution I can find is buying some companies' products.
- I don't know how to implement a program compiler/executer on my website. I did make a playground page on my website, which is basically a JS console. The only thing I used is JS's
eval()
function. Yet I don't know how to implement this "properly". - The email module works perfectly at my home, however, it does not work at the school. I think the school's internet does not allow me to do that.