Assignment 4: Backend Design & Implementation
Abstract data model
Link to working code:
https://github.com/mfchao/SpotLite
Link to deployed site:
https://spotlite-red.vercel.app/
Reflection:
During the development and execution of my ideas, I made numerous adjustments and took several factors into account. Initially, I reconsidered the application of my ideas and decided to eliminate the Category concept. It appeared to be an unnecessary complication, as it could easily be reduced to an element of the Post concept. This integration simplified the backend and will facilitate category-based filtering in the front end.
Likewise, I removed the theme component from the SpotLite concept, as it seemed to unnecessarily complicate matters and the intention of themed weeks could be better conveyed through the front-end implementation. If given another chance, I would have treated this theme component as a separate concept. The intricacy of themed competition weeks, where users compete and are judged based on upvotes/downvotes, could add a unique touch to the app and therefore warrants its own concept due to its complexity.
During the concept creation process, I encountered several unforeseen ambiguities. For example, I hadn't considered certain errors and dependencies/synchronizations. User options like spotLiteOption and anonymousMode should be mandatory for profile completion, while a bio or social links should be optional. Similarly, spotInfo cards may not always have bios or social links to show if the user opts not to upload any, resulting in a 'null' display. I thought about improving this output's readability, but concluded that visual display takes precedence, leaving this task for the front-end implementation.