# Use cases for LLC Web ### Overview We want to build a website for the COMMUNITY, which can attracts and motivates our members on their Coding Interview problem solving ability. Or at least, help them make a plan to do so. We can do this by: - Show them a full picture of topics. - Generate for them several training plans. Can be either single-topic-focused or random generated. - Motivate and rewards them by awards, or medals in their profile. Our definite goals: - Inspire every levels: from Beginners to Advanced, to practice doing and maintaining a habit of solving Coding Interview: 70% of created accounts on our website would be active after 3 months. - Get greater recognition from other orgs in the institution (UET). The number of Community member will be increased to approx. 500 after the product release. ## Use cases ### I. Login 1. The user can login using Discord, so that the user can track their progress on the DC server, and our website as well. 2. If the user haven't join the community, send them to an "FAQ" page to instruct them to do so. Our website should also explain why they have to link with their Discord. -> Can consider an FAQ page. 3. The user should see their Achievements, current missions, so that they'll be immediately called-to-action. If they haven't take up any mission, we should alert them to do so, by link them to "Browse Missions". ### II. Browse Missions 1. The user are shown to a list of missions, which are system-generated. The missions can be like these: - "As Easy as Pi": solve all 6 problems that made up the first 11 digits of Pi: 3, 14, 15, 92, 65, 35. - "Golden Ratio": 1, 61, 80, 33, 98, 87. - "Prime Time": 2, 3, 5, 7, 11, 13, 17, 19. - "Prime Time II": 23, 29, 31, 37, 41, 43, 47. - A mission can be topic-focused: - "Binary Investigator": 4, 33, 35, 69, 278, 283, 302, 540, 1011, 1187. (All Binary search problems) 2. An user can "favorite" at least 5 missions, so that the progresses can be shown for them in the Home Page. **Other Constraints**: - Missions can't include PREMIUM tagged problems (for now). - Missions should be ***extendable***, so that we can build a script generated mission in the future. ### III. View missions 1. "All Missions" can be viewed from the homepage. 2. If the user haven't "Favorite"-d any missions, the system should alert them to "Browse Missions" and tell them to favorite some of them. 3. Missions can be "Shown" (As in topic-focused mission) or "Hidden" (As in cryptic missions, like Pi number or Golden Ratio). For both cases, a list of problems should be displayed as a table. For each case, how it displayed is a bit different - If the Mission is "Shown": information for all the component problems is shown. - If the Mission is "Hidden": information for only the problems which the user has solved is shown. ### IV. Record Solved Problems: Solved problems can be recorded in 2 ways: 1. Using the current LLC Bot database, with the Bot can call to the website API to trigger update. -> An API must be built. 2. Manually: the user can send Leetcode submission-id to the Leetcode problem they solved. If the username matches, and the status is AC, the system should record this AC into the Database, and rewards them as promised. If not, the system should alert the user the problem with their submission-id. **Other Constraint**: Just make sure the DB actions are synchronized efficiently. ### V. Show solved Problems 1. User can access their list of "Solved problems", which is sorted by "Latest first". This serves the purpose of "System debugging", since users and developers can transparently see how the system recording their AC. **Other Constraint**: Pagination can be important, if the list of solved is too big to handle. Current maximum can reach 1000 problems/person. ### VI. Show awards 1. Rewards can be displayed in "Show rewards", where people can screen capture their Profile and showcase it to others in the community. 2. Recently earned reward should be displayed on the homepage.