diff --git a/README.md b/README.md index cc5975c..c1c0d02 100644 --- a/README.md +++ b/README.md @@ -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. 😰 @@ -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 @@ -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! @@ -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 @@ -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 ---