Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Elixir
  3. excellent_migrations

excellent_migrations

MITElixir

An Elixir tool that analyzes database migrations to detect potentially dangerous or destructive operations.

GitHubGitHub
303 stars44 forks0 contributors

What is excellent_migrations?

Excellent Migrations is a static analysis tool for Elixir applications that checks the safety of database migrations. It analyzes migration files to detect over 15 types of potentially dangerous operations—like removing columns, adding indexes non-concurrently, or executing raw SQL—that can lead to downtime, data corruption, or performance issues in production.

Target Audience

Elixir developers and teams using Ecto for database migrations, particularly those operating PostgreSQL databases in production environments where zero-downtime deployments and data integrity are critical.

Value Proposition

Developers choose Excellent Migrations because it proactively catches unsafe migration patterns early in development, integrates seamlessly as a Credo check or standalone mix task, and provides PostgreSQL-specific validations and actionable safety guidance to enforce best practices.

Overview

An Elixir tool for checking safety of database migrations.

Use Cases

Best For

  • Elixir teams needing to enforce zero-downtime deployment practices for database migrations.
  • Preventing data corruption or performance issues from unsafe operations like removing columns or changing column types.
  • Ensuring PostgreSQL migrations use concurrent index creation to avoid blocking reads and writes.
  • Integrating migration safety checks into existing Credo-based code analysis workflows.
  • Validating that raw SQL executions in migrations are explicitly marked as safe.
  • Enforcing best practices like using JSONB over JSON columns in PostgreSQL.

Not Ideal For

  • Applications not using Elixir and Ecto, as it's framework-specific and won't work with other languages or ORMs.
  • Teams relying primarily on MySQL or SQLite, since many safety checks are PostgreSQL-oriented and may not apply.
  • Projects with legacy migrations already applied, unless configured to skip them, which could miss historical issues.
  • Environments where raw SQL migrations are common and safety assurances are manually managed without tooling.

Pros & Cons

Pros

Comprehensive Safety Coverage

Detects over 15 types of dangerous operations like removing columns or adding indexes non-concurrently, with detailed examples in the README for each pitfall.

Flexible Integration Methods

Works as a Credo check, standalone mix task, or migration wrapper, allowing seamless adoption into existing Elixir development workflows without major changes.

PostgreSQL-Specific Insights

Includes database-specific validations for operations like concurrent index creation and JSONB usage, crucial for optimizing production PostgreSQL databases.

Configurable Safety Assurances

Allows developers to mark specific operations as safe with inline or file-wide comments, providing flexibility without disabling entire checks.

Cons

PostgreSQL-Centric Limitations

Many checks are tailored for PostgreSQL; support for other databases like MySQL is minimal, relying on version-specific notes that may not cover all cases.

Manual Overhead for Edge Cases

Requires adding config comments to assure safety for legitimate raw SQL or other operations, which adds development time and risk of human error.

No Rollback Safety Analysis

Focuses only on forward migrations; it doesn't check the safety of rollback operations, which could lead to data loss or downtime if not handled separately.

Setup Complexity for Existing Code

Needs configuration to skip older migrations via timestamps, which might be error-prone if migrations are modified or if the start_after setting is misconfigured.

Frequently Asked Questions

Quick Stats

Stars303
Forks44
Contributors0
Open Issues11
Last commit6 months ago
CreatedSince 2019

Tags

#elixir#devops#ecto#credo#migrations#database-migrations#postgresql#code-analysis#ast#static-analysis

Built With

E
Ecto
E
Elixir

Included in

Elixir13.1k
Auto-fetched 9 hours ago

Related Projects

credocredo

A static code analysis tool for the Elixir language with a focus on code consistency and teaching.

Stars5,212
Forks455
Last commit12 days ago
dialyxirdialyxir

Mix tasks to simplify use of Dialyzer in Elixir projects.

Stars1,794
Forks160
Last commit2 days ago
excoverallsexcoveralls

Coverage report tool for Elixir with coveralls.io integration.

Stars863
Forks187
Last commit1 year ago
ex_checkex_check

One task to efficiently run all code analysis & testing tools in an Elixir project. Born out of 💜 to Elixir and pragmatism.

Stars329
Forks14
Last commit2 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub