Skip to content

Repository files navigation

Robin's Personal Site

This repository contains the source code for my personal website. The site serves as a platform to share my thoughts, projects, and other content I find interesting.

Features

  • Blog: Posts about various topics, including school, life, and random ideas.
  • Projects: A showcase of personal projects and experiments.
  • Comments: Visitors can leave comments on blog posts, with support for author names and timestamps.
  • Dark Mode: Toggle between light and dark themes.
  • Math Support: Render mathematical expressions using MathJax.
  • Markdown Parsing: Blog posts are written in Markdown and rendered dynamically.
  • Notes: Course notes rendered from Markdown (with front-matter), featuring MathJax support and an auto-generated table of contents.
  • Pagination & Filtering: Browse blog posts by tag or search with pagination.

Tech Stack

  • Frontend: HTML, CSS, JavaScript (Vanilla)

  • Client-side Libraries:

  • Server-side Libraries (As Vercel Serverless Functions):

  • Backend: Node.js (serverless via Vercel)

    • Comments: cached in Upstash Redis + kept in Neon Postgres

Deployment

This site is deployed on Vercel with automatic GitHub-triggered builds.

Comment abuse controls

The comments endpoint sanitizes input, limits request and field sizes, rate-limits posts per IP and post slug through Upstash Redis, rejects duplicate comments for a short cooldown window, and uses a hidden honeypot field. Turnstile is optional and is requested only for suspicious submissions or bursts of activity.

To enable the optional challenge in production:

  1. Set TURNSTILE_SECRET_KEY and TURNSTILE_SITE_KEY as Vercel environment variables.
  2. Put the public site key in the data-site-key attribute of #comment-turnstile in post.html.

The GitHub language proxy is restricted to repositories featured on the Projects page and caches successful responses.

Terms / AI Usage

Use of this content for training machine learning or AI models is expressly prohibited without prior written consent. See TERMS.md for full details.

Contact

Feel free to reach out via:

About

A personal site.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages