Go to file
Paul Trowbridge 1edb998487 manage.py: show commands before confirms, fold schema/fn into step 1, nginx guard
- Show exact commands that will be run before each confirm prompt
- Step 1 dialog now offers schema and function deployment after writing .env
- Steps 2/3 relabeled as 'Redeploy only' for standalone use
- Option 5 (nginx) detects existing config and warns before overwriting
- Option 1 menu label clarified as 'Database configuration and deployment dialog'

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 17:28:26 -04:00
api Unify mappings UI around single SQL query with full UX improvements 2026-04-05 09:58:09 -04:00
database Unify mappings UI around single SQL query with full UX improvements 2026-04-05 09:58:09 -04:00
examples Initial commit: dataflow data transformation tool 2026-03-28 00:44:13 -04:00
scripts Add systemd service setup script for production deployment 2026-03-28 02:45:23 -04:00
ui Redesign mappings page: single grid, sticky controls, rule-gated loading 2026-04-05 11:14:24 -04:00
.env.example Initial commit: dataflow data transformation tool 2026-03-28 00:44:13 -04:00
.gitignore Add TSV export/import UI for mappings 2026-04-03 23:29:07 -04:00
CLAUDE.md Initial commit: dataflow data transformation tool 2026-03-28 00:44:13 -04:00
dataflow.service Add unified deploy.sh and systemd service unit 2026-04-05 15:53:02 -04:00
deploy.sh Fix deploy.sh: don't prompt for systemd service if already installed 2026-04-05 16:13:06 -04:00
manage.py manage.py: show commands before confirms, fold schema/fn into step 1, nginx guard 2026-04-05 17:28:26 -04:00
package.json Add missing backend features before UI build 2026-03-28 22:48:41 -04:00
README.md Initial commit: dataflow data transformation tool 2026-03-28 00:44:13 -04:00
uninstall.sh Add interactive setup script with PostgreSQL user/database creation and uninstall script 2026-03-28 00:59:41 -04:00

Dataflow

A simple, understandable data transformation tool for ingesting, mapping, and transforming data from various sources.

What It Does

Dataflow helps you:

  1. Import data from CSV files (or other formats)
  2. Transform data using regex rules to extract meaningful information
  3. Map extracted values to standardized output
  4. Query the transformed data

Perfect for cleaning up messy data like bank transactions, product lists, or any repetitive data that needs normalization.

Core Concepts

1. Sources

Define where data comes from and how to deduplicate it.

Example: Bank transactions deduplicated by date + amount + description

2. Rules

Extract information using regex patterns.

Example: Extract merchant name from transaction description

3. Mappings

Map extracted values to clean, standardized output.

Example: "DISCOUNT DRUG MART 32" → {"vendor": "Discount Drug Mart", "category": "Healthcare"}

Architecture

  • Database: PostgreSQL with JSONB for flexibility
  • API: Node.js/Express for REST endpoints
  • Storage: Raw data preserved, transformations are computed and stored

Design Principles

  • Simple & Clear - Easy to understand what's happening
  • Explicit - No hidden magic or complex triggers
  • Testable - Every function can be tested independently
  • Flexible - Handle varying data formats without schema changes

Getting Started

Prerequisites

  • PostgreSQL 12+
  • Node.js 16+

Installation

  1. Install dependencies:
npm install
  1. Configure database (copy .env.example to .env and edit):
cp .env.example .env
  1. Deploy database schema:
psql -U postgres -d dataflow -f database/schema.sql
psql -U postgres -d dataflow -f database/functions.sql
  1. Start the API server:
npm start

Quick Example

// 1. Define a source
POST /api/sources
{
  "name": "bank_transactions",
  "dedup_fields": ["date", "amount", "description"]
}

// 2. Create a transformation rule
POST /api/sources/bank_transactions/rules
{
  "name": "extract_merchant",
  "pattern": "^([A-Z][A-Z ]+)",
  "field": "description"
}

// 3. Import data
POST /api/sources/bank_transactions/import
[CSV file upload]

// 4. Query transformed data
GET /api/sources/bank_transactions/records

Project Structure

dataflow/
├── database/           # PostgreSQL schema and functions
│   ├── schema.sql     # Table definitions
│   └── functions.sql  # Import and transformation functions
├── api/               # Express REST API
│   ├── server.js     # Main server
│   └── routes/       # API route handlers
├── examples/          # Sample data and use cases
└── docs/             # Additional documentation

Status

Current Phase: Initial development - building core functionality

License

MIT