Repository navigation
feat: Integrate CP_pipeline and automate static portfolio site deployment to GitHub Pages - #9
Open
LIGHTUNCHARGED wants to merge 4 commits into
Open
LIGHTUNCHARGED wants to merge 4 commits into
LIGHTUNCHARGED wants to merge 4 commits into
Conversation
…nt to GitHub Pages
…lly during website check
…atic site even if no new submissions are found
This branch has not been deployed
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.
I created an automated serverless pipeline involving CFPusher to push my Codeforces solutions to my GitHub repository (LIGHTUNCHARGED/Competitive-Programming). The problem with the extension was that it didn't sort the problems in folders with rating, thus I made a janitor.yml bot which sorted the problems and categorized it.
I wanted others to see my Codeforces stats and solutions in a better frontend, so I also designed a frontend for the solutions called CP Vault (lightuncharged.github.io/Competitive-Programming/). Now my friends also wanted to have the same portfolio-type website for their Codeforces solutions, so I thought to contribute to your CFPusher extension itself. I integrated my CP pipeline to this cf-pusher extension so that any user can instantly deploy their own organized solutions vault and portfolio site.
Here are the details of the integration:
Core Features Integrated
Sorted_Problems/{rating}/{contestId}_{index} - {name}/Detailed Changes
public/manifest.json: Exposed the HTML, CSS, and JS website templates using theweb_accessible_resourcesproperty so they can be read dynamically inside the extension context.src/services/databaseService.jsPorted the Python data parsing and formatting logic to JavaScript. Updatesdatabase.jsonentries, deduplicates files, calculates rating distributions, and sorts items.src/services/websiteService.js: Handles template copies from the extension, generates customconfig.jsonfiles, and deploys the.github/workflows/static.ymlPages workflow.src/services/githubService.js: Added and exportedfetchFileFromGitHub()to download files (likedatabase.json) and return decoded UTF-8 contents and Git SHAs.src/background.js:Sorted_Problems/layout.checkAndDeployWebsiteimmediately upon startup, manual trigger, or settings adjustment.database.jsonis updated and committed only once at the end of the batch to save API limits.src/popup/Popup.jsx:-
src/components/ProfileInfo.jsx: Implemented manual Codeforces handle entry support to bypass local OAuth redirect limitations.public/templates/)index.html, solution.html, category.html, assets/app.js, assets/app.css: Generalized templates that load configurations dynamically fromconfig.jsonrather than referencing hardcoded users/usernames.Verification Plan