Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FSP - Code Metrics

Description: 

Login Page: The login screen allows the user to sign in to an existing account or create a new account, stored locally on the user's device. Upon login, the user is prompted with a variable username and password input field, which could give information to the user if the process fails. When successfully logged in, the user's profile data is retrieved from their respective files; alternatively, the user's data file is created if the data is corrupted or doesn't yet exist.

Sign Up Page: The signup screen allows the user to create a new account. The program shows text highlighted in red, emphasizing the conditions
the user needs to follow. If they do not follow all of them and try to submit, they are given a message. When they follow all the conditions and their
username is not taken, it dynamically generates a user ID and lets them log in. It also creates empty data files for their information.

Home Page: When the user logs in, they are greeted with the Home Page, providing a description of the
overall site, as well as giving them instructions on how to work with the page. Additionally, it
serves as the gateway through the rest of the app through the Navbar. 

Explore Page: The next page the user can explore is the Explore Page. On this page, the user can explore through my application's
problem base. The user has the ability to search for problems, sort by difficulty or names and even to filter by solved/unsolved,
type of problem and the difficulty. The page allows for dynamic searching, meaning that as soon as the user enters in an input, it is immediately
used for the filtering of problems. This provides a more seamless experience. The page also provides 2 main buttons: generate random problem and generate 
random problem based on rating. The first button provides the user with a completely random problem out of the problems they have filtered from. The second
provides a problem from the problems they have filtered, with higher preference to the problems closer to their "rating" level. The user also has the ability to
click on problems, and log their solutions. This dynamically updates the icons shown, which are about whether the user has solved a problem or not.

Analytics Page: After the user has Explored problems, they can visit the Analytics page. This screen provides the user with dynamic statistics 
based on the solutions they logged on the Explore page. Currently, there are 3 main features provided (can be expanded later): rating, weakest areas,
and resources to the weakest areas. The rating is calculated through a complex algortihm taking into account the problems the user had solved, the problems
the user could not solve, and the difficulty of each problem. Weakest areas are similarly calculated, taking into account the problems the user had solved, the problems
the user could not solve, and the difficulty of each problem. Finally, the resources are links to helpful pages for the user to improve their skills.

Contest Generation Page: After looking at the Analytics, the user can also generate a contest. The user has the ability to choose the difficulty,
the randomness (how for off from the difficulty the problems are) and also the number of problems. After the user selects valid values for each of these,
they can enter the generated contest. After solving a certain amount of problems, the score is dynamically updated. Finally, if the user decides to click submit,
it opens up the contest summary screen, where the user can work on incorrect problems after they have completed the contest. They can also see their rating for the contest,
along with the score they recieved. It also provides problems solved/attempted/unsolved, just as an overall summary.

Problem Pop-Up: The problem pop-up appears when the user selects a problem from the Explore Page or a generated contest. This screen displays the full problem statement, 
including the title, difficulty, and relevant details required to attempt the problem. It provides the user with direct access to the problem content 
without navigating away from the main page. The user can log whether they have solved the problem or not, 
which immediately updates their progress and statistics across the application. 
If the problem is accessed through a contest, the pop-up also contributes toward contest scoring and progress tracking.

Features:
	- functional file reading and writing
	- consistent saving of user-specific data
	- functional navigation between screens using the navbar
	- dynamic UI updates based on user actions

	- Login Screen
		- Enables the user to log into or create a new account
		- Stores user credentials and profile data locally
		- Validates username and password input with error feedback
		- Separates user data so each account is isolated
		- Creates new user data files if they do not already exist
		- Redirects the user to the Home Screen upon successful login
		- Finds and stores user problem data through file reading

	- Sign Up Screen
		- Allows the user to create a new account
		- Enforces username and password requirements
		- Displays error messages when conditions are not met
		- Prevents duplicate usernames from being created
		- Dynamically generates a user ID upon successful sign up
		- Initializes empty data files for new users

	- Home Screen
		- Greets the user with their username after logging in
		- Provides an overview of the application's purpose
		- Provides an overview of each screen
		- Acts as the central navigation hub through the navbar
		- Provides the number of problems the user has solved, as an interesting metric to track their progress

	- Explore Screen
		- Allows the user to browse the problem database
		- Provides a search bar for dynamic problem filtering
		- Supports sorting by difficulty and problem name
		- Enables filtering by solved/unsolved status
		- Allows filtering by problem type and difficulty range
		- Updates results instantly as user input changes
		- Enables users to log problem completion status

	- Problem Pop-Up
		- Displays the full problem statement when selected
		- Shows relevant problem data such as difficulty
		- Provides links to problem on DMOJ
		- Shows a helpful step map with instructions
		- Allows users to mark problems as solved or unsolved
		- Immediately updates user statistics upon interaction
		- Supports both Explore and Contest workflows

	- Analytics Screen
		- Displays dynamic statistics based on user progress
		- Calculates a user rating using solved and unsolved problems
		- Identifies weakest problem areas based on performance
		- Provides learning resources for improvement areas
		- Updates analytics automatically as data changes

	- Contest Generation Screen
		- Allows the user to generate a custom contest
		- Supports difficulty selection
		- Allows adjustment of randomness around difficulty
		- Enables selection of  sthe number of problems
		- Validates all user input before contest generation
		- Generates problems based on user-defined constraints

	- Contest Screen
		- Displays generated contest problems
		- Tracks progress and score dynamically
		- Updates score as problems are solved
		- Simulates a structured contest environment

	- Contest Summary Screen
		- Displays final contest results and score
		- Shows contest-specific rating changes
		- Allows users to revisit incorrectly solved problems
		- Sorts attempted/solved/unsolved problems during the contest
		- Provides post-contest feedback for improvement
- Multithreading for the API and Explore page to reduce the loading time on multiple pages of the application

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages