home.social

#javascriptdatabase — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #javascriptdatabase, aggregated by home.social.

fetched live
  1. 🥳 JSDB¹ 7.1.0 release

    Added:

    • `JSTable.CHANGE` event. Fires when a value is changed (set) in memory. Guaranteed to fire before the `JSTable.PERSIST` event.

    Full change log: codeberg.org/small-tech/jsdb/s

    To install: npm install @small-tech/jsdb@latest

    Enjoy!

    💕

    ¹ JSDB is a free and open source, zero-dependency, transparent, in-memory, streaming write-on-update JavaScript database for the Small Web that persists to a JavaScript transaction log.

    Find out more and grab the source at codeberg.org/small-tech/jsdb

    #JavaScriptDatabase #JSDB #SmallWeb #SmallTech

  2. 🥳 JSDB¹ 7.1.0 release

    Added:

    • `JSTable.CHANGE` event. Fires when a value is changed (set) in memory. Guaranteed to fire before the `JSTable.PERSIST` event.

    Full change log: codeberg.org/small-tech/jsdb/s

    To install: npm install @small-tech/jsdb@latest

    Enjoy!

    💕

    ¹ JSDB is a free and open source, zero-dependency, transparent, in-memory, streaming write-on-update JavaScript database for the Small Web that persists to a JavaScript transaction log.

    Find out more and grab the source at codeberg.org/small-tech/jsdb

    #JavaScriptDatabase #JSDB #SmallWeb #SmallTech

  3. 🥳 JSDB¹ 7.1.0 release

    Added:

    • `JSTable.CHANGE` event. Fires when a value is changed (set) in memory. Guaranteed to fire before the `JSTable.PERSIST` event.

    Full change log: codeberg.org/small-tech/jsdb/s

    To install: npm install @small-tech/jsdb@latest

    Enjoy!

    💕

    ¹ JSDB is a free and open source, zero-dependency, transparent, in-memory, streaming write-on-update JavaScript database for the Small Web that persists to a JavaScript transaction log.

    Find out more and grab the source at codeberg.org/small-tech/jsdb

    #JavaScriptDatabase #JSDB #SmallWeb #SmallTech

  4. 🥳 JSDB¹ 7.1.0 release

    Added:

    • `JSTable.CHANGE` event. Fires when a value is changed (set) in memory. Guaranteed to fire before the `JSTable.PERSIST` event.

    Full change log: codeberg.org/small-tech/jsdb/s

    To install: npm install @small-tech/jsdb@latest

    Enjoy!

    💕

    ¹ JSDB is a free and open source, zero-dependency, transparent, in-memory, streaming write-on-update JavaScript database for the Small Web that persists to a JavaScript transaction log.

    Find out more and grab the source at codeberg.org/small-tech/jsdb

    #JavaScriptDatabase #JSDB #SmallWeb #SmallTech

  5. 🥳 JSDB¹ 7.1.0 release

    Added:

    • `JSTable.CHANGE` event. Fires when a value is changed (set) in memory. Guaranteed to fire before the `JSTable.PERSIST` event.

    Full change log: codeberg.org/small-tech/jsdb/s

    To install: npm install @small-tech/jsdb@latest

    Enjoy!

    💕

    ¹ JSDB is a free and open source, zero-dependency, transparent, in-memory, streaming write-on-update JavaScript database for the Small Web that persists to a JavaScript transaction log.

    Find out more and grab the source at codeberg.org/small-tech/jsdb

    #JavaScriptDatabase #JSDB #SmallWeb #SmallTech

  6. 🥳 New JavaScript Database (JSDB) release

    • Fix: Now properly handling array indices on `JSTable.PERSIST` events in the `keypath` property that’s passed to the event handler.

    Just noticed that the pretty keypaths of the JavaScript deltas written to the append-only log were ignoring array indices while playing with a new database introspection call I’m adding to the Kitten Interactive Shell (REPL) and fixed it.

    I’ll be updating Kitten shortly to use this version of JSDB and I haven’t forgotten my promise to record a little video of the new Kitten Introspection API.

    Enjoy!

    💕

    codeberg.org/small-tech/jsdb#r

    #JavaScriptDatabase #javascript #database #JSDB #SmallTech #SmallWeb #NodeJS

  7. 🥳 New JavaScript Database (JSDB) release

    • Fix: Now properly handling array indices on `JSTable.PERSIST` events in the `keypath` property that’s passed to the event handler.

    Just noticed that the pretty keypaths of the JavaScript deltas written to the append-only log were ignoring array indices while playing with a new database introspection call I’m adding to the Kitten Interactive Shell (REPL) and fixed it.

    I’ll be updating Kitten shortly to use this version of JSDB and I haven’t forgotten my promise to record a little video of the new Kitten Introspection API.

    Enjoy!

    💕

    codeberg.org/small-tech/jsdb#r

    #JavaScriptDatabase #javascript #database #JSDB #SmallTech #SmallWeb #NodeJS

  8. 🥳 New JavaScript Database (JSDB) release

    • Fix: Now properly handling array indices on `JSTable.PERSIST` events in the `keypath` property that’s passed to the event handler.

    Just noticed that the pretty keypaths of the JavaScript deltas written to the append-only log were ignoring array indices while playing with a new database introspection call I’m adding to the Kitten Interactive Shell (REPL) and fixed it.

    I’ll be updating Kitten shortly to use this version of JSDB and I haven’t forgotten my promise to record a little video of the new Kitten Introspection API.

    Enjoy!

    💕

    codeberg.org/small-tech/jsdb#r

    #JavaScriptDatabase #javascript #database #JSDB #SmallTech #SmallWeb #NodeJS

  9. 🥳 New JavaScript Database (JSDB) release

    • Fix: Now properly handling array indices on `JSTable.PERSIST` events in the `keypath` property that’s passed to the event handler.

    Just noticed that the pretty keypaths of the JavaScript deltas written to the append-only log were ignoring array indices while playing with a new database introspection call I’m adding to the Kitten Interactive Shell (REPL) and fixed it.

    I’ll be updating Kitten shortly to use this version of JSDB and I haven’t forgotten my promise to record a little video of the new Kitten Introspection API.

    Enjoy!

    💕

    codeberg.org/small-tech/jsdb#r

    #JavaScriptDatabase #javascript #database #JSDB #SmallTech #SmallWeb #NodeJS

  10. 🥳 New JavaScript Database (JSDB) release

    • Fix: Now properly handling array indices on `JSTable.PERSIST` events in the `keypath` property that’s passed to the event handler.

    Just noticed that the pretty keypaths of the JavaScript deltas written to the append-only log were ignoring array indices while playing with a new database introspection call I’m adding to the Kitten Interactive Shell (REPL) and fixed it.

    I’ll be updating Kitten shortly to use this version of JSDB and I haven’t forgotten my promise to record a little video of the new Kitten Introspection API.

    Enjoy!

    💕

    codeberg.org/small-tech/jsdb#r

    #JavaScriptDatabase #javascript #database #JSDB #SmallTech #SmallWeb #NodeJS

  11. 🥳 New Kitten release

    Just released a new version of Kitten that now includes JSDB 7.0.0 with its improved JSTable.PERSIST event.

    kitten.small-web.org

    Note that this is a breaking change. If you’re listening for the old 'persist' event, please update your code.

    For more information, please see the changelog: codeberg.org/kitten/app/src/br

    Enjoy!

    :kitten: 💕

    #SmallWeb #SmallTech #Kitten #KittenReleases #web #dev #JavaScriptDatabase #JSDB #NodeJS

  12. 🥳 New Kitten release

    Just released a new version of Kitten that now includes JSDB 7.0.0 with its improved JSTable.PERSIST event.

    kitten.small-web.org

    Note that this is a breaking change. If you’re listening for the old 'persist' event, please update your code.

    For more information, please see the changelog: codeberg.org/kitten/app/src/br

    Enjoy!

    :kitten: 💕

    #SmallWeb #SmallTech #Kitten #KittenReleases #web #dev #JavaScriptDatabase #JSDB #NodeJS

  13. 🥳 New Kitten release

    Just released a new version of Kitten that now includes JSDB 7.0.0 with its improved JSTable.PERSIST event.

    kitten.small-web.org

    Note that this is a breaking change. If you’re listening for the old 'persist' event, please update your code.

    For more information, please see the changelog: codeberg.org/kitten/app/src/br

    Enjoy!

    :kitten: 💕

    #SmallWeb #SmallTech #Kitten #KittenReleases #web #dev #JavaScriptDatabase #JSDB #NodeJS

  14. 🥳 New Kitten release

    Just released a new version of Kitten that now includes JSDB 7.0.0 with its improved JSTable.PERSIST event.

    kitten.small-web.org

    Note that this is a breaking change. If you’re listening for the old 'persist' event, please update your code.

    For more information, please see the changelog: codeberg.org/kitten/app/src/br

    Enjoy!

    :kitten: 💕

    #SmallWeb #SmallTech #Kitten #KittenReleases #web #dev #JavaScriptDatabase #JSDB #NodeJS

  15. 🥳 New Kitten release

    Just released a new version of Kitten that now includes JSDB 7.0.0 with its improved JSTable.PERSIST event.

    kitten.small-web.org

    Note that this is a breaking change. If you’re listening for the old 'persist' event, please update your code.

    For more information, please see the changelog: codeberg.org/kitten/app/src/br

    Enjoy!

    :kitten: 💕

    #SmallWeb #SmallTech #Kitten #KittenReleases #web #dev #JavaScriptDatabase #JSDB #NodeJS

  16. 🥳 JavaScript Database (JSDB)¹ version 7.0.0 released

    - *Breaking change* JSTable.PERSIST event now uses a parameter object with properties for `type`, `keypath`, `value`, `change`, and `table`. This should make listening for events on your databases much nicer to author. e.g., a snippet from Catalyst² I’m working on:

    ```js
    const settingsTable = db.settings['__table__']
    const JSTable = settingsTable.constructor

    settingsTable.addListener(JSTable.PERSIST, ({ keypath, value }) => {
    switch (keypath) {
    case 'servers.serverPoolSize':
    console.info('New server pool size requested', value)
    this.updateServerPool()
    break
    // etc.
    }
    })
    ```

    This new version of JSDB is not in the latest Kitten³ yet as it is a breaking change and I want to make sure I update my sites/apps first if needed. I should have it integrated tomorrow.

    To see the simple use case for JSDB in Kitten (the default untyped database that’s easy to get started with and perfect for quick experiments, little sites, etc.), see: kitten.small-web.org/tutorials

    For a more advanced tutorial for creating your own typed databases in Kitten, see the Database App Modules tutorial: kitten.small-web.org/tutorials

    For another example, see: codeberg.org/small-tech/jsdb/#

    Full change log: codeberg.org/small-tech/jsdb/s

    Enjoy!

    💕

    ¹ codeberg.org/small-tech/jsdb#r
    ² catalyst.small-web.org
    ³ kitten.small-web.org

    #JavaScriptDatabase #JavaScript #appendOnlyLog #JS #JSDB #JSDBUpdates #SmallTech #SmallWeb #Kitten #Catalyst

  17. 🥳 JavaScript Database (JSDB)¹ version 7.0.0 released

    - *Breaking change* JSTable.PERSIST event now uses a parameter object with properties for `type`, `keypath`, `value`, `change`, and `table`. This should make listening for events on your databases much nicer to author. e.g., a snippet from Catalyst² I’m working on:

    ```js
    const settingsTable = db.settings['__table__']
    const JSTable = settingsTable.constructor

    settingsTable.addListener(JSTable.PERSIST, ({ keypath, value }) => {
    switch (keypath) {
    case 'servers.serverPoolSize':
    console.info('New server pool size requested', value)
    this.updateServerPool()
    break
    // etc.
    }
    })
    ```

    This new version of JSDB is not in the latest Kitten³ yet as it is a breaking change and I want to make sure I update my sites/apps first if needed. I should have it integrated tomorrow.

    To see the simple use case for JSDB in Kitten (the default untyped database that’s easy to get started with and perfect for quick experiments, little sites, etc.), see: kitten.small-web.org/tutorials

    For a more advanced tutorial for creating your own typed databases in Kitten, see the Database App Modules tutorial: kitten.small-web.org/tutorials

    For another example, see: codeberg.org/small-tech/jsdb/#

    Full change log: codeberg.org/small-tech/jsdb/s

    Enjoy!

    💕

    ¹ codeberg.org/small-tech/jsdb#r
    ² catalyst.small-web.org
    ³ kitten.small-web.org

    #JavaScriptDatabase #JavaScript #appendOnlyLog #JS #JSDB #JSDBUpdates #SmallTech #SmallWeb #Kitten #Catalyst

  18. 🥳 JavaScript Database (JSDB)¹ version 7.0.0 released

    - *Breaking change* JSTable.PERSIST event now uses a parameter object with properties for `type`, `keypath`, `value`, `change`, and `table`. This should make listening for events on your databases much nicer to author. e.g., a snippet from Catalyst² I’m working on:

    ```js
    const settingsTable = db.settings['__table__']
    const JSTable = settingsTable.constructor

    settingsTable.addListener(JSTable.PERSIST, ({ keypath, value }) => {
    switch (keypath) {
    case 'servers.serverPoolSize':
    console.info('New server pool size requested', value)
    this.updateServerPool()
    break
    // etc.
    }
    })
    ```

    This new version of JSDB is not in the latest Kitten³ yet as it is a breaking change and I want to make sure I update my sites/apps first if needed. I should have it integrated tomorrow.

    To see the simple use case for JSDB in Kitten (the default untyped database that’s easy to get started with and perfect for quick experiments, little sites, etc.), see: kitten.small-web.org/tutorials

    For a more advanced tutorial for creating your own typed databases in Kitten, see the Database App Modules tutorial: kitten.small-web.org/tutorials

    For another example, see: codeberg.org/small-tech/jsdb/#

    Full change log: codeberg.org/small-tech/jsdb/s

    Enjoy!

    💕

    ¹ codeberg.org/small-tech/jsdb#r
    ² catalyst.small-web.org
    ³ kitten.small-web.org

    #JavaScriptDatabase #JavaScript #appendOnlyLog #JS #JSDB #JSDBUpdates #SmallTech #SmallWeb #Kitten #Catalyst

  19. 🥳 JavaScript Database (JSDB)¹ version 7.0.0 released

    - *Breaking change* JSTable.PERSIST event now uses a parameter object with properties for `type`, `keypath`, `value`, `change`, and `table`. This should make listening for events on your databases much nicer to author. e.g., a snippet from Catalyst² I’m working on:

    ```js
    const settingsTable = db.settings['__table__']
    const JSTable = settingsTable.constructor

    settingsTable.addListener(JSTable.PERSIST, ({ keypath, value }) => {
    switch (keypath) {
    case 'servers.serverPoolSize':
    console.info('New server pool size requested', value)
    this.updateServerPool()
    break
    // etc.
    }
    })
    ```

    This new version of JSDB is not in the latest Kitten³ yet as it is a breaking change and I want to make sure I update my sites/apps first if needed. I should have it integrated tomorrow.

    To see the simple use case for JSDB in Kitten (the default untyped database that’s easy to get started with and perfect for quick experiments, little sites, etc.), see: kitten.small-web.org/tutorials

    For a more advanced tutorial for creating your own typed databases in Kitten, see the Database App Modules tutorial: kitten.small-web.org/tutorials

    For another example, see: codeberg.org/small-tech/jsdb/#

    Full change log: codeberg.org/small-tech/jsdb/s

    Enjoy!

    💕

    ¹ codeberg.org/small-tech/jsdb#r
    ² catalyst.small-web.org
    ³ kitten.small-web.org

    #JavaScriptDatabase #JavaScript #appendOnlyLog #JS #JSDB #JSDBUpdates #SmallTech #SmallWeb #Kitten #Catalyst

  20. 🥳 JavaScript Database (JSDB)¹ version 7.0.0 released

    - *Breaking change* JSTable.PERSIST event now uses a parameter object with properties for `type`, `keypath`, `value`, `change`, and `table`. This should make listening for events on your databases much nicer to author. e.g., a snippet from Catalyst² I’m working on:

    ```js
    const settingsTable = db.settings['__table__']
    const JSTable = settingsTable.constructor

    settingsTable.addListener(JSTable.PERSIST, ({ keypath, value }) => {
    switch (keypath) {
    case 'servers.serverPoolSize':
    console.info('New server pool size requested', value)
    this.updateServerPool()
    break
    // etc.
    }
    })
    ```

    This new version of JSDB is not in the latest Kitten³ yet as it is a breaking change and I want to make sure I update my sites/apps first if needed. I should have it integrated tomorrow.

    To see the simple use case for JSDB in Kitten (the default untyped database that’s easy to get started with and perfect for quick experiments, little sites, etc.), see: kitten.small-web.org/tutorials

    For a more advanced tutorial for creating your own typed databases in Kitten, see the Database App Modules tutorial: kitten.small-web.org/tutorials

    For another example, see: codeberg.org/small-tech/jsdb/#

    Full change log: codeberg.org/small-tech/jsdb/s

    Enjoy!

    💕

    ¹ codeberg.org/small-tech/jsdb#r
    ² catalyst.small-web.org
    ³ kitten.small-web.org

    #JavaScriptDatabase #JavaScript #appendOnlyLog #JS #JSDB #JSDBUpdates #SmallTech #SmallWeb #Kitten #Catalyst

  21. 🥳 JavaScript Database (JSDB) version 6.1.4 released:

    • Adds TypeScript type definitions

    Been meaning to do this for a while and finally got round to it :)

    codeberg.org/small-tech/jsdb#j

    #JavaScript #database #JavaScriptDatabase #JSDB #native #data #web #dev #NodeJS #SmallWeb

  22. 🥳 JavaScript Database (JSDB) version 6.1.4 released:

    • Adds TypeScript type definitions

    Been meaning to do this for a while and finally got round to it :)

    codeberg.org/small-tech/jsdb#j

    #JavaScript #database #JavaScriptDatabase #JSDB #native #data #web #dev #NodeJS #SmallWeb

  23. 🥳 JavaScript Database (JSDB) version 6.1.4 released:

    • Adds TypeScript type definitions

    Been meaning to do this for a while and finally got round to it :)

    codeberg.org/small-tech/jsdb#j

    #JavaScript #database #JavaScriptDatabase #JSDB #native #data #web #dev #NodeJS #SmallWeb

  24. 🥳 JavaScript Database (JSDB) version 6.1.4 released:

    • Adds TypeScript type definitions

    Been meaning to do this for a while and finally got round to it :)

    codeberg.org/small-tech/jsdb#j

    #JavaScript #database #JavaScriptDatabase #JSDB #native #data #web #dev #NodeJS #SmallWeb

  25. 🥳 JavaScript Database (JSDB) version 6.1.4 released:

    • Adds TypeScript type definitions

    Been meaning to do this for a while and finally got round to it :)

    codeberg.org/small-tech/jsdb#j

    #JavaScript #database #JavaScriptDatabase #JSDB #native #data #web #dev #NodeJS #SmallWeb

  26. I haven’t added an example of how you implement migrations with Kitten’s¹ built-in JSDB database² yet but here’s one that I just used when renaming a field (property) in a table (JavaScript object) from “account” to “data” that illustrates the general granular approach you should take within persisted instances of JavaScript classes.

    This is, of course, an advanced use case of the built-in JavaScript database that all Kitten apps have.

    Kitten is simple for simple use cases. So check out the Persistence tutorial, for example, to see how easy it is to get started with JSDB in Kitten:

    kitten.small-web.org/tutorials

    And see the Database App Modules tutorial for a more advanced usage where you persist instances of JavaScript classes and have full type safety:

    kitten.small-web.org/tutorials

    ¹ kitten.small-web.org
    ² codeberg.org/small-tech/jsdb

    #Kitten #SmallWeb #SmallTech #web #dev #persistence #JavaScript #database #JavaScriptDatabase #authoring #migrations

  27. I haven’t added an example of how you implement migrations with Kitten’s¹ built-in JSDB database² yet but here’s one that I just used when renaming a field (property) in a table (JavaScript object) from “account” to “data” that illustrates the general granular approach you should take within persisted instances of JavaScript classes.

    This is, of course, an advanced use case of the built-in JavaScript database that all Kitten apps have.

    Kitten is simple for simple use cases. So check out the Persistence tutorial, for example, to see how easy it is to get started with JSDB in Kitten:

    kitten.small-web.org/tutorials

    And see the Database App Modules tutorial for a more advanced usage where you persist instances of JavaScript classes and have full type safety:

    kitten.small-web.org/tutorials

    ¹ kitten.small-web.org
    ² codeberg.org/small-tech/jsdb

    #Kitten #SmallWeb #SmallTech #web #dev #persistence #JavaScript #database #JavaScriptDatabase #authoring #migrations

  28. I haven’t added an example of how you implement migrations with Kitten’s¹ built-in JSDB database² yet but here’s one that I just used when renaming a field (property) in a table (JavaScript object) from “account” to “data” that illustrates the general granular approach you should take within persisted instances of JavaScript classes.

    This is, of course, an advanced use case of the built-in JavaScript database that all Kitten apps have.

    Kitten is simple for simple use cases. So check out the Persistence tutorial, for example, to see how easy it is to get started with JSDB in Kitten:

    kitten.small-web.org/tutorials

    And see the Database App Modules tutorial for a more advanced usage where you persist instances of JavaScript classes and have full type safety:

    kitten.small-web.org/tutorials

    ¹ kitten.small-web.org
    ² codeberg.org/small-tech/jsdb

    #Kitten #SmallWeb #SmallTech #web #dev #persistence #JavaScript #database #JavaScriptDatabase #authoring #migrations

  29. I haven’t added an example of how you implement migrations with Kitten’s¹ built-in JSDB database² yet but here’s one that I just used when renaming a field (property) in a table (JavaScript object) from “account” to “data” that illustrates the general granular approach you should take within persisted instances of JavaScript classes.

    This is, of course, an advanced use case of the built-in JavaScript database that all Kitten apps have.

    Kitten is simple for simple use cases. So check out the Persistence tutorial, for example, to see how easy it is to get started with JSDB in Kitten:

    kitten.small-web.org/tutorials

    And see the Database App Modules tutorial for a more advanced usage where you persist instances of JavaScript classes and have full type safety:

    kitten.small-web.org/tutorials

    ¹ kitten.small-web.org
    ² codeberg.org/small-tech/jsdb

    #Kitten #SmallWeb #SmallTech #web #dev #persistence #JavaScript #database #JavaScriptDatabase #authoring #migrations

  30. I haven’t added an example of how you implement migrations with Kitten’s¹ built-in JSDB database² yet but here’s one that I just used when renaming a field (property) in a table (JavaScript object) from “account” to “data” that illustrates the general granular approach you should take within persisted instances of JavaScript classes.

    This is, of course, an advanced use case of the built-in JavaScript database that all Kitten apps have.

    Kitten is simple for simple use cases. So check out the Persistence tutorial, for example, to see how easy it is to get started with JSDB in Kitten:

    kitten.small-web.org/tutorials

    And see the Database App Modules tutorial for a more advanced usage where you persist instances of JavaScript classes and have full type safety:

    kitten.small-web.org/tutorials

    ¹ kitten.small-web.org
    ² codeberg.org/small-tech/jsdb

    #Kitten #SmallWeb #SmallTech #web #dev #persistence #JavaScript #database #JavaScriptDatabase #authoring #migrations

  31. 👋🤓 Goodbye Site.js, Hello Kitten!

    I started working on creating a Small Web¹ server (a peer-to-peer Web server) six years ago² with Site.js.

    Building Site.js was my first attempt. And it resulted in:

    • Auto Encrypt (automatic Let’s Encrypt certificates): codeberg.org/small-tech/auto-e

    • Auto Encrypt Localhost (automatic localhost TLS certificates): codeberg.org/small-tech/auto-e

    • @small-tech/https (drop-in Node.js https module replacement with automatic TLS certs everywhere): codeberg.org/small-tech/https

    • JSDB: In-process, in-memory JavaScript database that persists to append-only JavaScript logs: codeberg.org/small-tech/jsdb

    As Site.js reached an evolutionary dead-end, and as I learned from my experiements with replicated data types that replicated data types are *not* a prerequisite for a decentralised web (actual topological decentralisation and ease of use are), I started writing a new server/platform called Kitten from scratch while still making use of the tried and tested modules listed above.

    Last week, I switched over our last site using Site.js to Kitten and, with that, today I’ve sunset³ Site.js:

    sitejs.org

    For its successor, please see Kitten:

    kitten.small-web.org

    If you want to support our work at the Small Technology Foundation, please consider becoming a patron:

    small-tech.org/fund-us

    :kitten:💕

    ¹ ar.al/2024/06/24/small-web-com
    ² ar.al/2019/08/26/introducing-s
    ³ Using our instance of Look Over There!: look-over-there.small-web.org

    #SiteJS #SmallWeb #SmallTech #peerToPeerWeb #SmallTechnologyFoundation #AutoEncrypt #AutoEncryptLocalhost #JSDB #JavaScriptDatabase #https #TLS

  32. 👋🤓 Goodbye Site.js, Hello Kitten!

    I started working on creating a Small Web¹ server (a peer-to-peer Web server) six years ago² with Site.js.

    Building Site.js was my first attempt. And it resulted in:

    • Auto Encrypt (automatic Let’s Encrypt certificates): codeberg.org/small-tech/auto-e

    • Auto Encrypt Localhost (automatic localhost TLS certificates): codeberg.org/small-tech/auto-e

    • @small-tech/https (drop-in Node.js https module replacement with automatic TLS certs everywhere): codeberg.org/small-tech/https

    • JSDB: In-process, in-memory JavaScript database that persists to append-only JavaScript logs: codeberg.org/small-tech/jsdb

    As Site.js reached an evolutionary dead-end, and as I learned from my experiements with replicated data types that replicated data types are *not* a prerequisite for a decentralised web (actual topological decentralisation and ease of use are), I started writing a new server/platform called Kitten from scratch while still making use of the tried and tested modules listed above.

    Last week, I switched over our last site using Site.js to Kitten and, with that, today I’ve sunset³ Site.js:

    sitejs.org

    For its successor, please see Kitten:

    kitten.small-web.org

    If you want to support our work at the Small Technology Foundation, please consider becoming a patron:

    small-tech.org/fund-us

    :kitten:💕

    ¹ ar.al/2024/06/24/small-web-com
    ² ar.al/2019/08/26/introducing-s
    ³ Using our instance of Look Over There!: look-over-there.small-web.org

    #SiteJS #SmallWeb #SmallTech #peerToPeerWeb #SmallTechnologyFoundation #AutoEncrypt #AutoEncryptLocalhost #JSDB #JavaScriptDatabase #https #TLS

  33. 👋🤓 Goodbye Site.js, Hello Kitten!

    I started working on creating a Small Web¹ server (a peer-to-peer Web server) six years ago² with Site.js.

    Building Site.js was my first attempt. And it resulted in:

    • Auto Encrypt (automatic Let’s Encrypt certificates): codeberg.org/small-tech/auto-e

    • Auto Encrypt Localhost (automatic localhost TLS certificates): codeberg.org/small-tech/auto-e

    • @small-tech/https (drop-in Node.js https module replacement with automatic TLS certs everywhere): codeberg.org/small-tech/https

    • JSDB: In-process, in-memory JavaScript database that persists to append-only JavaScript logs: codeberg.org/small-tech/jsdb

    As Site.js reached an evolutionary dead-end, and as I learned from my experiements with replicated data types that replicated data types are *not* a prerequisite for a decentralised web (actual topological decentralisation and ease of use are), I started writing a new server/platform called Kitten from scratch while still making use of the tried and tested modules listed above.

    Last week, I switched over our last site using Site.js to Kitten and, with that, today I’ve sunset³ Site.js:

    sitejs.org

    For its successor, please see Kitten:

    kitten.small-web.org

    If you want to support our work at the Small Technology Foundation, please consider becoming a patron:

    small-tech.org/fund-us

    :kitten:💕

    ¹ ar.al/2024/06/24/small-web-com
    ² ar.al/2019/08/26/introducing-s
    ³ Using our instance of Look Over There!: look-over-there.small-web.org

    #SiteJS #SmallWeb #SmallTech #peerToPeerWeb #SmallTechnologyFoundation #AutoEncrypt #AutoEncryptLocalhost #JSDB #JavaScriptDatabase #https #TLS

  34. 👋🤓 Goodbye Site.js, Hello Kitten!

    I started working on creating a Small Web¹ server (a peer-to-peer Web server) six years ago² with Site.js.

    Building Site.js was my first attempt. And it resulted in:

    • Auto Encrypt (automatic Let’s Encrypt certificates): codeberg.org/small-tech/auto-e

    • Auto Encrypt Localhost (automatic localhost TLS certificates): codeberg.org/small-tech/auto-e

    • @small-tech/https (drop-in Node.js https module replacement with automatic TLS certs everywhere): codeberg.org/small-tech/https

    • JSDB: In-process, in-memory JavaScript database that persists to append-only JavaScript logs: codeberg.org/small-tech/jsdb

    As Site.js reached an evolutionary dead-end, and as I learned from my experiements with replicated data types that replicated data types are *not* a prerequisite for a decentralised web (actual topological decentralisation and ease of use are), I started writing a new server/platform called Kitten from scratch while still making use of the tried and tested modules listed above.

    Last week, I switched over our last site using Site.js to Kitten and, with that, today I’ve sunset³ Site.js:

    sitejs.org

    For its successor, please see Kitten:

    kitten.small-web.org

    If you want to support our work at the Small Technology Foundation, please consider becoming a patron:

    small-tech.org/fund-us

    :kitten:💕

    ¹ ar.al/2024/06/24/small-web-com
    ² ar.al/2019/08/26/introducing-s
    ³ Using our instance of Look Over There!: look-over-there.small-web.org

    #SiteJS #SmallWeb #SmallTech #peerToPeerWeb #SmallTechnologyFoundation #AutoEncrypt #AutoEncryptLocalhost #JSDB #JavaScriptDatabase #https #TLS

  35. 👋🤓 Goodbye Site.js, Hello Kitten!

    I started working on creating a Small Web¹ server (a peer-to-peer Web server) six years ago² with Site.js.

    Building Site.js was my first attempt. And it resulted in:

    • Auto Encrypt (automatic Let’s Encrypt certificates): codeberg.org/small-tech/auto-e

    • Auto Encrypt Localhost (automatic localhost TLS certificates): codeberg.org/small-tech/auto-e

    • @small-tech/https (drop-in Node.js https module replacement with automatic TLS certs everywhere): codeberg.org/small-tech/https

    • JSDB: In-process, in-memory JavaScript database that persists to append-only JavaScript logs: codeberg.org/small-tech/jsdb

    As Site.js reached an evolutionary dead-end, and as I learned from my experiements with replicated data types that replicated data types are *not* a prerequisite for a decentralised web (actual topological decentralisation and ease of use are), I started writing a new server/platform called Kitten from scratch while still making use of the tried and tested modules listed above.

    Last week, I switched over our last site using Site.js to Kitten and, with that, today I’ve sunset³ Site.js:

    sitejs.org

    For its successor, please see Kitten:

    kitten.small-web.org

    If you want to support our work at the Small Technology Foundation, please consider becoming a patron:

    small-tech.org/fund-us

    :kitten:💕

    ¹ ar.al/2024/06/24/small-web-com
    ² ar.al/2019/08/26/introducing-s
    ³ Using our instance of Look Over There!: look-over-there.small-web.org

    #SiteJS #SmallWeb #SmallTech #peerToPeerWeb #SmallTechnologyFoundation #AutoEncrypt #AutoEncryptLocalhost #JSDB #JavaScriptDatabase #https #TLS

  36. 🔒 New Kitten & JSDB Releases

    Security fix, JSDB 6.0.1.

    This is a critical update.

    • JSDB¹ versions 6.0.0 and below suffer from potential data corruption/arbitrary code execution as string keys were not being sanitised in the same way string values were² (so this is relevant to you if you’re storing untrusted data as keys in your data structures in JSDB and/or Kitten databases without carrying out any of your own sanitisation at the application level).

    • The latest Kitten release uses JSDB version 6.0.1. Your deployment servers will automatically update in the next few hours. On your development machines, please run `kitten update` in your terminal or use the Update feature in Kitten Settings from your browser.

    • If you are using Kitten’s Database App Modules³ feature in your apps, you will have installed JSDB manually and you should update your installation to version 6.0.1.

    ¹ codeberg.org/small-tech/jsdb/
    ² codeberg.org/small-tech/jsdb/i
    ³ kitten.small-web.org/reference

    #Kitten #SmallWeb #JSDB #JavaScriptDatabase #KittenRelease #JSDBRelease #securityUpdate #criticalUpdate

  37. 🔒 New Kitten & JSDB Releases

    Security fix, JSDB 6.0.1.

    This is a critical update.

    • JSDB¹ versions 6.0.0 and below suffer from potential data corruption/arbitrary code execution as string keys were not being sanitised in the same way string values were² (so this is relevant to you if you’re storing untrusted data as keys in your data structures in JSDB and/or Kitten databases without carrying out any of your own sanitisation at the application level).

    • The latest Kitten release uses JSDB version 6.0.1. Your deployment servers will automatically update in the next few hours. On your development machines, please run `kitten update` in your terminal or use the Update feature in Kitten Settings from your browser.

    • If you are using Kitten’s Database App Modules³ feature in your apps, you will have installed JSDB manually and you should update your installation to version 6.0.1.

    ¹ codeberg.org/small-tech/jsdb/
    ² codeberg.org/small-tech/jsdb/i
    ³ kitten.small-web.org/reference

    #Kitten #SmallWeb #JSDB #JavaScriptDatabase #KittenRelease #JSDBRelease #securityUpdate #criticalUpdate

  38. 🔒 New Kitten & JSDB Releases

    Security fix, JSDB 6.0.1.

    This is a critical update.

    • JSDB¹ versions 6.0.0 and below suffer from potential data corruption/arbitrary code execution as string keys were not being sanitised in the same way string values were² (so this is relevant to you if you’re storing untrusted data as keys in your data structures in JSDB and/or Kitten databases without carrying out any of your own sanitisation at the application level).

    • The latest Kitten release uses JSDB version 6.0.1. Your deployment servers will automatically update in the next few hours. On your development machines, please run `kitten update` in your terminal or use the Update feature in Kitten Settings from your browser.

    • If you are using Kitten’s Database App Modules³ feature in your apps, you will have installed JSDB manually and you should update your installation to version 6.0.1.

    ¹ codeberg.org/small-tech/jsdb/
    ² codeberg.org/small-tech/jsdb/i
    ³ kitten.small-web.org/reference

    #Kitten #SmallWeb #JSDB #JavaScriptDatabase #KittenRelease #JSDBRelease #securityUpdate #criticalUpdate

  39. 🔒 New Kitten & JSDB Releases

    Security fix, JSDB 6.0.1.

    This is a critical update.

    • JSDB¹ versions 6.0.0 and below suffer from potential data corruption/arbitrary code execution as string keys were not being sanitised in the same way string values were² (so this is relevant to you if you’re storing untrusted data as keys in your data structures in JSDB and/or Kitten databases without carrying out any of your own sanitisation at the application level).

    • The latest Kitten release uses JSDB version 6.0.1. Your deployment servers will automatically update in the next few hours. On your development machines, please run `kitten update` in your terminal or use the Update feature in Kitten Settings from your browser.

    • If you are using Kitten’s Database App Modules³ feature in your apps, you will have installed JSDB manually and you should update your installation to version 6.0.1.

    ¹ codeberg.org/small-tech/jsdb/
    ² codeberg.org/small-tech/jsdb/i
    ³ kitten.small-web.org/reference

    #Kitten #SmallWeb #JSDB #JavaScriptDatabase #KittenRelease #JSDBRelease #securityUpdate #criticalUpdate

  40. 🔒 New Kitten & JSDB Releases

    Security fix, JSDB 6.0.1.

    This is a critical update.

    • JSDB¹ versions 6.0.0 and below suffer from potential data corruption/arbitrary code execution as string keys were not being sanitised in the same way string values were² (so this is relevant to you if you’re storing untrusted data as keys in your data structures in JSDB and/or Kitten databases without carrying out any of your own sanitisation at the application level).

    • The latest Kitten release uses JSDB version 6.0.1. Your deployment servers will automatically update in the next few hours. On your development machines, please run `kitten update` in your terminal or use the Update feature in Kitten Settings from your browser.

    • If you are using Kitten’s Database App Modules³ feature in your apps, you will have installed JSDB manually and you should update your installation to version 6.0.1.

    ¹ codeberg.org/small-tech/jsdb/
    ² codeberg.org/small-tech/jsdb/i
    ³ kitten.small-web.org/reference

    #Kitten #SmallWeb #JSDB #JavaScriptDatabase #KittenRelease #JSDBRelease #securityUpdate #criticalUpdate

  41. New Kitten release

    • Fixes #236¹: The data preview pages in Kitten’s settings how handle circular references in the deserialised data (which may contain your custom classes if that’s what you were persisting in the database).

    kitten.small-web.org

    :kitten:💕

    PS. Those pages are very rudimentary at the moment and are good for getting quick visual overview of the data you’re persisting. For a fully interactive view, use Kitten’s interactive shell (REPL)² to explore your data until I’ve had a chance to implement a more comprehensive visual interface.

    PPS. You persist data in Kitten using the built-in JavaScript Database (JSDB)³ (Or, of course, you can install and use any other database.)

    ¹ codeberg.org/kitten/app/issues
    ² kitten.small-web.org/reference
    ³ codeberg.org/small-tech/jsdb#j

    #Kitten #SmallWeb #update #changes #database #JavaScriptDatabase #JSDB #javascript #nodeJS #web #dev

  42. New Kitten release

    • Fixes #236¹: The data preview pages in Kitten’s settings how handle circular references in the deserialised data (which may contain your custom classes if that’s what you were persisting in the database).

    kitten.small-web.org

    :kitten:💕

    PS. Those pages are very rudimentary at the moment and are good for getting quick visual overview of the data you’re persisting. For a fully interactive view, use Kitten’s interactive shell (REPL)² to explore your data until I’ve had a chance to implement a more comprehensive visual interface.

    PPS. You persist data in Kitten using the built-in JavaScript Database (JSDB)³ (Or, of course, you can install and use any other database.)

    ¹ codeberg.org/kitten/app/issues
    ² kitten.small-web.org/reference
    ³ codeberg.org/small-tech/jsdb#j

    #Kitten #SmallWeb #update #changes #database #JavaScriptDatabase #JSDB #javascript #nodeJS #web #dev

  43. New Kitten release

    • Fixes #236¹: The data preview pages in Kitten’s settings how handle circular references in the deserialised data (which may contain your custom classes if that’s what you were persisting in the database).

    kitten.small-web.org

    :kitten:💕

    PS. Those pages are very rudimentary at the moment and are good for getting quick visual overview of the data you’re persisting. For a fully interactive view, use Kitten’s interactive shell (REPL)² to explore your data until I’ve had a chance to implement a more comprehensive visual interface.

    PPS. You persist data in Kitten using the built-in JavaScript Database (JSDB)³ (Or, of course, you can install and use any other database.)

    ¹ codeberg.org/kitten/app/issues
    ² kitten.small-web.org/reference
    ³ codeberg.org/small-tech/jsdb#j

    #Kitten #SmallWeb #update #changes #database #JavaScriptDatabase #JSDB #javascript #nodeJS #web #dev

  44. New Kitten release

    • Fixes #236¹: The data preview pages in Kitten’s settings how handle circular references in the deserialised data (which may contain your custom classes if that’s what you were persisting in the database).

    kitten.small-web.org

    :kitten:💕

    PS. Those pages are very rudimentary at the moment and are good for getting quick visual overview of the data you’re persisting. For a fully interactive view, use Kitten’s interactive shell (REPL)² to explore your data until I’ve had a chance to implement a more comprehensive visual interface.

    PPS. You persist data in Kitten using the built-in JavaScript Database (JSDB)³ (Or, of course, you can install and use any other database.)

    ¹ codeberg.org/kitten/app/issues
    ² kitten.small-web.org/reference
    ³ codeberg.org/small-tech/jsdb#j

    #Kitten #SmallWeb #update #changes #database #JavaScriptDatabase #JSDB #javascript #nodeJS #web #dev

  45. New Kitten release

    • Fixes #236¹: The data preview pages in Kitten’s settings how handle circular references in the deserialised data (which may contain your custom classes if that’s what you were persisting in the database).

    kitten.small-web.org

    :kitten:💕

    PS. Those pages are very rudimentary at the moment and are good for getting quick visual overview of the data you’re persisting. For a fully interactive view, use Kitten’s interactive shell (REPL)² to explore your data until I’ve had a chance to implement a more comprehensive visual interface.

    PPS. You persist data in Kitten using the built-in JavaScript Database (JSDB)³ (Or, of course, you can install and use any other database.)

    ¹ codeberg.org/kitten/app/issues
    ² kitten.small-web.org/reference
    ³ codeberg.org/small-tech/jsdb#j

    #Kitten #SmallWeb #update #changes #database #JavaScriptDatabase #JSDB #javascript #nodeJS #web #dev

  46. Your web server having an interactive shell (REPL) where you can live update entries in your site/app’s database is pretty neat (if I do say so myself) :)

    kitten.small-web.org/reference

    (I’m porting the Small Technology Foundation site¹ from Site.js² – and hence from being a static site generated via Site.js’s integrated Hugo³ – to Kitten⁴. In the process, I’m creating an admin panel⁵ for the news, events, and videos sections, which will make them easier to update, and storing the data in Kitten’s internal JavaScript Database⁶.)

    ¹ small-tech.org
    ² sitejs.org
    ³ gohugo.io/
    kitten.small-web.org
    ⁵ It’s trivial to create authenticated routes in Kitten. You just add a lock emoji (🔒) to the end of your route’s name. e.g., admin🔒.page.js or /admin🔒/index.page.js (see kitten.small-web.org/reference).
    codeberg.org/small-tech/jsdb

    #Kitten #REPL #shell #JavaScript #database #JavaScriptDatabase #JSDB #SmallTechnologyFoundation #SiteJS #Hugo #web #dev #NodeJS

  47. Your web server having an interactive shell (REPL) where you can live update entries in your site/app’s database is pretty neat (if I do say so myself) :)

    kitten.small-web.org/reference

    (I’m porting the Small Technology Foundation site¹ from Site.js² – and hence from being a static site generated via Site.js’s integrated Hugo³ – to Kitten⁴. In the process, I’m creating an admin panel⁵ for the news, events, and videos sections, which will make them easier to update, and storing the data in Kitten’s internal JavaScript Database⁶.)

    ¹ small-tech.org
    ² sitejs.org
    ³ gohugo.io/
    kitten.small-web.org
    ⁵ It’s trivial to create authenticated routes in Kitten. You just add a lock emoji (🔒) to the end of your route’s name. e.g., admin🔒.page.js or /admin🔒/index.page.js (see kitten.small-web.org/reference).
    codeberg.org/small-tech/jsdb

    #Kitten #REPL #shell #JavaScript #database #JavaScriptDatabase #JSDB #SmallTechnologyFoundation #SiteJS #Hugo #web #dev #NodeJS

  48. Your web server having an interactive shell (REPL) where you can live update entries in your site/app’s database is pretty neat (if I do say so myself) :)

    kitten.small-web.org/reference

    (I’m porting the Small Technology Foundation site¹ from Site.js² – and hence from being a static site generated via Site.js’s integrated Hugo³ – to Kitten⁴. In the process, I’m creating an admin panel⁵ for the news, events, and videos sections, which will make them easier to update, and storing the data in Kitten’s internal JavaScript Database⁶.)

    ¹ small-tech.org
    ² sitejs.org
    ³ gohugo.io/
    kitten.small-web.org
    ⁵ It’s trivial to create authenticated routes in Kitten. You just add a lock emoji (🔒) to the end of your route’s name. e.g., admin🔒.page.js or /admin🔒/index.page.js (see kitten.small-web.org/reference).
    codeberg.org/small-tech/jsdb

    #Kitten #REPL #shell #JavaScript #database #JavaScriptDatabase #JSDB #SmallTechnologyFoundation #SiteJS #Hugo #web #dev #NodeJS

  49. Your web server having an interactive shell (REPL) where you can live update entries in your site/app’s database is pretty neat (if I do say so myself) :)

    kitten.small-web.org/reference

    (I’m porting the Small Technology Foundation site¹ from Site.js² – and hence from being a static site generated via Site.js’s integrated Hugo³ – to Kitten⁴. In the process, I’m creating an admin panel⁵ for the news, events, and videos sections, which will make them easier to update, and storing the data in Kitten’s internal JavaScript Database⁶.)

    ¹ small-tech.org
    ² sitejs.org
    ³ gohugo.io/
    kitten.small-web.org
    ⁵ It’s trivial to create authenticated routes in Kitten. You just add a lock emoji (🔒) to the end of your route’s name. e.g., admin🔒.page.js or /admin🔒/index.page.js (see kitten.small-web.org/reference).
    codeberg.org/small-tech/jsdb

    #Kitten #REPL #shell #JavaScript #database #JavaScriptDatabase #JSDB #SmallTechnologyFoundation #SiteJS #Hugo #web #dev #NodeJS

  50. Your web server having an interactive shell (REPL) where you can live update entries in your site/app’s database is pretty neat (if I do say so myself) :)

    kitten.small-web.org/reference

    (I’m porting the Small Technology Foundation site¹ from Site.js² – and hence from being a static site generated via Site.js’s integrated Hugo³ – to Kitten⁴. In the process, I’m creating an admin panel⁵ for the news, events, and videos sections, which will make them easier to update, and storing the data in Kitten’s internal JavaScript Database⁶.)

    ¹ small-tech.org
    ² sitejs.org
    ³ gohugo.io/
    kitten.small-web.org
    ⁵ It’s trivial to create authenticated routes in Kitten. You just add a lock emoji (🔒) to the end of your route’s name. e.g., admin🔒.page.js or /admin🔒/index.page.js (see kitten.small-web.org/reference).
    codeberg.org/small-tech/jsdb

    #Kitten #REPL #shell #JavaScript #database #JavaScriptDatabase #JSDB #SmallTechnologyFoundation #SiteJS #Hugo #web #dev #NodeJS

  51. Just updated the Database App Modules tutorial in the Kitten documentation to fix a few bugs, update to latest Kitten syntax, and improve the instructions:

    kitten.small-web.org/tutorials

    (Database app modules are special app modules¹ that let you create strongly-typed JavaScript databases² in your Small Web³ apps.)

    Enjoy!

    :kitten:💕

    ¹ kitten.small-web.org/reference
    ² codeberg.org/small-tech/jsdb#r
    ³ ar.al/2024/06/24/small-web-com

    #Kitten #DatabaseAppModules #AppModules #tutorial #SmallWeb #SmallTech #web #dev #JSDB #JavaScriptDatabase #JavaScript #database #web #dev #NodeJS #strongTyping

  52. Just updated the Database App Modules tutorial in the Kitten documentation to fix a few bugs, update to latest Kitten syntax, and improve the instructions:

    kitten.small-web.org/tutorials

    (Database app modules are special app modules¹ that let you create strongly-typed JavaScript databases² in your Small Web³ apps.)

    Enjoy!

    :kitten:💕

    ¹ kitten.small-web.org/reference
    ² codeberg.org/small-tech/jsdb#r
    ³ ar.al/2024/06/24/small-web-com

    #Kitten #DatabaseAppModules #AppModules #tutorial #SmallWeb #SmallTech #web #dev #JSDB #JavaScriptDatabase #JavaScript #database #web #dev #NodeJS #strongTyping

  53. Just updated the Database App Modules tutorial in the Kitten documentation to fix a few bugs, update to latest Kitten syntax, and improve the instructions:

    kitten.small-web.org/tutorials

    (Database app modules are special app modules¹ that let you create strongly-typed JavaScript databases² in your Small Web³ apps.)

    Enjoy!

    :kitten:💕

    ¹ kitten.small-web.org/reference
    ² codeberg.org/small-tech/jsdb#r
    ³ ar.al/2024/06/24/small-web-com

    #Kitten #DatabaseAppModules #AppModules #tutorial #SmallWeb #SmallTech #web #dev #JSDB #JavaScriptDatabase #JavaScript #database #web #dev #NodeJS #strongTyping

  54. Just updated the Database App Modules tutorial in the Kitten documentation to fix a few bugs, update to latest Kitten syntax, and improve the instructions:

    kitten.small-web.org/tutorials

    (Database app modules are special app modules¹ that let you create strongly-typed JavaScript databases² in your Small Web³ apps.)

    Enjoy!

    :kitten:💕

    ¹ kitten.small-web.org/reference
    ² codeberg.org/small-tech/jsdb#r
    ³ ar.al/2024/06/24/small-web-com

    #Kitten #DatabaseAppModules #AppModules #tutorial #SmallWeb #SmallTech #web #dev #JSDB #JavaScriptDatabase #JavaScript #database #web #dev #NodeJS #strongTyping

  55. Just updated the Database App Modules tutorial in the Kitten documentation to fix a few bugs, update to latest Kitten syntax, and improve the instructions:

    kitten.small-web.org/tutorials

    (Database app modules are special app modules¹ that let you create strongly-typed JavaScript databases² in your Small Web³ apps.)

    Enjoy!

    :kitten:💕

    ¹ kitten.small-web.org/reference
    ² codeberg.org/small-tech/jsdb#r
    ³ ar.al/2024/06/24/small-web-com

    #Kitten #DatabaseAppModules #AppModules #tutorial #SmallWeb #SmallTech #web #dev #JSDB #JavaScriptDatabase #JavaScript #database #web #dev #NodeJS #strongTyping