The current website for jenntesolin.com β built with Next.js and React, with older notes now migrated to MDX.
π§ This site has been significantly reworked. Content migration is complete, the domain is still being transferred, and a few improvements are still on the way.
- Requirements
- Version Information
- Current Stack
- Quick Start
- Linting
- Content Structure
- Notes and MDX
- Search, Sitemap, and Metadata
- Headers and Caching
- Project Notes
- License
- humans.txt
- Acknowledgments
- Node.js: v25.9.0
- npm: 11.12.1
- Next.js: 16.x
- React / React DOM: 19.x
- Pico CSS: 2.x
- MDX: 3.x
- ESLint: 9.x
This site currently uses:
- Next.js for routing and page generation
- React for components
- MDX for notes and older post content
- Pico CSS (classless) for base styling
- Custom CSS in
styles/style.cssfor layout and site-specific tweaks - ESLint for linting
The site is being rebuilt with a simple, accessibility-first styling approach.
Base classless styling comes from styles/pico.classless.min.css, while most custom styling changes should be made in styles/style.css.
In general:
- Use Pico CSS for sensible default HTML styling.
- Use
styles/style.cssfor custom layout and component tweaks. - Avoid overcomplicating page-level styles unless needed.
-
Clone the repo:
git clone https://github.com/jennifert/nextjs-site.git cd nextjs-site -
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
Build the site:
npm run build
-
Start the production server locally:
npm run start
Run ESLint with:
npm run lintThis project currently uses a mix of standard Next.js pages and MDX content.
Top-level pages live in pages/, for example:
pages/index.jspages/about.jspages/projects.jspages/photography.jspages/notes.js
Notes are stored in:
content/notes/*.mdxSupporting note utilities live in:
lib/notes.jspages/notes/[slug].js
Older post content is being migrated from .js page files to .mdx.
Each note should include frontmatter similar to:
---
title: "Example Note Title"
description: "A short description for search, metadata, and previews."
date: "2026-04-20"
tags: ["tag1", "tag2"]
---Notes are used by:
- the notes index page
- the site search
- the sitemap
- structured data / page metadata
Notes can also use a small set of custom components when needed:
Imageβ wrapsnext/imagefor screenshots and note imagesSafeIframeβ wraps iframe embeds in a reusable container for safer styling and future tweaks
These components are mapped in pages/notes/[slug].js.
Search and sitemap pages currently rely on generated metadata and site content.
Files commonly involved include:
public/meta.jsonpublic/sitemap.xmlpublic/feed.xml
As the site is updated, metadata generation should account for both:
- standard pages in
pages/ - MDX notes in
content/notes/
To help avoid overly aggressive caching on deployed pages, a _headers file can be included in the output.
/*
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0This helps ensure static pages are refreshed more consistently after deploys.
See TODO.md for the current task list and migration notes, and CHANGELOG.md for recent project updates.
- Code is licensed under the MIT License
- Content (articles, notes, and media) is licensed under CC BY-NC-SA 4.0
For developer credits and site stack details, see public/humans.txt
- Shields.io for README badges
- MDX for content authoring
- Next.js for the site framework
- Awesome README β For formatting inspiration