{"repo":"guillermodlpa/site","free":true,"listed":false,"github":"https://github.com/guillermodlpa/site","clone":"git clone https://github.com/guillermodlpa/site.git","description":"Guillermo's portfolio and blog. Built with Next.js, Notion API and Chakra UI","language":"TypeScript","stars":15,"topics":["nextjs","notion-api","blog","react"],"license":null,"category":"databases-storage","readme_excerpt":"Guillermo de la Puente's Personal Site https://guillermodlpa.com This is version 2 of the site. You can check out the source code of version 1 poweered by Siteleaf and Jekyll. Technologies Next.js Notion API Chakra UI MDX Services Notion as CMS FormBold for contact form backend Umami for traffic analytics How to use Notion as a CMS Each blog post is a Notion page in a Notion database. During build time, all pages are statically generated pulling information using the Notion API. To render the blog posts, I implemented a NotionPageRenderer component. Learn more about it in NotionPageRenderer README. 🖼❕ Images hosted in Notion can't be optimized with next/image because their URLs are temporary. Check out the README above and the repo guillermodlpa/upload-notion-images-to-cloudinary for more details. Markdown for content It's truly a pain in the ass to write and edit large chunks of copy in JSX or as strings. That's why I used markdown for the portfolio project descriptions, and @next/mdx to parse it to React. The result is actually delightful to work with as a developer! Contact Form The contact form backend is powered by FormBold. It's as easy to use as signing up, creating a form, and posting the payload to the given form's endpoint. Note that the request fails with a 500 if any of the values is undefined or empty string. RSS The RSS feed (https://guillermodlpa.com/rss.xml) is generated dynamically, pulling the blog posts and returning them in RSS feed XML format. Check out ","default_branch":null,"files":null,"tree":[],"storefront":"/r/guillermodlpa","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/guillermodlpa/site/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}