gg

Build truly static websites

gg logo

You love JavaScript based libraries and frameworks to build websites? We do too! But why force all that kilobytes of JavaScript on your users if your page doesn't actually need it?

With gg you get the best of both worlds! Build websites with modern state-of-the-art technologies while shipping not a single byte more than necessary to your users!

The core values of gg

Flexibility
Build pages with dynamic content based on any data source you can imagine, gg can generate static sites as well as server-compiled pages. Make your pages interactive using simple APIs to manage state and events on the client.
Performance
Fast loading times are ensured through enforced cache-control headers for dynamic pages as well as minimal overall page-sizes. Your content is truly dynamic, no rebuilding is needed if just the content changes.
Thrift
Let gg optimize every byte of your code, and keep only the parts your page absolutely need. There will be zero JavaScript if your page is 100% static. Unused CSS is removed, the rest is optimized and minimized out of the box.
Confidence
Enjoy strict typing in a framework built using TypeScript from the ground up. You need no external dependencies to get started, all you need is built-in. Everything is opinionated and already wired-up, zero-config for you to care about.

The vision

Client-side frameworks and UI libraries like React have taken over the modern web with a component-based approach to application design. When building static websites, using such a framework often results in shipping a lot of code to our users that the requested page actually does not need at all. Generating only static pages is just a tradeoff, leading to build times that grow as fast as the number of pages.

We can do better.

We believe that building websites on top of proven web standards will always yield the most solid and performant solution, while a component-based approach will result in scalable and maintainable websites. JavaScript on the client should only be used sparsely to make the page interactive exactly where it needs to be.

The mission

By server-compiling those pages that rely on external data on run-time and compiling the rest on build-time, a website build with gg will always show the most up-to-date content without needing to rebuild anything.

Instead of shipping all the code of your components to the client, gg compiles the whole page beforehand. JavaScript will only be included if there are dynamic elements, which can be handled using simple APIs for setting and updating state, as well as listening for events.

What gg is built on...

gg logoDeno logoTypeScript logoInofficial JSX logoVercel logo

...and what it doesn't use!

React logoWebpack logoNext.js logo

Some common questions

"Why not use Gatsby or Next.js?"

These two meta-frameworks (and also other React-based static-site generators) have one thing in common: They still end up creating a React application that loads all the code that React needs, which is a lot of JavaScript.

gg is different. It creates sites that only load what's necessary, and not a single byte more. If your site is 100% static, the user doesn't have to load any JavaScript at all!

"What about Remix then?"

Remix is great! It gives you a lot more control about what's actually happening to your pages compared to Next.js or Gatsby. In fact, if you need the power of React to create highly dynamic and more complex single-page apps, give Remix a shot!

But if you just want to build static pages with minimal dynamic elements, gg has an edge over Remix by keeping things simple and more minimal. You don't need to load all the code of the react-dom package for some simple state management.

"Isn't Svelte already doing this?"

The compiler-based approach of gg is in fact inspired by Svelte. But instead of creating yet another templating language, gg builds on JSX with TypeScript, which means you can use all the JavaScript features you know and love to create the markup for your page.

Furthermore, gg is built server-first, which also means you will need a server if you have pages with content that is fed by some external sources like a CMS, a database, or maybe even some simple files.

"Why JSX? Do I have to accept writing `className` once again?"

No! JSX just refers to the syntax in which you write your markup. The name of the attributes and even the elements are free to choose. Instead of using the names of IDL attributes of HTML elements (like React does), gg uses the names of the actual attributes, which makes the markup look a heck closer to actual HTML!

"Why use Deno instead of Node.js?"

Deno supports TypeScript out of the box. It also reduces the "size" of your application and also of gg itself, in terms of not having any node_modules and also not having to setup TypeScript.

In fact, a core value of gg is to reduce dependencies and configuration. Everything you need to get started is built into gg, you don't need to install anything else!

"How can I get going?"

Head over to the documentation! It gets you started on how to set up gg, as well as providing well-written guides that explain everything there is to know about what gg can do and how it functions.

Note that gg is not public (yet). The section about getting started will elaborate on how to get access. For now, it's free to try, you just need to ask.