Feat/auth progress tracking#1258
Open
shreyagpj wants to merge 20 commits into
Open
Conversation
|
@shreyagpj is attempting to deploy a commit to the komalsony234-1530's projects Team on Vercel. A member of the Team first needs to authorize it. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary [required]
This PR introduces authentication-based progress tracking, allowing users to create accounts, securely save their learning progress to the server, and access it across sessions and devices. It also adds a user dashboard for viewing progress, fixes a couple of pre-existing bugs uncovered during the implementation, and AI assistance was used during development.
Related Issue [required]
Closes #61
Type of Change [required]
data/projects.jsonWhat Was Changed [required]
src/utils/auth.pysrc/utils/learning_progress.pysrc/routes/main_routes.pyregister,login,logout,me) and updated learning progress routes to use authenticated server-side progress storage.src/static/auth.jssrc/static/script.jswindow.clearSkills()so the authentication module can reset skill chips on logout.src/templates/index.htmlsrc/static/style.csstests/test_basic.pypytest.MonkeyPatchfixture.tests/test_auth.pyCHANGELOG.mdsrc/errors/handlers.pysrc/utils/url_validator.pyNameError.How to Test This PR
Clone this branch:
Install dependencies:
Run the application:
Open http://127.0.0.1:5000 and verify:
Run the test suite:
py tests/test_basic.py
Expected test output:
Test Results [required]
PASS test_projects_json_loads
PASS test_duplicate_ids_detected
PASS test_duplicate_titles_detected
PASS test_empty_title_detected
PASS test_missing_required_field_detected
PASS test_each_project_has_required_fields
PASS test_find_project_by_id_found
PASS test_find_project_by_id_missing
PASS test_parse_skills_basic
PASS test_parse_skills_empty_string
PASS test_parse_skills_single_entry
PASS test_parse_skills_valid_json_array
PASS test_parse_skills_malformed_json_handling
PASS test_parse_skills_legacy_fallback
PASS test_parse_skills_containing_commas
PASS test_score_single_project_full_match
PASS test_score_single_project_partial_skill_coverage
PASS test_score_coverage_ratio_exact_values
PASS test_score_no_project_skills_does_not_crash
PASS test_score_three_skills_partial_coverage
PASS test_score_single_project_no_match
PASS test_score_single_project_alias_matching
PASS test_get_recommendations_returns_results
PASS test_get_recommendations_max_three
PASS test_get_recommendations_no_match_returns_empty
PASS test_get_recommendations_result_format
PASS test_case_insensitive_recommendations_identical
PASS test_whitespace_stripped_in_skills
PASS test_validate_all_valid
PASS test_validate_missing_skills
PASS test_validate_missing_level
PASS test_validate_missing_interest
PASS test_validate_missing_time
PASS test_validate_all_missing
PASS test_home_route
PASS test_security_headers_present
PASS test_recommend_api_valid
PASS test_recommend_api_interest_not_available
PASS test_recommend_api_missing_field
PASS test_recommend_api_null_field
PASS test_recommend_api_non_string_field
PASS test_recommend_api_empty_body
PASS test_project_detail_found
[2026-07-03 15:08:23] ERROR devpath.errors status=404 id=a0f8eea9 type=NotFound context='page_not_found'
Traceback (most recent call last):
File "D:\Python312\Lib\site-packages\flask\app.py", line 880, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Python312\Lib\site-packages\flask\app.py", line 865, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Downloads\DevPath-feat-auth-progress-tracking(final)\DevPath-feat-auth-progress-tracking\src\routes\main_routes.py", line 209, in project_detail
abort(404)
File "D:\Python312\Lib\site-packages\flask\helpers.py", line 272, in abort
current_app.aborter(code, *args, **kwargs)
File "D:\Python312\Lib\site-packages\werkzeug\exceptions.py", line 887, in call
raise self.mapping[code](*args, **kwargs)
werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
PASS test_project_detail_not_found
[2026-07-03 15:08:23] ERROR devpath.errors status=500 id=8fa4ceb9 type=Exception context='internal_server_error'
Exception: Test error
PASS test_internal_server_error_page
PASS test_view_code_found
PASS test_download_code_found
PASS test_view_code_nested_path
PASS test_download_code_nested_path
PASS test_resolve_starter_file_path_traversal
PASS test_health_check
PASS test_scoring_weights_has_all_keys
PASS test_search_api_returns_results
PASS test_search_api_empty_query
PASS test_home_route_with_share_params
PASS test_share_banner_element_exists
PASS test_share_params_partial_loads_ok
PASS test_share_params_invalid_level_not_reflected
PASS test_share_params_xss_not_reflected
PASS test_share_params_excessive_skills_loads_ok
PASS test_api_recommend_invalid_level_no_crash
PASS test_sitemap_returns_200
PASS test_sitemap_content_type
PASS test_sitemap_contains_homepage
PASS test_sitemap_contains_all_project_ids
PASS test_robots_txt_returns_200
PASS test_robots_txt_references_sitemap
PASS test_project_links_have_noopener
PASS test_career_roadmaps_load
PASS test_compare_roadmaps_finds_overlap
PASS test_compare_same_roadmap_returns_error
PASS test_compare_invalid_roadmap_returns_none
PASS test_compare_page_route
PASS test_list_roadmaps_api
PASS test_compare_api
PASS test_compare_api_missing_params
PASS test_compare_api_not_found
PASS test_sitemap_includes_compare
78 passed, 0 failed out of 78 tests
Screenshots (if UI change)
Before

After

Self-Review Checklist [required]
feat/,fix/,docs/,data/,style/,test/python tests/test_basic.pyand all 78 tests passprint()orconsole.log()debug statementsNotes for Reviewer
None