Should I Move From PHP to Node/Express?

This page summarizes the projects mentioned and recommended in the original post on /r/node

Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • RxPHP

    Reactive extensions for PHP

  • Not really, it's just the respective functional design approaches are applicable everywhere (Java, Scala, Kotlin, Swift, C++, Rust, JS ... PHP) and there's a practical benefit to it in terms of the amount of code and overall cognitive complexity needed for the respective implementation.

  • Prisma

    Next-generation ORM for Node.js & TypeScript | PostgreSQL, MySQL, MariaDB, SQL Server, SQLite, MongoDB and CockroachDB

  • For instance, practicing "local first web" using automerge with all it's Distributed Persistence Primitives on CRDT's and Vector Clocks - i.e. when the Browser View is treated like a Database replica, essentially; or adopting a real data mapper that's giving you an API from your database Schema, using Prisma or Hasura... or even implementing a custom codegenereted one, as a babel plugin, on top of TSED and Micro-ORM.

  • SurveyJS

    Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.

    SurveyJS logo
  • cats-effect

    The pure asynchronous runtime for Scala

  • On the contrary, switching to the functional mindset, with something like Typelevel Scala3 and respective cats and cats-effect fs2 frameworks, helps to rethink a lot of designs and development approaches.

  • cats

    Lightweight, modular, and extensible library for functional programming.

  • On the contrary, switching to the functional mindset, with something like Typelevel Scala3 and respective cats and cats-effect fs2 frameworks, helps to rethink a lot of designs and development approaches.

  • MikroORM

    TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, MariaDB, MS SQL Server, PostgreSQL and SQLite/libSQL databases.

  • For instance, practicing "local first web" using automerge with all it's Distributed Persistence Primitives on CRDT's and Vector Clocks - i.e. when the Browser View is treated like a Database replica, essentially; or adopting a real data mapper that's giving you an API from your database Schema, using Prisma or Hasura... or even implementing a custom codegenereted one, as a babel plugin, on top of TSED and Micro-ORM.

  • Hasura

    Blazing fast, instant realtime GraphQL APIs on your DB with fine grained access control, also trigger webhooks on database events.

  • For instance, practicing "local first web" using automerge with all it's Distributed Persistence Primitives on CRDT's and Vector Clocks - i.e. when the Browser View is treated like a Database replica, essentially; or adopting a real data mapper that's giving you an API from your database Schema, using Prisma or Hasura... or even implementing a custom codegenereted one, as a babel plugin, on top of TSED and Micro-ORM.

  • FS2

    Compositional, streaming I/O library for Scala

  • On the contrary, switching to the functional mindset, with something like Typelevel Scala3 and respective cats and cats-effect fs2 frameworks, helps to rethink a lot of designs and development approaches.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • automerge

    A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically.

  • For instance, practicing "local first web" using automerge with all it's Distributed Persistence Primitives on CRDT's and Vector Clocks - i.e. when the Browser View is treated like a Database replica, essentially; or adopting a real data mapper that's giving you an API from your database Schema, using Prisma or Hasura... or even implementing a custom codegenereted one, as a babel plugin, on top of TSED and Micro-ORM.

  • fantasy-land

    Specification for interoperability of common algebraic structures in JavaScript

  • There are respective fantasy land and static land specs, with the law conformance checks.

  • static-land

    Specification for common algebraic structures in JavaScript based on Fantasy Land

  • There are respective fantasy land and static land specs, with the law conformance checks.

  • fantasy-laws

    Property-based tests for FL-compatible ADTs

  • There are respective fantasy land and static land specs, with the law conformance checks.

  • fp-ts

    Functional programming in TypeScript

  • JS by it's nature is neither functional nor OOP'ish - somewhere in between. For instance, promises do lack referential transparency and side-effect capturing guarantees, compared to something like IO Monad, although there are some wrappers in fpts with partial IO Monad support.

  • lodash

    A modern JavaScript utility library delivering modularity, performance, & extras.

  • You don't need to understand all the details, and category theory, to get practical benefit out of it - it's fine just grabbing something like lodash-fp and getting acquainted with transducers.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts