Skip to content
/ plain Public

A simple webbrowser built completely from scratch.

License

Notifications You must be signed in to change notification settings

tntmeijs/plain

Repository files navigation

Plain

Welcome to the Plain project!

Plain is an educational project to learn more about how webbrowsers work. Everyone has used webbrowsers, yet only a small number of people really know how they work.

Multiple decades worth of research have gone into the likes of Google Chrome, Mozilla FireFox, or Microsoft Edge. Plain will realistically never even come close to the commercial webbrowsers.

However, you will be able to navigate the web using Plain!

Third-party libraries and SDKs

Writing a webbrowser from scratch is a lot of work. To avoid spending a lot of time writing literally everything from scratch, Plain depends on a few third-party libraries and SDKs:

  • Vulkan: Next-generation API for 3D graphics and computing (could be seen as a "successor" to OpenGL).
  • Spdlog (MIT): Very fast, header-only/compiled, C++ logging library.
  • GLM (MIT): Header only C++ mathematics library.
  • GLFW (Zlib): A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input.

This project would not have been possible without the help of these awesome libraries. ♥

Development log

30th of July 2023

  • After a busy period at work, I finally found some time again to pick up this project.
  • Put together Vulkan boilerplate code to render a triangle to the screen. hello vulkan triangle

1st of January 2023

  • Added queue family discovery.
  • Added logical device creation.

20th of December 2022

  • Added physical device (GPU) selection.

11th of December 2022

  • Added Vulkan instance creation.
  • Added Vulkan extension and validation layer configuration.

23rd of October 2022

  • Created graphics project.
  • Added window creation. window creation

22nd of October 2022

  • Implemented very basic HTTP/1.1 protocol.
  • Added logging to make it easier to debug the application.
  • Managed to receive a valid response from a website. valid HTTP/1.1 response

8th of October 2022

  • Created TCP socket abstraction layer for WinSock.

6th of October 2022

  • Started working on Plain.