Skip to content

dvartic/dvartic-blog

Repository files navigation

Personal Page/Blog using React and Next (SSG)

https://www.dvartic.xyz/

This website is a simple personal page that includes a landing page and a blog. Blog posts are stored in Markdown files, which are processed at build time to generate JavaScript/HTML.

Who am I?

I am a front-end web developer currently working on React-based projects. I am self-taught. Before learning web development I studied Accounting and worked on the business-side. In tech, I also hold interests in GNU/Linux and PC hardware.

What technologies did I use and why?

  • React.js: React is very flexible, has great support and is one of the prime libraries used to build user interfaces.
  • Next.js: Next is a framework that works with React to enable functionalities such as Server Side Rendering (SSR) and Static Site Generation (SSG). Due to the nature of this site, where data is only updated when a new post is created, all pages are generated using SSG.
  • ChakraUI: Chakra is one of the main component libraries for React and allows fast development.
  • TypeScript: provides static typing to JavaScript.
  • next-mdx-remote: efficiently loads MarkdownX content through getStaticProps in Next.js.
  • MarkdownX: allows injecting of JSX in Markdown files.
  • rehype-highlight with custom highlight.js stylesheet with support for light/dark theme.
  • Figma for prototyping. Link to Figma design

Why did I make this website?

I was inspired by blogs made by other developers and how useful they were in my journey. I too wanted to share my knowledge with others.

What are some of the features of this site?

  • Light and dark theme support, with system color theme detection.
  • Full Static Site Generation for performance and SEO.
  • Full responsive design.
  • MarkdownX support.
  • Search/Filter function for posts, that appropiately waits until the user stops writing to start searching.
  • Posts ordered by date (located in post metadata). Latest post section that shows the 6 latest posts.
  • Syntax highlighting for code blocks, with custom stylesheet for dark/light mode.
  • Use of React useMemo() and useEffect() where appropiate to avoid executing code on every re-render if not necessary.

How is the project's folder structure organized?

The project follows Next.js guidelines and is structured as follows:

  • /pages folder holds the main pages of the site. /pages/blog holds the blog index and each blog post. Next.js creates routes automatically based on the folder structure inside the /pages folder.
  • /components folder holds reusable React components, both components that are imported directly to /pages and components imported by other components. The folder /components/custom-icons holds various SVG files that are used throughout the site. Some of these SVGs are configured programatically.
  • /public folder holds static assets (images). In Next.js static assets should be placed in this folder.
  • /src/theme holds ChakraUI Theme configuration.
  • /styles holds a dark and light modifyed CSS stylesheet from highlight.js for use with rehype-highlight
  • /lib holds helper functions that are imported throughout the project.
  • /data holds the posts in MarkdownX format.

See also:

About

My personal page and blog [React, Next (SSG), ChakraUI]

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published