Skip to content

Instantly share code, notes, and snippets.

View jmsaavedra's full-sized avatar

Joe Saavedra jmsaavedra

View GitHub Profile

WhatsApp Conversations Feature

Overview

The WhatsApp Conversations feature enables automated, personalized WhatsApp messaging flows for customers who interact with places through Forkast. When a customer taps the WhatsApp button in a PasosModule step, a conversation is automatically created and tracked in the database, enabling contextual, fork-specific replies without requiring the customer to send any codes or identifiers.

Implementation Status:Production Ready

  • ✅ conversations collection with 9 indexes (including TTL)
  • ✅ Multi-channel form_templates architecture (pasos-form, whatsapp, email)
@jmsaavedra
jmsaavedra / INTERACTIONS-VISITS-CUSTOMERS.md
Last active October 29, 2025 12:47
Data Architecture, relationship, and timing between Interactions, visits, and customer data

Interactions, Visits, and Customers

Complete Data Model Documentation

Last Updated: October 2025

Documentation Accuracy: Verified against codebase implementation October 2025


Overview

@jmsaavedra
jmsaavedra / vercel-ignored-build-commands.md
Created October 14, 2025 23:26
Vercel Ignored Build Command

Vercel Ignored Build Step Command Explanation

My Favorite Version

if [[ "$VERCEL_GIT_COMMIT_REF" != "main" ]]; then exit 1; fi; git diff HEAD^ HEAD --quiet -- . && exit 0 || exit 1

What It Does

@jmsaavedra
jmsaavedra / adb_commands.md
Last active March 19, 2025 14:57
ADB commands

Useful ADB Commands

Connecting to Device:

  • adb start-server
  • adb connect <ip-address>:4321 or adb connect <ip-address>:5555
  • adb devices

Resolution Settings:

  • adb shell wm size
  • adb shell wm size 1920x1920
@jmsaavedra
jmsaavedra / contracts...IoSingleTransferExt.sol
Created September 11, 2023 23:24
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.8.18+commit.87f61d96.js&optimize=false&runs=200&gist=
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/// @author: Infinite Objects
import "@manifoldxyz/libraries-solidity/contracts/access/AdminControl.sol";
import "@manifoldxyz/creator-core-solidity/contracts/core/IERC1155CreatorCore.sol";
import "@manifoldxyz/creator-core-solidity/contracts/extensions/ERC1155/IERC1155CreatorExtensionApproveTransfer.sol";
@jmsaavedra
jmsaavedra / .deps...npm...@manifoldxyz...creator-core-solidity...contracts...core...CreatorCore.sol
Created September 11, 2023 23:24
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.8.18+commit.87f61d96.js&optimize=false&runs=200&gist=
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/// @author: manifold.xyz
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "@openzeppelin/contracts/utils/Strings.sol";
import "@openzeppelin/contracts/utils/introspection/ERC165.sol";
import "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
@jmsaavedra
jmsaavedra / flowOrderToslack.liquid
Last active June 15, 2022 12:22
Shopify Liquid for Flow > Slack
{% assign order_num = order.name | remove: '#' %}
{% assign order_modulo = order_num | modulo:1000 %}
{% assign customer_moments_ct = order.customerJourneySummary.momentsCount %}
{% assign note_len = order.note | size %}
{% assign billingco_len = order.billingAddress.company | size %}
{% assign customer_firstvisit_refurl_len = order.customerJourneySummary.firstVisit.referrerUrl | size %}
{% assign customer_firstvisit_desc_len = order.customerJourneySummary.firstVisit.sourceDescription | size %}
{% assign customer_lastvisit_refurl_len = order.customerJourneySummary.lastVisit.referrerUrl | size %}
{% assign customer_lastvisit_desc_len = order.customerJourneySummary.lastVisit.sourceDescription | size %}
{% assign order_refurl_len = order.referrerUrl | size %}
@jmsaavedra
jmsaavedra / installffmpeg.md
Last active August 25, 2022 07:01
Install ffmpeg with h264 OSX 10.14
@jmsaavedra
jmsaavedra / ffmpeg_cmds.md
Last active May 8, 2024 20:14
Collection of ffmpeg commands

Collection of Useful ffmpeg Commands

  • optimize with faststart (for mobile web)
  • crf (quality) goes from 0 (lossless) - 50 (very poor).
ffmpeg -i input.mp4 -crf 30 -profile:v baseline -level 3.0 -movflags +faststart -an output.mp4

@jmsaavedra
jmsaavedra / tripleClick.ino
Last active November 15, 2017 20:22
triple click detection
/* https://github.com/JChristensen/Timer */
#include <Timer.h>
Timer t_press;
int POWER_SNAP_BTN = 8;
int LED_1 = 13;
int LED_2 = 3;
int pressCount = 0;