ink blot logo
gustavo.is

blogs,a collection of creative blogs from the Ponder community.

Contributions: client and server development.

Inception and Purpose

Ponder Blogs was a destination site where anyone could read the public content authored with Ponder.

Powered by NextJS, Ponder Blogs was a mixture of SSR (server side rendered) and SSG (statically generated) content, making it blazingly fast while still allowing for dynamic elements and instant publishing as well as advanced features like allowing authors to choose theme and layout variations.

I was in charge of development, while the beautiful design was the work of my co-founder Dave Gorum

Lessons learned
Cutting edge technologies are not always the best solution
Perhaps this is better explained through example: NextJS is an amazing framework. After writing the Ponder client in standalone react, writing the blogs site with NextJS was a revelation. It allowed me to build fast and focus on the important aspects of the product. As we were beginning to build, Next released a new feature called Incremental Static Regeneration (ISR), which did on-the-fly static site generation at request time instead of compile time. It was way faster than SSR, worked like magic and had minimal setup. Unfortunately our feature-set included the ability for authors to change the theme of their site, and there was no way of making that feature "feel" right with ISR, since one couldn't invalidate the existing cache across all the blog's pages at once. It was a painful but right decision to use SSR instead no matter how much better ISR was in every other respect. (someday I'm sure they will introduce partial cache invalidation).
Technologies and Integrations
Client Framework
NextJS
⚛️ Server side rendering for speedy yet up to date member content
⚡️ Static site generation for non-dynamic content
📰 OpenGraph metadata in all pages for social site unfurling
GraphQL Server
Apollo GraphQL Server
💫 Fully directive-based model for cypher queries, no explicit resolvers
🔐 Shared codebase from Ponder client but separate schema ensures privacy of non-published data
Graph Database
Neo4J Aura
⚡️ Optimized indexes for speedy blogs data retrieval
💅
CSS in JS library
Styled-Components
📄 CSS-in-JS powers customized author-side 'moods' or themes
Client Hosting/Deployment
Vercel
📡 Native NextJS deployment solution (from CLI)
🔧 Lambda function for waitlist signup
🌎 Domain management
Feature Showcase
👉🏼 Simple and elegant design by Dave Gorum to showcase content from Ponder communities
👉🏼 Blazing fast load times thanks to SSR/SSG
👉🏼 Chronological, collection-based and member-based content streams per blog.
👉🏼 Personalized Blog info page
👉🏼 Personalized Member profiles
👉🏼 Built-in high-fidelity OpenGraph metadata for beautiful social media unfurls