Skip to content

2026

ngx-planning-board: An Open-Source Angular Resource Planning Board

Angular has no free component for a resource planning board: rows of people or rooms on the left, a time axis on top, absences and bookings as bars. FullCalendar keeps its resource views behind a premium license, Bryntum and DHTMLX are commercial with their own data models, and the free timeline libraries stopped evolving years ago. We needed one for the Pantarey dashboards, so we built it and released it under MIT.

Preventing Duplicate GraphQL Mutations with the Angular Service Worker and AWS Amplify

A GraphQL mutation gets executed twice on the server even though the client sent it once. The symptom pattern: two records with byte-identical payloads but different server-generated IDs, written 2 to 4 seconds apart by two separate resolver invocations. Only in production. Never reproducible on demand. If your Angular app registers @angular/service-worker and talks to AppSync through AWS Amplify, this is not a bug in your code. It is an interaction between two framework defaults.

Caching Amazon Athena Query Results with DynamoDB and Managed Query Results

Amazon Athena on Apache Iceberg is a natural fit for analytics dashboards, but every query carries a fixed overhead of one to several seconds, even when the result is a single number. Dashboards auto-refresh and get opened by many users, so the same queries run again and again, paying that latency and the scan bill every time. Athena ships a built-in Query Result Reuse feature, but it refuses to run in a workgroup that uses Managed Query Results.

Serving Tenant-Branded, Login-Free Web Pages from a Lambda with Tokenized Access

A recipient needs to open a document you sent them. They have no account, and you do not want them to create one. The document is sensitive, for example a medical report, so it must be delivered in the sender's branding, it must reflect the current state of the case, and it must be revocable the moment something changes. A static link cannot do all three at once.