manus-to-supabase
Built by the Nometria team. We help developers take apps built with AI tools (Lovable, Bolt, Base44, Replit) to production - handling deployment to AWS, security, scaling, and giving you full code ownership. Learn more →
One-command migration for Manus AI projects: swap MySQL→PostgreSQL, add Supabase auth, wire everything up.
Built for developers who generated a project on Manus and want to self-host it with Supabase + Postgres instead of the managed MySQL that Manus uses by default.
Quick start
# Clone and install (zero runtime deps - pure stdlib)
git clone https://github.com/nometria/manus-to-supabase
cd manus-to-supabase
pip install -e .
# Run in your Manus project directory
manus-to-supabase /path/to/your/manus-project
# Or run in current directory
cd /path/to/manus-project
manus-to-supabase
# After migration: set env vars and install
cat >> .env << 'EOF'
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=eyJ...
SUPABASE_JWT_SECRET=your-jwt-secret
DATABASE_URL=postgresql://user:pass@host:5432/db
EOF
npm install
npm run dev
# Run tests
pytest tests/ -v
What it does
Applies these changes to your Manus project automatically:
package.json- adds@supabase/supabase-js,pg,jose; removesmysql2- Reference files - copies in
Auth.tsx,AuthCallback.tsx,supabase-client.ts,supabase-auth.ts,unified-sdk.tsfrom bundled templates server/_core/env.ts- addssupabaseUrlandsupabaseJwtSecretenv varsserver/_core/index.ts- registersregisterSupabaseAuthRoutesandregisterForgeReplacementRoutesshared/db.ts- patches Drizzle frommysql2topgclient/src/App.tsx- addsAuthandAuthCallbackroute pages.env.example- appends all discoveredSUPABASE_*env vars- Env var scan - scans all
.ts/.tsx/.js/.jsxfiles and prints required vars
Install
pip install manus-to-supabase
Or run without installing:
pipx run manus-to-supabase /path/to/your/manus-project
Usage
# Run in current directory (Manus project root)
manus-to-supabase
# Specify target directory
manus-to-supabase /path/to/manus-project
The script is idempotent - safe to run multiple times.
After migration
Add these to your .env:
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=eyJ...
SUPABASE_JWT_SECRET=your-jwt-secret
DATABASE_URL=postgresql://user:pass@host:5432/db
Then:
npm install
npm run dev
Zero dependencies
The migration script uses only Python stdlib. No pip install required beyond the package itself.
Example output
Running pytest tests/ -v:
============================= test session starts ==============================
platform darwin -- Python 3.13.9, pytest-9.0.2, pluggy-1.5.0
cachedir: .pytest_cache
rootdir: /tmp/ownmy-releases/manus-to-supabase
configfile: pyproject.toml
plugins: anyio-4.12.1, cov-7.1.0
collecting ... collected 9 items
tests/test_migrate.py::test_patch_package_json_adds_supabase_deps PASSED [ 11%]
tests/test_migrate.py::test_patch_package_json_removes_mysql2 PASSED [ 22%]
tests/test_migrate.py::test_patch_package_json_idempotent PASSED [ 33%]
tests/test_migrate.py::test_patch_package_json_skips_missing PASSED [ 44%]
tests/test_migrate.py::test_collect_env_vars_finds_process_env PASSED [ 55%]
tests/test_migrate.py::test_collect_env_vars_finds_import_meta_env PASSED [ 66%]
tests/test_migrate.py::test_collect_env_vars_skips_node_modules PASSED [ 77%]
tests/test_migrate.py::test_patch_env_ts_adds_supabase_vars PASSED [ 88%]
tests/test_migrate.py::test_patch_env_ts_idempotent PASSED [100%]
============================== 9 passed in 0.03s ===============================
See examples/sample-manus-app/ for the typical Manus project structure before migration.
Metadata
Release files for manus-to-supabase 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| manus_to_supabase-0.1.3.tar.gz | 31.3 kB | Without provenance | Details for manus_to_supabase-0.1.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| manus_to_supabase-0.1.3-py3-none-any.whl | Python 3 | none | any | Details for manus_to_supabase-0.1.3-py3-none-any.whl |
Total release size: 45.3 kB
Release files / manus_to_supabase-0.1.3.tar.gz
| Download URL | manus_to_supabase-0.1.3.tar.gz |
|---|---|
| Size | 31.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5dab6788cbc7ddabdd691fb1510f414e2ee9af8d08c836b9c9a58f0c2fe36932
|
|
BLAKE2b-256 checksum How to use checksums |
a2901ec392df86e34944b885b90a2aa0aec3ed0db429b4becb271080ffd498d3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Release files / manus_to_supabase-0.1.3-py3-none-any.whl
| Download URL | manus_to_supabase-0.1.3-py3-none-any.whl |
|---|---|
| Size | 13.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c40e6357f7da7b6fef499998317f04a0f3ba5cb4389641abfd70cd07293df5af
|
|
BLAKE2b-256 checksum How to use checksums |
48c4481d292774476dc09f4895405515eb41e899c6afb35f940fdebcdf09a547
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Security for manus-to-supabase 0.1.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.