Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<h1 align="center">
<img src="assets/logo.svg" alt="JSON Canvas Viewer logo" width="280px">
<br />
SynthKernel
<br />
</h1>
Expand Down Expand Up @@ -27,7 +29,7 @@

## ❓ What is SynthKernel?

SynthKernel is a low-level system design approach for making clear and structured [modular monolith](https://www.geeksforgeeks.org/system-design/what-is-a-modular-monolith/) in **TypeScript**. It combines elements of Object Oriented Programming, advanced Type Generics in TypeScript, Facade Pattern, and aims to push the philosophy of **Inversion of Control** to it's extremum.
SynthKernel is a low-level system design approach for making clear and structured [modular monolith](https://www.geeksforgeeks.org/system-design/what-is-a-modular-monolith/) in **TypeScript**. It combines elements of _Object Oriented Programming_, _advanced Type Generics in TypeScript_, _Facade Pattern_, and aims to push the philosophy of **Inversion of Control** to it's extremum.

The simplest implementation of SynthKernel consists of a **central loader** and flat **modules**. Unlike other modularity conventions that design the loader to provide interfaces and APIs, the loader in SynthKernel only manages module loading and lifecycles, all actual functionalities are achieved by modules. Modules are the actual center of the entire application - they define APIs, execute real logic, augment the the loader class and wire each other via dependency injection. The module loader behaves as a lifecycle manager and a facade between complex internal logic and the application consumer.

Expand Down
158 changes: 158 additions & 0 deletions assets/logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 7 additions & 1 deletion skill/maintenance.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,13 @@ export class Module extends BaseModule<Options, Augmentation> {
}
```

### Step 3 Record References
### Step 3 Load Module and Record References

Now navigate to the loader file (typically `index.ts` in the same folder) and modify the modules array:

```TypeScript
const allModules = [(...ExistingModules), YourNewModule];
```

If you have write access to a project-wide memory system like `AGENTS.md`, find the `Project Architecture` section and update the tree structure to reflect your new module.

Expand Down
2 changes: 2 additions & 0 deletions whitepaper.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -900,6 +900,8 @@
"\n",
"You can adjust the options or log and alert more in the cell above to see what will happen. You can even remove `AlertDispatch` module from `allModules`, the logger will still work fine, you simply won't use any alerts.\n",
"\n",
"Moreover, with SynthKernel paradigm, the friction of adding a new module becomes trivial. You can even expose necessary types and the base module to the user to enable easy customization.\n",
"\n",
"## Final Words\n",
"\n",
"Isn't SynthKernel awesome? You've just seen a demo of how modules can work seamlessly together and removing a module even doesn't break anything. Everything is structured and clear, no more \"spaghetti\" created.\n",
Expand Down