The RECNATION project

Introduction

Hi all!

I’m Frank i am a developer/designer/entrepreneur from the Netherlands. After selling my previous IoT company (https://recognize.nl), I started exploring new opportunities. As “passive income” I already own a number of separate WordPress (affiliate/comparison) websites with a total of about 1.5 million Dutch visitors per month, hosted on 1 simple VPS. So it’s far from scalable.

Until one day, somewhere in 2019 i came across the Frontity project. And suddenly it became clear: I am going to rebuild my entire structure, make the platform available for everyone and grow with the Frontity project.

The RECNATION project’s goal:

Creating a global horizontal/vertical scalable SAAS platform that allows users to create an online comparison website within a few clicks, filled with affiliates, automatically selected from the RECNATION database based on the user’s chosen niche. And, automatically advertise that website on other RECNATION subsites and many external (content) channels within the user’s advertising budget. So the only thing the user has to do is creating great content.

Things i have accomplished so far

  1. Setting up Kubernetes clusters (at Digital Ocean) to auto-scale the application over different nodes/pods (in the future: datacenters/clouds), accessible via http2 passthrough (Ingress) load balancers.
  2. Configuring & deploying K8 Prometheus to monitor everything.
  3. Configuring & deploying K8 Cert-manager and Let’s Encrypt for automatically (renewing and) provisioning certificates to pods.
  4. Configuring & deploying K8 WordPress Multisite with WooCommerce partially mounted on Persistent Volumes (wp-config.php and htacces config) so it can update and scale automatically without losing changes.
  5. Configuring & deploying K8 ELK (Elastic Search, Beats, Logstash, Kibana) Stack and linking it to WP_Query which WordPress uses for the REST Api, so the REST API generates faster and can serve a lot more content to Frontity. The standard MySQL database is only used for WordPress itself.
  6. Rerouting the wp-content/uploads from the K8 Persistent Volume to the Digital Ocean Spaces CDN, so it can quickly serve static files all over the world.
  7. Configuring & deploying K8 Node server for the Frontity production build.
  8. Configuring the WordPress Multisite so a user can register a new subsite and a chosen (TL)Domain.
  9. Created a WordPress plugin which connects to the Transip API (Dutch domain provider) to automatically register domains and guarantee an unique Ipv4/Ipv6 adres for every subsite.
  10. Exported en imported all the content from my existing WordPress network into this project and cleaned it to fit into Gutenberg blocks.
  11. Created a custom WordPress plugin which connects to the Datafeedr.com service, to allow users to choose users from over 140 million affiliate products across 14.000+ retailers and filter results by 15 different (sanitized) WooCommerce product fields. Without making a call to the Datafeedr API every time.
  12. Neural translate the standard content via Google’s Neural Machine Translation System into the language chosen by the user (and to prohibit duplicate content penalties).
  13. Created a custom WordPress plugin which connects to the iubenda API to generate a privacy disclaimer and keep it automatically up to date for all subsites.
  14. Standard WordPress stuff like Akismet, Security, WPML, Subscription Payment provider (Mollie) etc. and create the necessary REST Api endpoints.

So now i actually have a sort of “Frontity As A Service” :joy:

Roadmap

  1. Create a custom Frontity theme as the standard theme for the comparison websites generated by the user, with 4 standard sections: Blog, Product Comparison, About and Privacy disclaimer stuff.
  2. Add (Frontity’s) Google Analytics, PWA, AMP (and let Google automatically generate voice actions), YOAST etc. support.
  3. Streamline it with WCAG guidelines to optimize it for things like voice search, readers etc.
  4. Add Facebook Instant Articles/Pixel etc support.
  5. Make the custom Fronitty theme deploy and update automatically (together with the Docker images/Helm Charts) via a CI/CI platform like CircleCI/Gitlabs.
  6. Create a custom ReactJS WP-admin dashboard with Gutenberg support, so i can exclude the users from the WordPress admin, to make it more secure.
  7. Add intelligent marketing automation services.

Wishlist

  1. Make the frontity.settings.js dynamically configurable. So each time a user creates a new subsite in the Multisite, the site settings are added to the fronting.setttings.js (already noticed a thread in the community forum) and make the system fill the right content and connect to the right (TL)Domain.
  2. WooCommerce support (already noticed a thread in the community forum).
  3. WordPress native Menu support ((already noticed a thread in the community forum).
  4. Toolset Types support (i already noticed some ACF threads in the community forum).

My own project requirements

  1. This is my “main job” and i will spend all my time and (financial) resources on it, so i have to make a living out of it.
  2. No matter how large the project is going to be in the future or where I’m staying in the world at the time, I have to be able to manage and develop the full stack on my own from my laptop.
  3. To be able to guarantee point 2, it must be heavily automated, so it must rely heavily on the open source community for e.g. updates.

Status

For now i’m learning the ins and outs of the Frontity Framework. I already did some beginner things with ReactJS, like building a Radio stream aggregator which automatically switches to the right song you love (filtered on genre, artist and energy level): https://www.youtube.com/watch?v=xprDBYBbVHM and i know WordPress well. In addition, I have the advantage that I already start with visitor traffic and turnover from my old network. So I hope to make progress soon and show you my custom Frontity theme.

I will update this topic over time to share knowledge/inspiration and i hope i will meet new Frontity enthousiasts along the way!

p.s.
I also designed the brand/ui etc. myself, hope you guys like it!

6 Likes

Thanks for sharing your project with the community @frankoonk! Looks super interesting :slight_smile:

Keep us updated on your progress.

I’m specially interested in this part. At first we thought that the settings should have their own package system and for that reason we created a separate package called file-settings. But now I’m thinking that maybe it’d be enough to make frontity.settings.js able to export an async function, so you can do whatever you want, for example, connect it with a database.

// frontity.settings.js
import { db } from "some-db-library";

export default async () => {
  await db.connect();
  const settings = await db.getSettings();
  return settings;
};

Apart from that, each time you add a new site you have to run npx frontity build again because Frontity needs to generate new client files for it. Is that something you can do?