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 thedefault
layout defined in_layouts/
.about.md
– “About me” page. Also uses thedefault
layout 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.yml
defines the site navigation and is referenced by layout templates._includes/
– Reusable partial templates and assets. For example,task-head-template.html
andtask-body-template.html
are injected intoalgoprep/task.html
when rendering algorithm tasks.user-state-modal.html
defines 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.html
is the base layout andpost.html
extends it for blog posts. Markdown files in_posts/
and pages likeabout.md
use these layouts via their front-matter._posts/
– Blog posts written in Markdown. Each file has YAML front-matter specifyinglayout: post
so they render with_layouts/post.html
.assets/
– Static assets. Contains SCSS stylesheets undercss/
, JavaScript modules injs
(e.g.,editor.js
bundles CodeMirror modules from a CDN while sharing a single@codemirror/state
instance,state-settings.js
wires up the user state modal via the/api/profile
endpoint), GitHub logos ingithub/
, and images underpython/
. Code blocks with classes likelanguage-python-codemirror
are replaced at runtime byeditor.js
with<div class="cm-static-view" data-code="…">
wrappers. A dedicatedpyodide-worker.js
runs the Python interpreter in a Web Worker for task execution.copy-code.js
attaches copy buttons to these blocks and swaps the icon to a checkmark when the copy succeeds.algoprep/
– JSON definitions of algorithm tasks, theindex.md
page, and the dynamictask.html
used for interactive code execution.scripts/prerender-tasks.mjs
reads 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.mjs
runs 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.