Monorepo for all projects by RayBenefield


Keywords
nodejs, testing, npm, automation, company, solo, dx, monorepo, ci-cd, pomodoro, worklog, dex, transmutation, 10x, semcom
License
MIT
Install
npm install semcom@0.0.69

Documentation

KI/KD
Placeholder until a logo is designed

Dev XP

A Monorepo of projects reaching towards EPIC proportions, maintained by one person.

What is this?

Dev XP is a long term experiment featuring centered around a single question:

How close can a single developer get to Google scale development?

My name is Ray Benefield and I have a theory:

Entirely new and high quality open source SaaS platforms can be created in LESS than a week; by combining the world's understanding of software architecture, quality engineering, productivity, and project management with the currently available tools and services throughout the open source community.

From my point of view, this is a bold statement from anyone, but diving deeper it is also very "flimsy" in its claim. Sooo...

Clarifications

The following bits are made to sort of define a "range" of what I mean by each part of the above statement. They are not exact, not decisions, not solid reasoning, etc. This is an experiment after all and every part of this will constantly be changing as experience is gained.


End Product

I need to pseudo define "new and high quality open source SaaS platforms". Here's what my expectations are for a "complete" platform might look like:

  • Designed and developed API First to allow for integration opportunities
  • Open sourced codebase, enabling dedicated developers to assist in growth
  • Full multi-tenant solutions, maintaining users/organizations/etc. systems
  • Realtime and high performance website meeting PWA quality standards
  • Fire and forget persistence layer that is easy to scale with new features
  • Accept payments from a multiple vendors allowing monetization from day 1
  • Trivial to develop for the core developers to extend with new features

Again... not exactly what I'm shooting for, but I'm drawing a picture. Bare with me. ;)


Engineering

We have learned a LOT over the many decades of software development. Below are just some of the many principles that can enable our goal (no particular order or reason for these being list, just potential):

  • Modularity, Code Reuse, Extensibility, etc... you've heard of 'em
  • Benefits of Declarative vs Imperative for ease of development
  • Shared development tooling in the form of testing, scaffolding, etc.
  • The value of going 100% Open source with your entire codebase
  • Data processing patterns like Event Sourcing and Stream Programming
  • Principles like SOLID with dependency injection and open/closed
  • And sooo much more...

Some of those may not even be that important in the end, but the point is that we've learned a lot. Seriously...


Productivity

People are learning more and more ways to improve their productivity. Seriously... have you seen any of these TED talks or Youtube videos or articles. I mean Life Hacker is totally a thing.

  • Pomodoro Technique - 25 minute work sessions
  • Habit Building - Routines make long stretches of work easy
  • Standardization - When a group of tasks follow the same general rules
  • Planning/Roadmapping - Preparing your day, or knowing your next steps
  • Health Management - A healthy mind and body are absolutely important
  • Free Time - Cuz constantly working is not efficient
  • Automation - Well if a computer could do it for you, go for it

The idea here is that we have SOOO many ways to make time in this world.


Project/Product Management

Dem business savy people have learned a lot as well and a lot can be learned from the many approaches that have been taken over the decades. Expect many buzzwords... lol.

  • Agile Development... we all pretty much know this stuff
  • Interal Communication Management like how much, who, when, what, why?
  • The concept of Minimum Viable Product is a very powerful one
  • Lean Startup Methodology cuz less is more folks
  • Public Interaction for things like building relations with customers
  • Transparency in things like reasoning in decision making
  • Disaster Management because you can't escape failure

Not my strongest portion, but still very important.


Tools and Services

Have you seen the open source landscape? Do you know how many products are getting released every day? It is absolutely insane. So many of these can accelerate your progress.

  • Javascript can be used literally everywhere now thanks to Node.js
  • NPM is a massively growing repository of tools/libraries/frameworks
  • Platforms as a Service like AWS, Google Cloud, Azure
  • Functions as a Service like Lambda, Cloud Functions, etc.

The Road Ahead

NOTE: I don't expect the above goal to be achievable for a year or two.

In order to create SaaS platforms on a regular basis, a strong base needs to be built from an engineering perspective. The early work for this project is all based around creating the most streamlined development environment possible. Publishing new open source tools to accelerate engineering in other places will absolutely be needed. There are a lot of pieces to creating software so each of those pieces have to be slowly built on top of each other.

  1. Developing and releasing NPM packages should take less than a single Pomodoro
  2. More steps to come...

Released Projects

None at this time

Projects in Development