Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 7 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@ Your database stores the migration source code. Switch branches freely. Rewind a

> **Never lose the ability to roll back.** django-rewind automatically saves every migration's code to your database, so you can always undo changes — even if the migration file is gone.

**Built on a fundamental principle:** The database is persistent and long-running, while source code is ephemeral and ever-changing. The database itself is the authoritative record of what migrations have been applied - django-rewind ensures your database can always reverse its own history, independent of your source code.

---

## The Problem

We've all been there. You deploy a feature branch with a new migration. The migration runs successfully. Then you switch back to `main` (which doesn't have that migration file). Now your database schema doesn't match your code, and Django can't roll back because the migration file is gone.
You deploy a feature branch with a new migration. The migration runs successfully. Then you switch back to `main` (which doesn't have that migration file). Now your database schema doesn't match your code, and Django can't roll back because the migration file is gone.

**The result?** Redeploying old branches, manual SQL fixes, or that sinking feeling in your stomach. 😰

Expand All @@ -37,7 +39,7 @@ python manage.py migrate myapp 0004

- ⏪ **Rollback without files** - Migrations stored in database
- 🔄 **Branch switching** - Deploy any branch without migration conflicts
- 🛡️ **Safety net** - Never lose the ability to rollback
- 🛡️ **Safety net** - Never lose the ability to roll back
- 📊 **Django Admin** - Visual interface for inspection
- ⚡ **Zero config** - Works automatically once installed
- 🔍 **Verification** - Compare stored code vs. current files
Expand Down Expand Up @@ -87,7 +89,7 @@ python manage.py makemigrations
python manage.py migrate
# ✓ Migration code automatically stored in database

# Now you can rollback even if files are deleted
# Now you can roll back even if files are deleted
python manage.py migrate myapp 0003
# ✓ Works even if 0004.py and 0005.py are gone!

Expand Down Expand Up @@ -143,7 +145,7 @@ python manage.py migrate users 0004
# 😎 Back to clean state - no manual SQL needed!
```

See the difference? With django-rewind, you can switch branches freely without worrying about migration file mismatches! 🎉
With django-rewind, you can switch branches freely without worrying about migration file mismatches! 🎉

### Other Common Scenarios

Expand Down Expand Up @@ -451,11 +453,7 @@ A: Yes! It uses the same security model as Django migrations. Code is only loade
## Roadmap

- [ ] v0.1.0 - MVP release (storage + rollback)
- [ ] v0.2.0 - Django Admin interface
- [ ] v0.3.0 - Advanced verification tools
- [ ] v0.4.0 - Migration conflict resolution
- [ ] v0.5.0 - CI/CD integration helpers
- [ ] v1.0.0 - Production hardening
- [ ] v0.2.0 - Migration conflict resolution

---

Expand Down