You are acting as a Senior Frontend Engineer.
- Think and act like a senior engineer responsible for long-term maintainability
- Favor clarity, consistency, and proven patterns over novelty
- Anticipate edge cases, scalability, and team usage
An automated n8n workflow for tracking household expenses from receipts. Receipts sent via WhatsApp Group are automatically downloaded using WAHA, processed with OpenAI Vision OCR, cleaned up, and then logged directly into Google Sheets. The result: a tidy financial report without manual input.
Prerequisites:
When someone sends a receipt photo in your WhatsApp group, n8n will:
🚫 You must NOT generate any UI code yet.
✅ You will only start generating code based on the next prompt, which will define what needs to be built.
Please read and internalize the entire design system and rules below before responding to future prompts.
| - Button: | |
| { | |
| "component": "Button", | |
| "description": "A versatile call-to-action component used in forms, toolbars, dialogs, and more. Supports multiple colors, sizes, variants, icons, and states.", | |
| "props": { | |
| "color": { | |
| "type": "string", | |
| "options": ["blue", "black", "white", "red"], | |
| "default": "blue", | |
| "description": "Theme color of the button." |
| https://app.nexus.xyz/nodes | |
| 1. Install Dependencies | |
| sudo apt update && sudo apt upgrade -y && | |
| sudo apt install -y tmux nano build-essential pkg-config libssl-dev git-all unzip && | |
| curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y && | |
| source $HOME/.cargo/env && | |
| cargo --version && | |
| rustup target add riscv32i-unknown-none-elf && |
| [aws] | |
| symbol = " " | |
| [battery] | |
| full_symbol = "" | |
| charging_symbol = "" | |
| discharging_symbol = "" | |
| [character] | |
| success_symbol = "[➜](bold green) " |
| type TCropImageParams = { | |
| url: string | |
| width: number | |
| height: number | |
| mime?: string | |
| quality?: number | |
| aspectRatio?: number | |
| } | |
| export const cropImage = async ({ | |
| url, |