Mashup by the author

In case you are just tuning in, this is my adventure in attempting to recreate Wordpress without PHP by using JavaScript and Deno, a server app designed to replace Node.js.

The code for DenoPress is in a public github repository jcoonrod/denopress.

The Medium article for Part 1 described how to build a stripped down WordPress server and Part 2 added various features for page and post navigation and images.

This Part 3 represents a change in plans! I had originally thought to integrate Gutenberg into DenoPress. However, I have this hatred of frameworks and dependencies and Gutenberg relies on a…

How to use the built in functions

As my dozen or so readers know, I really hate using more third-party files than is absolutely necessary. That has attracted me to Deno, the cool new replacement for Node.js as it really eliminates the need for package managers. I’m using it to try and clone WordPress in JavaScript in a toy project that I’m calling DenoPress. I started by using the lovely Drash add-on but realized that it was really not necessary.

This public github repository is a very simple example of how to create a Deno webserver using only the native Deno functionality to serve both static and…

Assembled by the author

In Part 1, I introduced the idea of serving an existing WordPress site using JavaScript in a Deno-based server, a relatively new replacement for Node.js by its original author. My repository for this experiment is free and opensource at this link. In Part 1, we were able to successfully recreate the WordPress text and menus. Here we bring more key WordPress features to DenoPress.

Fixing CSS dropdowns

One nice thing about computers is that they let you know when you don’t really understand something. …

As any of my handful of followers knows, when it comes to coding, I’m a nut for simplicity. I’m a fan of PHP, and I use a lot of WordPress.

With the advent of Gutenberg, using WordPress got easier — but customizing it got harder. Suddenly, you needed both PHP and node.js servers to develop custom blocks. And I hate the deprecation hell that comes with Node.js. And I know there are lots of people who frankly prefer JavaScript/TypeScript to PHP.

Well, what about Deno — the wonderful remake by the same guy who developed Node.js? Could I create “DenoPress”…

Photo by Jan Antonin Kolar on Unsplash

Purpose of Part 3

  • Understand the basics of relational databases and be able to integrate them into web-based applications using PHP.
  • Learn about PHP extensions and how to use other people’s code in your web app.


  • Part 1 of this series — the basics of PHP
  • Part 2 of this series — PHP inter-page communications
  • A need for working with data. Databases are never easy to work with. I’ve tried to create the simplest possible introduction, but still — if you don’t need a database — don’t bother!
  • The basic concept behind databases — here is a great 5 minute YouTube tutorial (of which…

Photo by Austin Distel on Unsplash

Purpose of this part:

  • To be able to communicate between pages. For example, on one page you enter data, submit it and then display it on another page.
  • Click here to get back to Part 1


  • Basic understanding of HTML5 forms and inputs, Note — in the old days, in order to validate inputs or offer pop-up calendars, you needed to use javascript. Now HTML5 has that built in.
  • Basic understanding of HTML Tables.

Basic Concepts

A browser has 3 ways to communicate to the server:

  • GET (when you submit a form, placing the key/value pairs in the URL,
  • POST (when you submit a form in…

Photo by KOBU Agency on Unsplash

I have previously complained about how badly most tutorials are written. But can I take my own advice? I know some really smart people who have never actually coded but find they would like to do so— how would I advise them to get started?

Draft Outline for what I consider a “Good Tutorial”

  • Start with a clear purpose statement for the tutorial — why would one want to take it?
  • Identify the absolute minimum prerequisites, provide a link to a super-simple tutorial on those subjects.
  • Do a quick check that things are set up.
  • List and clearly state a short list of key principles or conceptual distinctions that…

I agree completely. My horrible experience with the deprecation hell of node.js wasted more of my time than any computer issue in my 50 years of coding. It led me to swear off frameworks in general. (see

Have more fun and produce better, faster, most maintainable apps.

I’ve been coding for more than 50 years, and one thing I’ve learned is to simplify, simplify, simplify. I believe coders should really understand why the computer does what it does. At its must basic level, a computer is a pretty simple gizmo. It can do some arithmetic, and it can do different sequences of steps given the result.

For many years, we coded in assembler or somewhat higher level languages compiled with libraries to handle higher level and standardized activities, like reading and writing files, drawing graphs or processing…

I’m a person who has learned to hate the Divi Builder. One of my favorite organizations recently adopted it, and wanted sister sites to match its style. The site looks nice, but if you want “normal” WordPress editors to add pages and posts without a big learning curve, they will be frustrated. They will have to at least learn how to “avoid” Divi builder and use the regular Gutenberg editor.

At first I thought — well, there are lots of free, existing WordPress themes out there and I’ll find one and tinker with its css. But there are almost no…

John Coonrod

A guy committed to human dignity for all.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store