locksafe 0.3.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. locksafe-0.3.2/.github/workflows/publish-to-pip.yml +71 -0
  2. locksafe-0.3.2/.github/workflows/release.yml +49 -0
  3. locksafe-0.3.2/.gitignore +205 -0
  4. locksafe-0.3.2/.locksafe.toml +5 -0
  5. locksafe-0.3.2/.pre-commit-config.yaml +7 -0
  6. locksafe-0.3.2/PKG-INFO +137 -0
  7. locksafe-0.3.2/README.md +97 -0
  8. locksafe-0.3.2/docs/Acquisition/Affiliate-Marketing/README.md +9 -0
  9. locksafe-0.3.2/docs/Acquisition/Cold-Email/README.md +48 -0
  10. locksafe-0.3.2/docs/Acquisition/Content-Marketing/README.md +40 -0
  11. locksafe-0.3.2/docs/Acquisition/Influencer-Outreach/README.md +9 -0
  12. locksafe-0.3.2/docs/Acquisition/SEO-Wins/README.md +45 -0
  13. locksafe-0.3.2/docs/Acquisition/Social-Media/README.md +9 -0
  14. locksafe-0.3.2/docs/Analytics/AB-Testing/README.md +9 -0
  15. locksafe-0.3.2/docs/Analytics/Cohort-Analysis/README.md +9 -0
  16. locksafe-0.3.2/docs/Analytics/Funnel-Analysis/README.md +9 -0
  17. locksafe-0.3.2/docs/Analytics/KPI-Dashboard/README.md +59 -0
  18. locksafe-0.3.2/docs/Analytics/User-Tracking/README.md +9 -0
  19. locksafe-0.3.2/docs/Conversion/Checkout-Optimization/README.md +9 -0
  20. locksafe-0.3.2/docs/Conversion/Free-Trial/README.md +9 -0
  21. locksafe-0.3.2/docs/Conversion/Freemium-Model/README.md +51 -0
  22. locksafe-0.3.2/docs/Conversion/Pricing-Strategy/README.md +65 -0
  23. locksafe-0.3.2/docs/Conversion/Sales-Funnel/README.md +9 -0
  24. locksafe-0.3.2/docs/Design/Design-System/README.md +43 -0
  25. locksafe-0.3.2/docs/Design/Prototype/README.md +31 -0
  26. locksafe-0.3.2/docs/Design/UI-Design/README.md +29 -0
  27. locksafe-0.3.2/docs/Design/UX-Flows/README.md +49 -0
  28. locksafe-0.3.2/docs/Design/Wireframes/README.md +30 -0
  29. locksafe-0.3.2/docs/Distribution/Communities/README.md +36 -0
  30. locksafe-0.3.2/docs/Distribution/Directories/README.md +9 -0
  31. locksafe-0.3.2/docs/Distribution/Integrations/README.md +9 -0
  32. locksafe-0.3.2/docs/Distribution/Partnerships/README.md +9 -0
  33. locksafe-0.3.2/docs/Distribution/SaaS-Marketplaces/README.md +9 -0
  34. locksafe-0.3.2/docs/Growth/Community-Building/README.md +9 -0
  35. locksafe-0.3.2/docs/Growth/Expansion-Strategy/README.md +9 -0
  36. locksafe-0.3.2/docs/Growth/Product-Led-Growth/README.md +59 -0
  37. locksafe-0.3.2/docs/Growth/Referral-Programs/README.md +9 -0
  38. locksafe-0.3.2/docs/Growth/Viral-Loops/README.md +9 -0
  39. locksafe-0.3.2/docs/Idea/Competitor-Analysis/README.md +55 -0
  40. locksafe-0.3.2/docs/Idea/Market-Research/README.md +57 -0
  41. locksafe-0.3.2/docs/Idea/Niche-Selection/README.md +51 -0
  42. locksafe-0.3.2/docs/Idea/Opportunity-Mapping/README.md +50 -0
  43. locksafe-0.3.2/docs/Idea/Problem-Discovery/README.md +59 -0
  44. locksafe-0.3.2/docs/Launch/Beta-Users/README.md +9 -0
  45. locksafe-0.3.2/docs/Launch/Early-Adopters/README.md +47 -0
  46. locksafe-0.3.2/docs/Launch/Landing-Page/README.md +9 -0
  47. locksafe-0.3.2/docs/Launch/Product-Hunt/README.md +48 -0
  48. locksafe-0.3.2/docs/Launch/Public-Release/README.md +9 -0
  49. locksafe-0.3.2/docs/Planning/Development-Plan/README.md +51 -0
  50. locksafe-0.3.2/docs/Planning/Feature-Prioritization/README.md +40 -0
  51. locksafe-0.3.2/docs/Planning/MVP-Scope/README.md +63 -0
  52. locksafe-0.3.2/docs/Planning/Product-Roadmap/README.md +54 -0
  53. locksafe-0.3.2/docs/Planning/Tech-Stack/README.md +58 -0
  54. locksafe-0.3.2/docs/Retention/Churn-Reduction/README.md +47 -0
  55. locksafe-0.3.2/docs/Retention/Customer-Support/README.md +9 -0
  56. locksafe-0.3.2/docs/Retention/Email-Automation/README.md +9 -0
  57. locksafe-0.3.2/docs/Retention/Feature-Adoption/README.md +9 -0
  58. locksafe-0.3.2/docs/Retention/User-Onboarding/README.md +52 -0
  59. locksafe-0.3.2/docs/Revenue/Add-ons/README.md +9 -0
  60. locksafe-0.3.2/docs/Revenue/Annual-Plans/README.md +9 -0
  61. locksafe-0.3.2/docs/Revenue/Enterprise-Deals/README.md +9 -0
  62. locksafe-0.3.2/docs/Revenue/Subscriptions/README.md +53 -0
  63. locksafe-0.3.2/docs/Revenue/Upsells/README.md +9 -0
  64. locksafe-0.3.2/docs/Scaling/Automation/README.md +9 -0
  65. locksafe-0.3.2/docs/Scaling/Exit-Strategy/README.md +42 -0
  66. locksafe-0.3.2/docs/Scaling/Global-Expansion/README.md +9 -0
  67. locksafe-0.3.2/docs/Scaling/Hiring/README.md +9 -0
  68. locksafe-0.3.2/docs/Scaling/Systems/README.md +9 -0
  69. locksafe-0.3.2/docs/Validation/Customer-Interviews/README.md +68 -0
  70. locksafe-0.3.2/docs/Validation/Demand-Testing/README.md +38 -0
  71. locksafe-0.3.2/docs/Validation/Landing-Page-Test/README.md +55 -0
  72. locksafe-0.3.2/docs/Validation/Pre-Sales/README.md +48 -0
  73. locksafe-0.3.2/docs/Validation/Waitlist/README.md +41 -0
  74. locksafe-0.3.2/locksafe/__init__.py +1 -0
  75. locksafe-0.3.2/locksafe/api/__init__.py +0 -0
  76. locksafe-0.3.2/locksafe/api/routers/__init__.py +0 -0
  77. locksafe-0.3.2/locksafe/cli/__init__.py +0 -0
  78. locksafe-0.3.2/locksafe/cli/commands/__init__.py +0 -0
  79. locksafe-0.3.2/locksafe/cli/commands/analyze.py +47 -0
  80. locksafe-0.3.2/locksafe/cli/commands/version.py +9 -0
  81. locksafe-0.3.2/locksafe/cli/main.py +26 -0
  82. locksafe-0.3.2/locksafe/cli/ui/__init__.py +0 -0
  83. locksafe-0.3.2/locksafe/cli/ui/console.py +3 -0
  84. locksafe-0.3.2/locksafe/cli/ui/renderer.py +59 -0
  85. locksafe-0.3.2/locksafe/cli/ui/theme.py +7 -0
  86. locksafe-0.3.2/locksafe/core/__init__.py +0 -0
  87. locksafe-0.3.2/locksafe/core/analyzer/__init__.py +0 -0
  88. locksafe-0.3.2/locksafe/core/analyzer/migration_analyzer.py +30 -0
  89. locksafe-0.3.2/locksafe/core/config.py +21 -0
  90. locksafe-0.3.2/locksafe/core/engine.py +39 -0
  91. locksafe-0.3.2/locksafe/core/parser/__init__.py +0 -0
  92. locksafe-0.3.2/locksafe/core/parser/parse_sql.py +32 -0
  93. locksafe-0.3.2/locksafe/core/rules/__init__.py +0 -0
  94. locksafe-0.3.2/locksafe/core/rules/add_column_rules.py +80 -0
  95. locksafe-0.3.2/locksafe/core/rules/alter_table_rule.py +31 -0
  96. locksafe-0.3.2/locksafe/core/rules/alter_type_rules.py +22 -0
  97. locksafe-0.3.2/locksafe/core/rules/base_rule.py +14 -0
  98. locksafe-0.3.2/locksafe/core/rules/drop_rules.py +36 -0
  99. locksafe-0.3.2/locksafe/core/rules/engine_rules.py +35 -0
  100. locksafe-0.3.2/locksafe/core/rules/fk_rules.py +44 -0
  101. locksafe-0.3.2/locksafe/core/rules/index_rules.py +55 -0
  102. locksafe-0.3.2/locksafe/core/rules/lock_rules.py +18 -0
  103. locksafe-0.3.2/locksafe/core/rules/rename_rules.py +48 -0
  104. locksafe-0.3.2/locksafe/core/rules/rule_registry.py +49 -0
  105. locksafe-0.3.2/locksafe/core/rules/truncate_rules.py +28 -0
  106. locksafe-0.3.2/locksafe/utils/logger.py +78 -0
  107. locksafe-0.3.2/pyproject.toml +86 -0
@@ -0,0 +1,71 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ permissions:
9
+ contents: write
10
+
11
+ jobs:
12
+ publish:
13
+
14
+ runs-on: ubuntu-latest
15
+
16
+ steps:
17
+
18
+ - name: Checkout repository
19
+ uses: actions/checkout@v4
20
+
21
+ - name: Set up Python
22
+ uses: actions/setup-python@v5
23
+ with:
24
+ python-version: "3.12"
25
+
26
+ - name: Install dependencies
27
+ run: |
28
+ python -m pip install --upgrade pip
29
+ pip install build twine
30
+
31
+ - name: Read version from pyproject.toml
32
+ id: version
33
+ run: |
34
+ python - <<EOF
35
+ import tomllib
36
+ with open("pyproject.toml","rb") as f:
37
+ data = tomllib.load(f)
38
+ version = data["project"]["version"]
39
+ print("VERSION="+version)
40
+ with open("$GITHUB_ENV","a") as f:
41
+ f.write("VERSION="+version+"\n")
42
+ EOF
43
+
44
+ - name: Check if tag already exists
45
+ id: tagcheck
46
+ run: |
47
+ if git rev-parse "v${VERSION}" >/dev/null 2>&1; then
48
+ echo "Tag already exists"
49
+ echo "exists=true" >> $GITHUB_OUTPUT
50
+ else
51
+ echo "exists=false" >> $GITHUB_OUTPUT
52
+ fi
53
+
54
+ - name: Create git tag
55
+ if: steps.tagcheck.outputs.exists == 'false'
56
+ run: |
57
+ git config user.name "github-actions"
58
+ git config user.email "actions@github.com"
59
+ git tag v${VERSION}
60
+ git push origin v${VERSION}
61
+
62
+ - name: Build package
63
+ run: |
64
+ python -m build
65
+
66
+ - name: Publish to PyPI
67
+ run: |
68
+ twine upload dist/*
69
+ env:
70
+ TWINE_USERNAME: __token__
71
+ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
@@ -0,0 +1,49 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ branches:
9
+ - main
10
+
11
+ permissions:
12
+ contents: write
13
+
14
+ jobs:
15
+ build-and-release:
16
+ runs-on: ubuntu-latest
17
+
18
+ steps:
19
+ - name: Checkout repository
20
+ uses: actions/checkout@v4
21
+
22
+ - name: Setup Python
23
+ uses: actions/setup-python@v5
24
+ with:
25
+ python-version: "3.12"
26
+
27
+ - name: Install build tools
28
+ run: |
29
+ python -m pip install --upgrade pip
30
+ pip install build
31
+
32
+ - name: Build package
33
+ run: python -m build
34
+
35
+ - name: Extract version
36
+ if: github.event_name == 'push'
37
+ id: version
38
+ run: |
39
+ VERSION=$(grep '^version' pyproject.toml | head -1 | cut -d '"' -f2)
40
+ echo "version=v$VERSION" >> $GITHUB_OUTPUT
41
+
42
+ - name: Create GitHub Release
43
+ if: github.event_name == 'push'
44
+ uses: softprops/action-gh-release@v2
45
+ with:
46
+ tag_name: ${{ steps.version.outputs.version }}
47
+ files: dist/*
48
+ env:
49
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,205 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[codz]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py.cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ # Pipfile.lock
96
+
97
+ # UV
98
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ # uv.lock
102
+
103
+ # poetry
104
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
105
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
106
+ # commonly ignored for libraries.
107
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
108
+ # poetry.lock
109
+ # poetry.toml
110
+
111
+ # pdm
112
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
113
+ # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
114
+ # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
115
+ # pdm.lock
116
+ # pdm.toml
117
+ .pdm-python
118
+ .pdm-build/
119
+
120
+ # pixi
121
+ # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
122
+ # pixi.lock
123
+ # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
124
+ # in the .venv directory. It is recommended not to include this directory in version control.
125
+ .pixi
126
+
127
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
128
+ __pypackages__/
129
+
130
+ # Celery stuff
131
+ celerybeat-schedule
132
+ celerybeat.pid
133
+
134
+ # Redis
135
+ *.rdb
136
+ *.aof
137
+ *.pid
138
+
139
+ # RabbitMQ
140
+ mnesia/
141
+ rabbitmq/
142
+ rabbitmq-data/
143
+
144
+ # ActiveMQ
145
+ activemq-data/
146
+
147
+ # SageMath parsed files
148
+ *.sage.py
149
+
150
+ # Environments
151
+ .env
152
+ .envrc
153
+ .venv
154
+ env/
155
+ venv/
156
+ myenv/
157
+ ENV/
158
+ env.bak/
159
+ venv.bak/
160
+
161
+ # Spyder project settings
162
+ .spyderproject
163
+ .spyproject
164
+
165
+ # Rope project settings
166
+ .ropeproject
167
+
168
+ # mkdocs documentation
169
+ /site
170
+
171
+ # mypy
172
+ .mypy_cache/
173
+ .dmypy.json
174
+ dmypy.json
175
+
176
+ # Pyre type checker
177
+ .pyre/
178
+
179
+ # pytype static type analyzer
180
+ .pytype/
181
+
182
+ # Cython debug symbols
183
+ cython_debug/
184
+
185
+ # Visual Studio Code
186
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
187
+ # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
188
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
189
+ # you could uncomment the following to ignore the entire vscode folder
190
+ .vscode/
191
+
192
+ # Ruff stuff:
193
+ .ruff_cache/
194
+
195
+ # PyPI configuration file
196
+ .pypirc
197
+
198
+ # Marimo
199
+ marimo/_static/
200
+ marimo/_lsp/
201
+ __marimo__/
202
+
203
+ # Streamlit
204
+ .streamlit/secrets.toml
205
+ test-migrations/
@@ -0,0 +1,5 @@
1
+ [locksafe]
2
+ dialect = "postgres"
3
+ severity_threshold = "LOW"
4
+ exclude_patterns = []
5
+ ignore = []
@@ -0,0 +1,7 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ rev: v0.15.6
4
+ hooks:
5
+ - id: ruff-check
6
+ args: [ --fix ]
7
+ - id: ruff-format
@@ -0,0 +1,137 @@
1
+ Metadata-Version: 2.4
2
+ Name: locksafe
3
+ Version: 0.3.2
4
+ Summary: Postgres migration safety analyzer — catch dangerous operations before they run
5
+ Project-URL: Homepage, https://locksafe.dev
6
+ Project-URL: Repository, https://github.com/yourusername/locksafe
7
+ Project-URL: Issues, https://github.com/yourusername/locksafe/issues
8
+ License: MIT
9
+ Keywords: ci-cd,database,migrations,postgres,safety
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Topic :: Database
15
+ Classifier: Topic :: Software Development :: Quality Assurance
16
+ Requires-Python: >=3.12
17
+ Requires-Dist: click>=8.1.0
18
+ Requires-Dist: rich>=13.0.0
19
+ Requires-Dist: sqlglot[c]>=25.0.0
20
+ Requires-Dist: tomli>=2.0.0; python_version < '3.11'
21
+ Requires-Dist: typing-extensions>=4.12.0
22
+ Provides-Extra: api
23
+ Requires-Dist: asyncpg>=0.29.0; extra == 'api'
24
+ Requires-Dist: boto3>=1.35.0; extra == 'api'
25
+ Requires-Dist: fastapi>=0.115.0; extra == 'api'
26
+ Requires-Dist: pydantic>=2.0.0; extra == 'api'
27
+ Requires-Dist: python-multipart>=0.0.9; extra == 'api'
28
+ Requires-Dist: razorpay>=1.4.0; extra == 'api'
29
+ Requires-Dist: sentry-sdk[fastapi]>=2.0.0; extra == 'api'
30
+ Requires-Dist: uvicorn[standard]>=0.30.0; extra == 'api'
31
+ Provides-Extra: dev
32
+ Requires-Dist: httpx>=0.27.0; extra == 'dev'
33
+ Requires-Dist: mypy>=1.11.0; extra == 'dev'
34
+ Requires-Dist: pre-commit>=3.7.0; extra == 'dev'
35
+ Requires-Dist: pytest-asyncio>=0.24.0; extra == 'dev'
36
+ Requires-Dist: pytest-cov>=5.0.0; extra == 'dev'
37
+ Requires-Dist: pytest>=8.0.0; extra == 'dev'
38
+ Requires-Dist: ruff>=0.7.0; extra == 'dev'
39
+ Description-Content-Type: text/markdown
40
+
41
+ # 🔒 LockSafe
42
+
43
+ > **Stop production downtime caused by unsafe Postgres migrations — before they ever run.**
44
+
45
+ LockSafe analyzes Postgres migration files, detects dangerous operations, estimates lock duration, and rewrites migrations using safe patterns — integrated directly into CI/CD.
46
+
47
+ ---
48
+
49
+ ## The Product
50
+
51
+ | | |
52
+ |---|---|
53
+ | **Problem** | Alembic, Flyway, Liquibase run migrations with zero safety awareness |
54
+ | **Solution** | Pre-run static analyzer + CI/CD integration + safe rewrite engine |
55
+ | **Free tier** | `pip install locksafe` — local CLI, forever free, no account needed |
56
+ | **Team plan** | ₹1,499/mo — GitHub Action, PR comments, lock estimator, dashboard |
57
+ | **Business plan** | ₹4,999/mo — safe rewrite engine, Slack alerts, audit log |
58
+ | **MRR target** | ₹50,000 by Month 3 · ₹2,00,000 by Month 9 |
59
+
60
+ ---
61
+
62
+ ## Build Timeline
63
+
64
+ | Phase | Dates | Status |
65
+ |---|---|---|
66
+ | Project setup + CLI scaffold | Mar 14 – Mar 28 | 🟡 In progress |
67
+ | SQL parser + risk rule engine | Mar 28 – Apr 18 | ⬜ Upcoming |
68
+ | Safe rewrite engine | Apr 18 – May 9 | ⬜ Upcoming |
69
+ | GitHub Actions integration | May 9 – May 23 | ⬜ Upcoming |
70
+ | Payments + landing page | May 23 – May 30 | ⬜ Upcoming |
71
+ | Beta testing + bug fixes | May 30 – Jun 12 | ⬜ Upcoming |
72
+ | **Public launch** | **Jun 12, 2026** | ⬜ Upcoming |
73
+ | First revenue target | Jun 26, 2026 | ⬜ Upcoming |
74
+
75
+ ---
76
+
77
+ ## Repo Structure
78
+
79
+ ```
80
+ .
81
+ ├── README.md
82
+
83
+ ├── docs/ # Business, strategy, and product decisions
84
+ │ ├── Idea/ # Problem discovery, market research, competition
85
+ │ ├── Validation/ # Customer interviews, waitlist, pre-sales
86
+ │ ├── Planning/ # Roadmap, MVP scope, tech stack, dev plan
87
+ │ ├── Design/ # Wireframes, UX flows, design system
88
+ │ ├── Launch/ # Landing page, Product Hunt, early adopters
89
+ │ ├── Acquisition/ # SEO, content, social, cold email
90
+ │ ├── Distribution/ # Directories, communities, partnerships
91
+ │ ├── Conversion/ # Funnel, pricing, freemium, checkout
92
+ │ ├── Revenue/ # Subscriptions, upsells, enterprise
93
+ │ ├── Analytics/ # Tracking, funnels, KPIs, A/B tests
94
+ │ ├── Retention/ # Onboarding, email automation, churn
95
+ │ ├── Growth/ # Referrals, PLG, viral loops
96
+ │ └── Scaling/ # Automation, hiring, exit
97
+
98
+ └── tech/ # Engineering decisions and implementation docs
99
+ ├── Development/ # Backend, frontend, APIs, database, auth
100
+ ├── Infrastructure/ # Cloud hosting, DevOps, CI/CD, monitoring
101
+ └── Testing/ # Unit, integration, performance, beta
102
+ ```
103
+
104
+ ---
105
+
106
+ ## Tech Stack
107
+
108
+ ```
109
+ CLI → Python + Click pip install locksafe
110
+ SQL Parser → sqlglot Postgres AST, no regex
111
+ Backend API → FastAPI + asyncpg Async, raw SQL, no ORM
112
+ Database → PostgreSQL RDS on AWS
113
+ File Storage → AWS S3 Report archives
114
+ Payments → Razorpay Subscriptions + webhooks
115
+ Deployment → Docker Compose → EC2 (MVP) → EKS + Terraform (post-revenue)
116
+ ```
117
+
118
+ ---
119
+
120
+ ## Quick Links
121
+
122
+ | | |
123
+ |---|---|
124
+ | Product & feature spec | [docs/Planning/MVP-Scope](docs/Planning/MVP-Scope/README.md) |
125
+ | Full roadmap | [docs/Planning/Product-Roadmap](docs/Planning/Product-Roadmap/README.md) |
126
+ | Tech stack decisions | [docs/Planning/Tech-Stack](docs/Planning/Tech-Stack/README.md) |
127
+ | Development plan | [docs/Planning/Development-Plan](docs/Planning/Development-Plan/README.md) |
128
+ | Pricing strategy | [docs/Conversion/Pricing-Strategy](docs/Conversion/Pricing-Strategy/README.md) |
129
+ | Backend architecture | [tech/Development/Backend](tech/Development/Backend/README.md) |
130
+ | Database schema | [tech/Development/Database](tech/Development/Database/README.md) |
131
+ | CI/CD setup | [tech/Infrastructure/CI-CD](tech/Infrastructure/CI-CD/README.md) |
132
+ | Competitor analysis | [docs/Idea/Competitor-Analysis](docs/Idea/Competitor-Analysis/README.md) |
133
+ | KPI dashboard | [docs/Analytics/KPI-Dashboard](docs/Analytics/KPI-Dashboard/README.md) |
134
+
135
+ ---
136
+
137
+ *Solo build · Part-time · 10–20 hrs/week · Started March 14, 2026*
@@ -0,0 +1,97 @@
1
+ # 🔒 LockSafe
2
+
3
+ > **Stop production downtime caused by unsafe Postgres migrations — before they ever run.**
4
+
5
+ LockSafe analyzes Postgres migration files, detects dangerous operations, estimates lock duration, and rewrites migrations using safe patterns — integrated directly into CI/CD.
6
+
7
+ ---
8
+
9
+ ## The Product
10
+
11
+ | | |
12
+ |---|---|
13
+ | **Problem** | Alembic, Flyway, Liquibase run migrations with zero safety awareness |
14
+ | **Solution** | Pre-run static analyzer + CI/CD integration + safe rewrite engine |
15
+ | **Free tier** | `pip install locksafe` — local CLI, forever free, no account needed |
16
+ | **Team plan** | ₹1,499/mo — GitHub Action, PR comments, lock estimator, dashboard |
17
+ | **Business plan** | ₹4,999/mo — safe rewrite engine, Slack alerts, audit log |
18
+ | **MRR target** | ₹50,000 by Month 3 · ₹2,00,000 by Month 9 |
19
+
20
+ ---
21
+
22
+ ## Build Timeline
23
+
24
+ | Phase | Dates | Status |
25
+ |---|---|---|
26
+ | Project setup + CLI scaffold | Mar 14 – Mar 28 | 🟡 In progress |
27
+ | SQL parser + risk rule engine | Mar 28 – Apr 18 | ⬜ Upcoming |
28
+ | Safe rewrite engine | Apr 18 – May 9 | ⬜ Upcoming |
29
+ | GitHub Actions integration | May 9 – May 23 | ⬜ Upcoming |
30
+ | Payments + landing page | May 23 – May 30 | ⬜ Upcoming |
31
+ | Beta testing + bug fixes | May 30 – Jun 12 | ⬜ Upcoming |
32
+ | **Public launch** | **Jun 12, 2026** | ⬜ Upcoming |
33
+ | First revenue target | Jun 26, 2026 | ⬜ Upcoming |
34
+
35
+ ---
36
+
37
+ ## Repo Structure
38
+
39
+ ```
40
+ .
41
+ ├── README.md
42
+
43
+ ├── docs/ # Business, strategy, and product decisions
44
+ │ ├── Idea/ # Problem discovery, market research, competition
45
+ │ ├── Validation/ # Customer interviews, waitlist, pre-sales
46
+ │ ├── Planning/ # Roadmap, MVP scope, tech stack, dev plan
47
+ │ ├── Design/ # Wireframes, UX flows, design system
48
+ │ ├── Launch/ # Landing page, Product Hunt, early adopters
49
+ │ ├── Acquisition/ # SEO, content, social, cold email
50
+ │ ├── Distribution/ # Directories, communities, partnerships
51
+ │ ├── Conversion/ # Funnel, pricing, freemium, checkout
52
+ │ ├── Revenue/ # Subscriptions, upsells, enterprise
53
+ │ ├── Analytics/ # Tracking, funnels, KPIs, A/B tests
54
+ │ ├── Retention/ # Onboarding, email automation, churn
55
+ │ ├── Growth/ # Referrals, PLG, viral loops
56
+ │ └── Scaling/ # Automation, hiring, exit
57
+
58
+ └── tech/ # Engineering decisions and implementation docs
59
+ ├── Development/ # Backend, frontend, APIs, database, auth
60
+ ├── Infrastructure/ # Cloud hosting, DevOps, CI/CD, monitoring
61
+ └── Testing/ # Unit, integration, performance, beta
62
+ ```
63
+
64
+ ---
65
+
66
+ ## Tech Stack
67
+
68
+ ```
69
+ CLI → Python + Click pip install locksafe
70
+ SQL Parser → sqlglot Postgres AST, no regex
71
+ Backend API → FastAPI + asyncpg Async, raw SQL, no ORM
72
+ Database → PostgreSQL RDS on AWS
73
+ File Storage → AWS S3 Report archives
74
+ Payments → Razorpay Subscriptions + webhooks
75
+ Deployment → Docker Compose → EC2 (MVP) → EKS + Terraform (post-revenue)
76
+ ```
77
+
78
+ ---
79
+
80
+ ## Quick Links
81
+
82
+ | | |
83
+ |---|---|
84
+ | Product & feature spec | [docs/Planning/MVP-Scope](docs/Planning/MVP-Scope/README.md) |
85
+ | Full roadmap | [docs/Planning/Product-Roadmap](docs/Planning/Product-Roadmap/README.md) |
86
+ | Tech stack decisions | [docs/Planning/Tech-Stack](docs/Planning/Tech-Stack/README.md) |
87
+ | Development plan | [docs/Planning/Development-Plan](docs/Planning/Development-Plan/README.md) |
88
+ | Pricing strategy | [docs/Conversion/Pricing-Strategy](docs/Conversion/Pricing-Strategy/README.md) |
89
+ | Backend architecture | [tech/Development/Backend](tech/Development/Backend/README.md) |
90
+ | Database schema | [tech/Development/Database](tech/Development/Database/README.md) |
91
+ | CI/CD setup | [tech/Infrastructure/CI-CD](tech/Infrastructure/CI-CD/README.md) |
92
+ | Competitor analysis | [docs/Idea/Competitor-Analysis](docs/Idea/Competitor-Analysis/README.md) |
93
+ | KPI dashboard | [docs/Analytics/KPI-Dashboard](docs/Analytics/KPI-Dashboard/README.md) |
94
+
95
+ ---
96
+
97
+ *Solo build · Part-time · 10–20 hrs/week · Started March 14, 2026*
@@ -0,0 +1,9 @@
1
+ # Affiliate Marketing
2
+
3
+ ## Status
4
+
5
+ Planned — see [Product Roadmap](../../Planning/Product-Roadmap/README.md) for timeline.
6
+
7
+ ---
8
+
9
+ *Last updated: March 2026*
@@ -0,0 +1,48 @@
1
+ # Cold Email
2
+
3
+ ## Target: Engineering leads and platform engineers at Postgres-using startups
4
+
5
+ ---
6
+
7
+ ## List Building
8
+
9
+ - LinkedIn search: "platform engineer" + "backend" at Series A/B Indian startups
10
+ - GitHub: contributors to Alembic, Flask-Migrate, Django-migrations
11
+ - AngelList / YC company list filtered by tech stack
12
+
13
+ ---
14
+
15
+ ## Email Template
16
+
17
+ **Subject:** "Quick question about your Postgres migration workflow"
18
+
19
+ **Body:**
20
+ Hi [Name],
21
+
22
+ I'm building LockSafe — a CLI tool that analyzes Postgres migrations before they run and flags dangerous operations (non-concurrent indexes, table rewrites, etc.).
23
+
24
+ Has your team ever had a migration cause unexpected downtime in production?
25
+
26
+ If yes, I'd love 15 minutes to understand your workflow and see if LockSafe could help. No pitch — just genuinely trying to understand the problem.
27
+
28
+ If you're curious: `pip install locksafe && locksafe check <any migration file>` takes 10 seconds.
29
+
30
+ [Your name]
31
+
32
+ ---
33
+
34
+ ## Personalization Notes
35
+
36
+ - Reference a specific technology they use (Alembic, SQLAlchemy)
37
+ - Mention any open-source work they've done
38
+ - If they've written about database ops publicly, reference that post
39
+
40
+ ---
41
+
42
+ ## Metrics
43
+
44
+ Target: 50 emails/week, 20% reply rate, 5% book a call.
45
+
46
+ ---
47
+
48
+ *Last updated: March 2026*
@@ -0,0 +1,40 @@
1
+ # Content Marketing
2
+
3
+ ## Strategy
4
+
5
+ Educate developers about migration safety. Position LockSafe as the resource they find when they search for this topic.
6
+
7
+ ---
8
+
9
+ ## Content Types
10
+
11
+ ### Blog posts (high effort, high ROI)
12
+ - Deep technical posts on migration dangers
13
+ - "We analyzed 10,000 Alembic migration files — here's what we found"
14
+ - Post-mortems of migration-caused incidents (with permission or fictionalized)
15
+
16
+ ### Twitter/X threads (low effort, fast distribution)
17
+ - "7 Postgres operations that can take down production (thread 🧵)"
18
+ - "The right way to add a NOT NULL column without downtime"
19
+ - Reply to threads about production incidents with helpful context
20
+
21
+ ### README / docs (permanent, compounds)
22
+ - The CLI's README is a content asset
23
+ - Clear, detailed rule explanations in `locksafe explain`
24
+ - Docs site with migration safety guide
25
+
26
+ ---
27
+
28
+ ## Content Calendar (Post-Launch)
29
+
30
+ | Month | Post |
31
+ |---|---|
32
+ | Jun | "Why we built LockSafe" — founder story post |
33
+ | Jul | "CREATE INDEX CONCURRENTLY: complete guide" |
34
+ | Aug | "Postgres lock types every backend engineer should know" |
35
+ | Sep | "How to add NOT NULL columns to large Postgres tables" |
36
+ | Oct | "Migration horror stories: a collection" |
37
+
38
+ ---
39
+
40
+ *Last updated: March 2026*
@@ -0,0 +1,9 @@
1
+ # Influencer Outreach
2
+
3
+ ## Status
4
+
5
+ Planned — see [Product Roadmap](../Planning/Product-Roadmap/README.md) for timeline.
6
+
7
+ ---
8
+
9
+ *Last updated: March 2026*