Queries as Code
500+ teams already collaborating

Your DynamoDB Queries Are Code. Treat Them Like It.

Version control your queries. Share with your team. Review changes. No cloud lock-in. Just files on disk that work with your existing developer workflow.

No credit card required Works with your existing Git workflow

Dynomate - Save Query
get-user-activity.json
Saving to collection...
Git - New File Detected
+ .dynomate/collections/user-queries/get-user-activity.json
git add . && git commit -m "Add user activity query"

"Just Check Slack for That Query"

You know the drill. Someone on your team wrote the perfect DynamoDB query last month. Where is it now? Buried in Slack? In someone's scratch file? Copy-pasted into five different scripts with slight variations?

Query Chaos
# Slack Message
@channel Does anyone have that query for getting user sessions from last month?

# random-scripts/debug.js
// TODO: Clean this up
const query = dynamodb.query({
  TableName: 'users-table-prod', // or was it user-table?
  KeyConditionExpression: 'pk = :pk',
  ExpressionAttributeValues: {
    ':pk': 'USER#' + userId // Hope this is right
  }
});

# Sarah's scratch.txt
dynamodb query --table users   --key '{"pk": {"S": "USER#123"}}'   --projection "id,name,email"
# ^^ This one works for prod, use different table for staging

Here's what happens without proper query management:

Knowledge silos - That one person who "knows all the queries" becomes a bottleneck
Inconsistent patterns - Everyone solves the same problem differently
No history - "Who changed this query and why?" Good luck finding out
Onboarding hell - New team members reverse-engineer queries from production logs

The Real Cost

Let's be honest. We've all been there at 2 AM, trying to debug a production issue, desperately searching Slack for that one query that would help. Or worse, rewriting it from scratch because it's faster than finding the original.

12 min

Average time to find a query

47%

Queries with outdated docs

A Better Way

Queries as First-Class Citizens

Dynomate stores everything as local files in your project. No proprietary formats. No cloud databases. Just JSON files that you can commit to Git, review in pull requests, track changes over time, and share across your team.

How It Actually Works

Project Structure
your-project/
├── src/
├── tests/
├── .dynomate/
│   ├── collections/
│   │   ├── user-queries/
│   │   │   ├── get-user-profile.json
│   │   │   ├── update-user-settings.json
│   │   │   └── user-activity-report.json
│   │   ├── order-queries/
│   │   │   ├── get-recent-orders.json
│   │   │   ├── order-by-status.json
│   │   │   └── order-fulfillment-chain.json
│   │   └── analytics/
│   │       ├── daily-active-users.json
│   │       ├── revenue-by-product.json
│   │       └── customer-lifetime-value.json
│   └── environments/
│       ├── development.json
│       ├── staging.json
│       └── production.json
└── package.json

Your queries live alongside your code, in a .dynomate folder that works just like .vscode or .idea.

Collections: Organize queries by feature, team, or access pattern
Query Files: Human-readable JSON with full IntelliSense support
Environments: Switch between dev, staging, and prod with a dropdown

Every query change is tracked in Git. Every modification has an author. Every decision has context.

Version controlled No cloud storage Your infrastructure

See It In Action

1. Create Query

Build your query in Dynomate's visual editor

2. Save & Commit

Query saved as JSON, ready for version control

3. Team Syncs

Everyone gets the query on their next git pull

Features That Make Sense

Git-Friendly Query Storage

Every query is a readable JSON file. No binary formats. No merge conflicts you can't resolve.

  • Human-readable format with comments
  • Diff-friendly structure for code reviews
  • IntelliSense and validation in your IDE
get-user-activity.json
{
  "name": "get-user-activity",
  "description": "Fetches user activity logs for the past 30 days",
  "operations": [
    {
      "type": "query",
      "table": "{{activityTable}}",
      "params": {
        "KeyConditionExpression": "pk = :pk AND sk BETWEEN :start AND :end",
        "ExpressionAttributeValues": {
          ":pk": "USER#{{userId}}",
          ":start": "ACTIVITY#{{startDate}}",
          ":end": "ACTIVITY#{{endDate}}"
        },
        "ProjectionExpression": "timestamp, action, metadata",
        "ScanIndexForward": false,
        "Limit": {{limit}}
      }
    }
  ],
  "variables": {
    "userId": "",
    "startDate": "",
    "endDate": "",
    "limit": 100
  },
  "tags": ["user-analytics", "reporting"]
}
Environment Configuration
// .dynomate/environments/production.json
{
  "name": "production",
  "profile": "prod-aws-profile",
  "region": "us-east-1",
  "variables": {
    "userTable": "prod-users-table",
    "orderTable": "prod-orders-table",
    "activityTable": "prod-activity-logs",
    "analyticsTable": "prod-analytics-events"
  },
  "defaults": {
    "timeout": 30000,
    "retryAttempts": 3
  }
}

// .dynomate/environments/development.json
{
  "name": "development",
  "profile": "dev-local",
  "endpoint": "http://localhost:8000",
  "variables": {
    "userTable": "dev-users-table",
    "orderTable": "dev-orders-table",
    "activityTable": "dev-activity-logs",
    "analyticsTable": "dev-analytics-events"
  }
}

Environment-Aware Execution

Different tables for dev, staging, and prod? Different AWS accounts? No problem. Environments are just configuration files.

Switch environments with a dropdown

The same query works everywhere. Variables handle the differences.

Popular Feature

Query Collections That Tell a Story

User Management

  • • get-user-profile.json
  • • update-preferences.json
  • • user-activity-log.json
  • • delete-user-data.json

Order Processing

  • • create-order.json
  • • order-status-update.json
  • • fulfillment-check.json
  • • refund-process.json

Analytics Queries

  • • daily-active-users.json
  • • revenue-by-product.json
  • • customer-lifetime-value.json
  • • churn-analysis.json

Organize queries by feature, by team, or by access pattern. Your choice. Collections are just folders that make sense to your team.

Real Workflows

Real Team Workflows

Onboarding New Developers

Before:

"Ask Sarah for the DynamoDB queries. She'll send you a zip file."

After:

All queries are in the repo. Clone and go.

# Day 1: New Developer Onboarding

$ git clone https://github.com/yourcompany/your-app.git
$ cd your-app
$ npm install

# Open Dynomate
# All queries are already there! 🎉

# The new developer can immediately:
- Browse all existing queries in .dynomate/collections/
- See query documentation and examples
- Understand your data access patterns
- Run queries against dev environment
- Start contributing without asking "where's that query?"

New team members can explore and understand your data access patterns from day one.

Code Review for Database Operations

Database queries get the same review rigor as your application code.

Pull Request #1234
diff --git a/.dynomate/collections/user-queries/get-user-activity.json b/.dynomate/collections/user-queries/get-user-activity.json
index a1b2c3d..e4f5g6h 100644
--- a/.dynomate/collections/user-queries/get-user-activity.json
+++ b/.dynomate/collections/user-queries/get-user-activity.json
@@ -8,7 +8,10 @@
         "KeyConditionExpression": "pk = :pk AND sk BETWEEN :start AND :end",
         "ExpressionAttributeValues": {
           ":pk": "USER#{{userId}}",
-          ":start": "ACTIVITY#{{startDate}}",
+          ":start": "ACTIVITY#{{startDate}}T00:00:00Z",
-          ":end": "ACTIVITY#{{endDate}}"
+          ":end": "ACTIVITY#{{endDate}}T23:59:59Z"
         },
+        "FilterExpression": "activityType IN (:type1, :type2, :type3)",
+        "ExpressionAttributeValues": {
+          ":type1": "LOGIN",
+          ":type2": "PURCHASE", 
+          ":type3": "SUPPORT_TICKET"
+        },
         "ProjectionExpression": "timestamp, action, metadata",
-        "Limit": {{limit}}
+        "Limit": 25
       }
     }
   ]

// PR Comment: "Good catch on the timestamp precision. The filter will help reduce client-side processing. 
// Consider making activity types configurable via variables too." - @teammate

Debugging Production Issues

When something goes wrong, your queries are right there in your repo history:

$ git log --oneline .dynomate/collections/user-queries/
7f3a2b1 fix: Add timezone handling to activity queries
a91c4d2 perf: Add projection to reduce response size
3e5f7a8 feat: Add user activity report query
d4c9e1f refactor: Standardize query naming convention
9b2a3c7 fix: Handle pagination for large result sets

$ git blame .dynomate/collections/user-queries/get-user-activity.json
7f3a2b1 (Sarah Chen  2024-01-15) "KeyConditionExpression": "pk = :pk AND sk BETWEEN :start AND :end",
a91c4d2 (Mike Ross   2024-01-12) "ProjectionExpression": "timestamp, action, metadata",
3e5f7a8 (Sarah Chen  2024-01-10) "ScanIndexForward": false,

See exactly when queries changed, who changed them, and why.

ROI Calculator

What Your Team Gets

For Developers

  • • Find queries instantly
  • • Understand data patterns
  • • Share solutions, not problems
  • • Debug with confidence

For Team Leads

  • • Standardized query patterns
  • • Knowledge preservation
  • • Faster onboarding
  • • Audit trail for changes

For Everyone

  • • Less "Can you send me that query?"
  • • More "It's in the repo"
  • • Better sleep during on-call
  • • Faster incident resolution

The Numbers Don't Lie

Metric Before Dynomate With Dynomate Improvement
Finding the right query 12 min 30 sec 24x faster
Onboarding new developer 2 days 2 hours 8x faster
Debugging query issues 45 min 5 min 9x faster
Sharing query updates Ad-hoc Automatic ∞ better
Query documentation Scattered Centralized 100% coverage

For a team of 10 engineers:

Save 156 hours per month

That's $23,400 in recovered productivity

Calculate your team's savings
Customer Stories

Teams That Made the Switch

The Fast-Growing Startup

"We went from 5 to 25 engineers in 6 months. Without Dynomate's query versioning, we'd still be doing 'knowledge transfer sessions' every week. Now new hires are productive on day one - they just pull the repo and all our DynamoDB patterns are there, documented and runnable."

— Sarah Chen, CTO at TechStartup

Key Win: Reduced onboarding time from 2 weeks to 2 days

The Enterprise Team

"Compliance asked for an audit trail of all database access patterns. Before Dynomate? Nightmare. Now? I just point them to our Git history. Every query change is tracked, reviewed, and documented. Passed our SOC2 audit with flying colors."

— Michael Rodriguez, Lead Engineer at FinanceCorp

Key Win: Complete audit trail for compliance requirements

The Distributed Team

"We have engineers in 12 time zones. The 'ping someone for that query' approach wasn't working. Now everything's in Git. Need a query at 3 AM in Singapore? It's there. Updated by someone in New York? You'll see it next pull. Async collaboration at its finest."

— Priya Patel, Engineering Manager at GlobalTech

Key Win: Eliminated timezone dependencies for query sharing

Frequently Asked Questions

How do we handle sensitive query parameters?

Use environment variables. Keep sensitive data in your AWS credentials or environment files (which are gitignored). Queries reference variables, not values. Your secrets stay secret.

Do queries sync to the cloud?

No. Your queries stay in your Git repo. We don't store them, sync them, or see them. They're your files on your infrastructure. Dynomate just helps you create and run them.

How do we migrate existing queries?

Start small. Pick your most-used queries and save them in Dynomate. Commit to Git. Let the team see the benefits. The rest will follow naturally. No big-bang migration needed.

Stop Treating Queries as Second-Class Citizens

Your DynamoDB queries power your application. They deserve the same version control, code review, and team collaboration as the rest of your code.

Getting Started Is Simple

1

Install Dynomate

Download and connect to your AWS profiles

2

Create Collections

Organize queries that make sense for your team

3

Commit to Git

Add .dynomate/ to your repository

4

Share with Team

They pull the repo and have all queries

7-day free trial SOC2 compliant Trusted by 500+ teams

Your queries are as important as your code. Start treating them that way.

— The Dynomate Team