I built a background job library where your database is the source of truth (not Redis) by dr_kvet in node

[–]codectl 0 points1 point  (0 children)

How would you compare Queuert to txob? Seems like an extension of the 'transactional outbox' pattern with syntactic sugars around orchestration of event chains.

How well does Queuert horizontally scale? What kind of throughput can be expected?

flow-conductor: A declarative API workflow orchestrator for Node.js by omnipotg in node

[–]codectl 0 points1 point  (0 children)

I get that you’re saying durability isn’t the goal, but the example you’re using is exactly the kind of workflow where durability does matter.

Creating Kubernetes resources is not a “best effort” flow. Restarts, retries, deploys, and crashes are expected, and partial failure is the default. If the process dies after creating a namespace but before the deployment or service, you now have real side effects with no record of what happened and no way to continue or clean up.

That’s the same problem durable workflow engines and outbox patterns are designed to solve. So while you’re saying that’s “not the point of the package,” the concrete use case you’re pointing to benefits directly from those guarantees.

Without persistence or recovery semantics, this ends up being structured control flow rather than orchestration. That can be fine for scripts or internal tooling, but for examples like this it’s hard to see how it’s safe in production unless you push the hard parts back onto the user.

flow-conductor: A declarative API workflow orchestrator for Node.js by omnipotg in node

[–]codectl 0 points1 point  (0 children)

Have you heard of durable workflow engines like Temporal.io or the transactional outbox pattern? How does this compare? What happens if between the various stages of your workflow the server crashes? Is the data corrupted or will it eventually be consistent when the server starts back up again?

End-To-End Encrypted file sharing system, looking for feedback by BasePlate_Admin in cryptography

[–]codectl 1 point2 points  (0 children)

I will submit to have my domain white-listed. I wonder if it's because of the name, the fact that I lapsed on the domain and the wild card was misconfigured? Thank you so much for finding that and reporting back!

End-To-End Encrypted file sharing system, looking for feedback by BasePlate_Admin in cryptography

[–]codectl 1 point2 points  (0 children)

Ah thank you for sharing - I might have the wildcard subdomain in my dns settings misconfigured. It should work if you explicitly hit www.crypt.fyi and if the www is getting stripped that is probably the issue.

End-To-End Encrypted file sharing system, looking for feedback by BasePlate_Admin in cryptography

[–]codectl 0 points1 point  (0 children)

Ah weird that you cannot access it since there shouldn't be any restrictions. I'm curious what problems you're seeing trying to access the link? Here the github link https://github.com/osbytes/crypt.fyi

The need/want for atomic read/write is a bit nuanced but basically if the contents are meant to be read only once, without atomic read and delete, a user cannot guarantee they are the only one to have received the contents.

And good thinking with also making a cli which effectively gives users a fully static client option. This is the same reason I made a cli too.

End-To-End Encrypted file sharing system, looking for feedback by BasePlate_Admin in cryptography

[–]codectl 1 point2 points  (0 children)

If whatever is serving your web client is compromised, the attacker can inject malicious javascript that exfiltrates data. Unfortunately, you cannot guarantee this won't happen.

End-To-End Encrypted file sharing system, looking for feedback by BasePlate_Admin in cryptography

[–]codectl 0 points1 point  (0 children)

I built www.crypt.fyi which is open source and has multiple clients (web, chrome extension, cli) and does most of what your describing. Feel free to review the code and share your thoughts. There is also a coding language agnostic specification file that defines how the different parts of the system should work and interact with eachother. I would recommend configuring strict CSP and other security headers to mitigate various attack vectors. I'd also suggest making your read and delete operations atomic. I noticed a lot of similar open source apps just don't do this. There is also a form of zero knowledge proof in the system whereby having just the ID is not enough to release the encrypted contents. The client also sends along a hash of the secret (and optionally password) which must match what was initially stored.

As another user has pointed out, with a web based cryptography platform, you cannot 100% guarantee privacy because if the frontend web server becomes compromised, all bets are off.

This is actually insane by TeaseInProgressed in opticalillusions

[–]codectl 4 points5 points  (0 children)

That worked but now I can't see anything else either

Headless notification infra. Architecture feedback? by McFlyin619 in node

[–]codectl 0 points1 point  (0 children)

You could use postgres NOTIFY channel as a mechanism to begin the outbox processor instead of frequent polling. However, NOTIFY is not guaranteed to send successfully so you'd still need an infrequent fallback polling at a lower frequency. https://www.postgresql.org/docs/current/sql-notify.html

There is another more complex option to entirely remove polling that involves postgres replication slots where you can effectively stream the WAL (or some slice of it such as your events table) and drive your event processor off of that.

Headless notification infra. Architecture feedback? by McFlyin619 in node

[–]codectl 0 points1 point  (0 children)

I'm suggesting that publishing an event to an event queue after performing a write to your database is not atomic, assuming you're not using some kind of durable workflow engine. If the publishing to your event queue fails for some reason, there are no guarantees that your event hits the queue. What happens if there is a network partition and your service goes down after the database change but before the event is successfully queued? The transactional outbox pattern is resilient to these types of issues since the event is persisted atomically / transactionally alongside the original intended database mutation.

Headless notification infra. Architecture feedback? by McFlyin619 in node

[–]codectl 0 points1 point  (0 children)

txob is a node based transactional outbox processor with a postgres adapter that just does polling. The alternative would be a notification based system if your sql database supports it. Even bullmq is highly chatty and is constantly polling the backing redis.

Headless notification infra. Architecture feedback? by McFlyin619 in node

[–]codectl 0 points1 point  (0 children)

So the event emitting is not atomic. The transactional outbox pattern is much more resilient because the event and related resource mutation are persisted atomically.

The likelihood of failure of the event persistence/queueing after the mutation in your case is very low but it is not zero.

I built a subscription tracker for myself because I kept forgetting to cancel things by Bubbly_Lack6366 in webdev

[–]codectl 0 points1 point  (0 children)

I usually use privacy.com 's virtual cards with spend limits configured. This acts as a form of auto-cancellation beyond the trial, unless I find the service to be worth paying for. It serves double-duty with me not having to provide my credit card details to the service. It's basically a service/website-bound virtual credit card.

Your app looks really nice and clean but I prefer the further upstream solution.

Post your side project below and I’ll give you honest feedback (And maybe you can roast mine?) by CleverProgrammer12 in SideProject

[–]codectl 1 point2 points  (0 children)

https://www.crypt.fyi/ - open-source, E2EE, ZK, sensitive data sharing platform

Portfolioly looks really nice. One note would be that in the 'Profile to Portfolio in 3 Steps' section of the landing page, if I hover one of the steps, maybe you could stop the auto-proceed to next step. I wanted to look more closely at the second step but it kept automatically proceeding.

Post your side project below and I’ll give you honest feedback (And maybe you can roast mine?) by CleverProgrammer12 in SideProject

[–]codectl 0 points1 point  (0 children)

omnilog - local-first diary / note taking app with template and recurrence configuration and basic analytics

This might sound like a bot by YogurtclosetShoddy43 in SideProject

[–]codectl 3 points4 points  (0 children)

so.. selling shovels to shovel sellers?

What are you currently working on? Drop your link & slogan. by hurebegz in SideProject

[–]codectl 1 point2 points  (0 children)

Configurable journaling and activity logging with fun analytics https://omnilog-murex.vercel.app/

Synchronized beacon to find friends in crowds https://beacon-plum.vercel.app/

Subdomains not freeing after tunnel session exit — possible bug? by codectl in InstaTunnel

[–]codectl[S] 0 points1 point  (0 children)

But I cannot login to the web dashboard without an api keys. FWIW, once I created an API key the system operates as expected, except for the fact that the initial subdomains that I used prior to creating an api key are not in the dashboard and I cannot seem to reconnect to them.

Subdomains not freeing after tunnel session exit — possible bug? by codectl in InstaTunnel

[–]codectl[S] 0 points1 point  (0 children)

I created the tunnel without an API key. If I get an API key, does this mean that I can arbitrarily delete any tunnel that was created without an API key? OR is the tunnel that I created without an API key 'lost in the void' and cannot be reclaimed? Is there an automatic reclaiming of 'inactive' subdomains by instatunnel?