What if we could :
- Create a marketplace, where developers can sell "app templates" for makers to clone and create new apps .
- Automatically set up a development environment, completely in the cloud, with a hot reloadable embedded preview, and the best cloud IDE on the market (Monaco Editor).
- Make the IDE collaborative so that multiple people could work on code simultaneously, just like Google Docs.
- Make it possible to have Visual Customization Controls (VCCs) that allow graphical abstraction of hypervariables, making it fast and easy to customize the app clone (without even touching code).
- Make deployment of full-stack Progressive Web Apps effortless, so that even non-techies can do it, with all kinds of sugar (custom domains, subdomains, plugin injection, automatic submission to aggregators and app stores, etc.)
- Create a community of developers (making app templates) and makers (cloning app templates and making apps).
Well, we have! It's called Koji, and it is growing.
We are looking for more developers to join our community and :
- Create new app templates
- Help makers (via collaboration) to modify or extend existing templates to meet their needs
This is just the beginning. Here are the current templates : https://gokoji.com/templates
Here is some press about our recent financing : https://venturebeat.com/2019/04/23/gometa-raises-6-million-and-launches-koji-web-app-development-platform/
Our tech stack
The Koji platform consists of several services that work together to present our users with a unified development/deployment pipeline. Generally, consumer frontends are written in React/ES6, and backends in Typescript (Express for REST APIs and native websockets for RTC). We use Redis as a message broker and Postgres as a persistent datastore. Our infrastructure is (mostly) on AWS.
The most visually-prominent consumer product is the Koji IDE, a web-based editor that connects to a remote development server and enables full-stack development from any device with a browser. The remote development server uses Docker to create a per-project environment that runs both the editor server (file writes, PTY operations, OT-based real-time collaboration, Git operations, etc.) and the processes/servers required for the user to develop their project (backend servers, frontend dev servers, test runners, etc).
Because Koji projects are staged in the cloud during development, the web editor’s live preview can be opened on any internet-connected device (without the need for ngrok, mobile device proxies, etc.). The editor provides some additional tools for easily testing backend routes and manipulating PTYs.
Koji projects are backend by Git repositories. By default, new projects use a Git remote hosted by Koji’s Git server, but projects can also use repositories hosted by third-parties as their remotes. The Koji deploy pipeline uses Git hooks to trigger new builds (build steps are defined by a JSON file within the project) and shows build progress, logs, and notifications inside the web editor. Projects can deploy static bundles or dynamic services that are compiled, containerized, and deployed using Google’s Cloud Run.
Once a project is deployed, it can be accessed by an auto-generated subdomain. From within the editor, users can also register a custom subdomain on one of our root domains (e.g., myproject.withkoji.com), or register a custom domain name and configure DNS to point that domain to our CDN. We take care of HTTPS provisioning, deployment, and renewal automatically with Let’s Encrypt, and all projects are accelerated with our CDN partner, Fastly.
The CDN that serves deployed projects can also inject plugins at runtime based on path/pattern matching, which lets users easily enable features like Open Graph tags (something that is typically difficult to do on client-side SPAs without SSR or services like Prerender) or integrate things like Google Analytics. The web editor also renders server access logs for deployed projects, giving users an easy way to understand traffic and growth without the need for any third-party analytics/tracking tools.