Repository Structure
This repository contains the source for a Jekyll-based personal website. Below is a brief overview of the key files and directories and how they relate to each other.
Root Files
README.md– Overview of the website and the Algoprep project. Links toalgoprep/and explains how to contribute tasks.LICENSE– Repository license information.Gemfile/Gemfile.lock– Ruby dependencies required for building the site with GitHub Pages.package.json/package-lock.json– Node dependencies used mainly by build scripts inscripts/and tasks underalgoprep/._config.yml– Jekyll configuration. Determines site metadata (title, baseurl, author, etc.) and interacts with layouts under_layouts/and data files under_data/.index.md– Home page. Uses thedefaultlayout defined in_layouts/.about.md– “About me” page. Also uses thedefaultlayout and includes structured data via_includes/person-schema.html.robots.txt– Sitemap reference for search engines.service-worker.js– Caches algorithm task JSON files and Pyodide resources using Workbox.
Core Directories
_data/– YAML data files used by Jekyll.nav.ymldefines the site navigation and is referenced by layout templates._includes/– Reusable partial templates and assets. For example,task-head-template.htmlandtask-body-template.htmlare injected intoalgoprep/task.htmlwhen rendering algorithm tasks.user-state-modal.htmldefines the modal for saving user progress and configuring repository, PAT, save name and timeout, and now includes logout and token deletion controls._layouts/– Page layouts for Jekyll.default.htmlis the base layout andpost.htmlextends it for blog posts. Markdown files in_posts/and pages likeabout.mduse these layouts via their front-matter._posts/– Blog posts written in Markdown. Each file has YAML front-matter specifyinglayout: postso they render with_layouts/post.html.assets/– Static assets. Contains SCSS stylesheets undercss/, JavaScript modules injs(e.g.,editor.jsbundles CodeMirror modules from a CDN while sharing a single@codemirror/stateinstance,state-settings.jswires up the user state modal via the/api/profileendpoint), GitHub logos ingithub/, and images underpython/. Code blocks with classes likelanguage-python-codemirrorare replaced at runtime byeditor.jswith<div class="cm-static-view" data-code="…">wrappers. A dedicatedpyodide-worker.jsruns the Python interpreter in a Web Worker for task execution.copy-code.jsattaches copy buttons to these blocks and swaps the icon to a checkmark when the copy succeeds.algoprep/– JSON definitions of algorithm tasks, theindex.mdpage, and the dynamictask.htmlused for interactive code execution.scripts/prerender-tasks.mjsreads these JSON files to generate static HTML using the templates from_includes/.blog/– Landing page for the blog. Displays the latest post and links to others.logos-flavicon/– Favicon and web manifest files.scripts/– Build and pre-render scripts.prerender-tasks.mjsruns during site builds to convert algorithm tasks into ready-to-serve HTML pages.node_modules/– Third‑party dependencies installed frompackage.json. Typically not edited directly.
Maintenance Instruction
Whenever you add, remove, or modify files in this repository, update this AGENTS.md file accordingly so that it reflects the current structure and purpose of each file or directory.