Ask HN: So, what's up with Phoenix (web framework)?

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

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.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • transport-site

    Rendre disponible, valoriser et améliorer les données transports

  • I'm one of the 3 maintainers of the French open-data transportation access point (at https://transport.data.gouv.fr/?locale=en), which runs on top of Elixir & Phoenix.

    I'm not a big fan of surveys and I'm not sure I've responded to this one actually, but: my current feeling around Phoenix is that it will be my go-to framework for anything web related for the years to come, but also Elixir will be, for larger topics (ML, embedded, data-viz, scripting, etc).

    There are a number of important points (to my taste) that comes out of my use of Elixir & Phoenix :

    - the maintenance story has been quite good (maintenance work is one of my main line of work since year 2k, I have used many stacks, including Java, .Net, RubyOnRails etc). Upgrades and refactoring & moving code around has been quite easy overall, once you get the stuff right (using Mox etc).

    - Phoenix, Ecto & Elixir are a good "generalist web framework" for a lot of use

    - Compared to some stacks (non-evented Ruby & Python, for instance), having a part of your app work as a proxy for domain-specific uses, is not a problem, and does not even require you to split that part from the main app (example at https://github.com/etalab/transport-site/tree/master/apps/un..., where we proxy/cache GTFS-RT protobuf & SIRI XML feeds behind rules, adding rate-limiting & hiding target server authentication schemes)

    - Similarly, anything real-time is at least initially trivial. For instance, creating this real-time view of moving vehicles (https://transport.data.gouv.fr/explore) with 70+ GTFS-RT feeds has been quite easy (PR at https://github.com/etalab/transport-site/pull/2224). The server side is like "EventMachine done right", and the live updates are broadcasted to each client via web socket. No extra server (e.g. AnyCable) or anything is needed.

    From a perf/ops POV, the amount of topics you do not even have to think about is quite important, which is very nice.

    Overall I can see myself sticking to this stack for the next 15 years or so, without much worries (I've been coding since 1984 as a kid, so I have a good idea to know when to keep a framework around or not :P)

  • uWebSockets.js

    μWebSockets for Node.js back-ends :metal:

  • Lots of reasons:

    - Code cleanliness: their code almost looks like code golfing. Hard to debug.

    - Dependencies: everyone has different ways of implementing everything. some are even outdated. some even have stale bots that close legitimate but unattended issues.

    - Performance: fastify and uWebSockets.js beats express.js on benchmarks. see https://www.fastify.io/benchmarks/ and https://github.com/uNetworking/uWebSockets/tree/master/bench...

    - Multi-part parsing: this is built-in with uWebSockets.js. on express your options are multer or busboy.

    - WebSocket Server support: this is built-in with uWebSockets.js. on express your options are using ws and socket.io.

    - WebSocket pub/sub: built-in with uWebSockets.js

    There are better alternatives like the following:

    - https://www.fastify.io/

    - https://github.com/uNetworking/uWebSockets.js

    - https://github.com/kartikk221/hyper-express

  • 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
  • redux-saga

    An alternative side effect model for Redux apps

  • Something like https://redux-saga.js.org/, basically doing complex background workflows, something that feels like event-driven browser JS was not really built to do

  • gleam

    ⭐️ A friendly language for building type-safe, scalable systems!

  • livebook

    Automate code & data workflows with interactive Elixir notebooks

  • Generally speaking, if it can be done in the client, it should be done in the client.

    Phoenix.LiveView.JS aims to tackle the obvious cases but it also documents a pattern that I tend to use a lot in my apps: https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.JS.htm...

    The pattern above has a benefit that the dispatch still comes from Phoenix, so you are not relying on IDs or query selectors to attach functionality. You can see how we use it in Livebook here: https://github.com/livebook-dev/livebook/blob/main/assets/js.... However, if the callbacks get too complex, then you may indeed want to test them via headless browsers.

  • kaffy

    Powerfully simple admin package for phoenix applications

  • Phoenix

    Peace of mind from prototype to production

  • In your generated `my_app_web/endpoint.ex` there is a plug that will serve static contents from your `priv/static` directory:

    https://github.com/phoenixframework/phoenix/blob/master/inst...

    This points to a function in `my_app_web.ex` which specifies which paths it will serve:

    https://github.com/phoenixframework/phoenix/blob/master/inst...

    So you can either copy your js and image folders to `priv/static/assets` and they will be available as `localhost:port/assets/js/somefile.js` etc. OR you can add `js` to the list of paths to serve in app_name_web.ex and copy your js files to `priv/static/js` and access them at `localhost:port/js/somefile.js`.

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  • µWebSockets

    Simple, secure & standards compliant web server for the most demanding of applications

  • Lots of reasons:

    - Code cleanliness: their code almost looks like code golfing. Hard to debug.

    - Dependencies: everyone has different ways of implementing everything. some are even outdated. some even have stale bots that close legitimate but unattended issues.

    - Performance: fastify and uWebSockets.js beats express.js on benchmarks. see https://www.fastify.io/benchmarks/ and https://github.com/uNetworking/uWebSockets/tree/master/bench...

    - Multi-part parsing: this is built-in with uWebSockets.js. on express your options are multer or busboy.

    - WebSocket Server support: this is built-in with uWebSockets.js. on express your options are using ws and socket.io.

    - WebSocket pub/sub: built-in with uWebSockets.js

    There are better alternatives like the following:

    - https://www.fastify.io/

    - https://github.com/uNetworking/uWebSockets.js

    - https://github.com/kartikk221/hyper-express

  • fastify

    Fast and low overhead web framework, for Node.js

  • Lots of reasons:

    - Code cleanliness: their code almost looks like code golfing. Hard to debug.

    - Dependencies: everyone has different ways of implementing everything. some are even outdated. some even have stale bots that close legitimate but unattended issues.

    - Performance: fastify and uWebSockets.js beats express.js on benchmarks. see https://www.fastify.io/benchmarks/ and https://github.com/uNetworking/uWebSockets/tree/master/bench...

    - Multi-part parsing: this is built-in with uWebSockets.js. on express your options are multer or busboy.

    - WebSocket Server support: this is built-in with uWebSockets.js. on express your options are using ws and socket.io.

    - WebSocket pub/sub: built-in with uWebSockets.js

    There are better alternatives like the following:

    - https://www.fastify.io/

    - https://github.com/uNetworking/uWebSockets.js

    - https://github.com/kartikk221/hyper-express

  • hyper-express

    High performance Node.js webserver with a simple-to-use API powered by uWebsockets.js under the hood.

  • Lots of reasons:

    - Code cleanliness: their code almost looks like code golfing. Hard to debug.

    - Dependencies: everyone has different ways of implementing everything. some are even outdated. some even have stale bots that close legitimate but unattended issues.

    - Performance: fastify and uWebSockets.js beats express.js on benchmarks. see https://www.fastify.io/benchmarks/ and https://github.com/uNetworking/uWebSockets/tree/master/bench...

    - Multi-part parsing: this is built-in with uWebSockets.js. on express your options are multer or busboy.

    - WebSocket Server support: this is built-in with uWebSockets.js. on express your options are using ws and socket.io.

    - WebSocket pub/sub: built-in with uWebSockets.js

    There are better alternatives like the following:

    - https://www.fastify.io/

    - https://github.com/uNetworking/uWebSockets.js

    - https://github.com/kartikk221/hyper-express

  • phoenix_storybook

    A pluggable storybook for your Phoenix components.

  • Yes! (well I'm assuming you mean Storyboard). There's a new project that accomplishes just that: https://github.com/phenixdigital/phx_live_storybook

  • desktop

    Building native-like Elixir apps for Windows, MacOS, Linux, iOS and Android using Phoenix LiveView! (by elixir-desktop)

  • I think you may be looking for this neat library: https://github.com/elixir-desktop/desktop

    Although to be honest it boggles my that it's possible to accomplish this on iOS.

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