SShortSingh.

Related stories

0
ProgrammingDEV Community ·

Scripta 3.4.7 lets macOS users schedule local meeting recordings with no cloud involvement

Scripta, a macOS app that records and transcribes meetings entirely on-device, has released version 3.4.7 introducing a scheduled recording feature. Users can now set a meeting title, start time, and duration in advance, allowing the app to automatically begin and stop audio capture without manual intervention. All transcripts and session metadata remain stored locally, consistent with the app's privacy-first design, and no data is sent to external servers. The scheduler runs within the app process itself, meaning Scripta must be open at the scheduled start time; if it is not, a local notification prompts the user to launch it. Features such as calendar import, multi-device sync, and background daemon recording are planned for future releases.

0
ProgrammingDEV Community ·

How SaaS Teams Should Build Durable Retry and Failure Records for Background Jobs

A technical guide recommends that SaaS engineering teams treat each scheduled or queued job execution as a durable evidence record rather than a simple log entry. The approach calls for assigning stable identifiers to logical jobs, individual attempts, and customer operations separately, then writing state transitions and sanitized error summaries to a persistent store like Postgres. Retries should append new attempt rows rather than overwrite previous failure data, preserving a full ordered history for incident investigation. Security considerations are central: sensitive data such as tokens, passwords, and database credentials must never be stored in error records, in line with OWASP logging guidance. The design also needs to account for data retention and deletion obligations under regulations like GDPR, requiring clear classification of operational evidence versus customer payload data.

0
ProgrammingDEV Community ·

How Temperô debugged a weeks-long iFood integration mystery involving missing cancel events

Temperô, a multi-tenant SaaS platform for restaurant management built on Node/TypeScript and PostgreSQL, developed a direct integration with the iFood marketplace to automatically route delivery orders into its kitchen and payment workflows. Rather than using webhooks, the system relies on iFood's polling API, queried every 15 seconds via a Node.js setInterval loop with an overlap-prevention flag. The team chose iFood's 'Centralised' credential model, requiring a mid-project refactor of the OAuth2 token cache from per-unit to a single in-memory store with both proactive and reactive renewal logic. Menu mapping was deferred, so iFood order items enter the system without an internal product ID, using names and prices directly from the payload. The article details several bugs encountered during the build, including a prolonged investigation into why order-cancellation confirmation events sometimes never arrived.

0
ProgrammingDEV Community ·

How Temperô integrated iFood orders into its restaurant SaaS — and the bugs found along the way

Temperô, a multi-tenant restaurant management SaaS built on Node/TypeScript and PostgreSQL, set out to automatically route iFood marketplace orders into its internal kitchen, payment, and delivery workflows without requiring staff to operate two systems simultaneously. Because iFood does not support inbound webhooks, the team implemented a polling mechanism that calls iFood's Order API every 15 seconds using a flag-guarded setInterval loop to prevent overlapping executions. The platform adopted iFood's 'Centralised' credential model — a single OAuth2 client_credentials token filtered per merchant — which required mid-project refactoring of the token cache from a per-unit to a shared in-memory store. Version one of the integration covers delivery orders only; takeout and dine-in requests arriving via the marketplace are automatically cancelled, and menu items are ingested using name and price directly from the payload rather than being mapped to Temperô's internal catalogue. The article also details a prolonged investigation into why cancellation-confirmation events occasionally never arrived, tracing the issue to subtle differences between the iFood event fields 'code' and 'fullCode'.