Workaround for Bolt.new login
but work around instructions would be great. loom video, audio message, text, whatever works for you.
55 Replies
this is copied from my local computer, at ~/.convex/config.json

This is what login normally does, it gets a token and stores it here
the command that's hard to read here should be
Ah ok. Perfect.
Thank you sir. Much appreciated
worked perfectly
@ballingt so I I think im going to be ready to send this to prod. Obviously the bolt to netlify and also convex is a bit interesting.
do I need to deviate from the documentation I see on convex about building and deploying the production enviornment for convex.
bolt typically 2 stages the build. it does a prebuild locally, then ships to netlify for final compiling.
hm, and it never gets stored in GitHub yeah, just direct from bolt?
yep.
80% of the bolt userbase is non technical and doesnt understand commit, push, pull, etc.
cool, I'll try this flow now
ultimately bolt and stackblitz maintain extensive back ups
Can you still enter build commands in Netlify?
so bolt lets you modify the netlify.toml so I think so
cool
that would be the file, right?
What's your intention, you want two separate deployments, right?
i mean ive never gotten a convex build this far.
your dev convex deployment that you can keep iterating on, and prod that won't change while you're changing your dev?
3.7 made it possible.
uhhh
The normal instructions are based around the idea that you have two separate databases
ah ok
so, thats the "right" thing to do of course.
one that you iterate on while developing, and another that powers your production site
so technically a project COULD run on a production dev
sorry
flip that
it could run on a dev deploy
vs the production deploy.
which is kinjda what bolt has people doing now, with the supabase integration
Got it, ok so if we do push the dev vs prod flow we need to do some user education
yes
maybe the thing to make easy is a single environment then
i am the 1%
that understands the difference lol
in which case yes the instructions will look different, let me try the flow
got it. I wonder if you need to give users an option to make integration easier.
you could call it LLM Builder mode.
You can let people choose to run the deploy/prod dual environment.
OR you can let them run a single environment that uses versioning.
This way convex still retains a "how are we different" edge in that, if you break your database, you can still roll it back to a working version and let them roll backups back like 15 days on the free plan, a year on the paid plan.
You can also make that a slightly reduced cost (not that your plans are unaffordable, im also on the creator/affiliate team for you guys) as an additional advantage.
because supabase is the current "pick me" but its heavy as shit with postgres and doing ANYTHING inside of its interface related to back ups or rolling back backups is a NIGHTMARE.
so I actually think this is a decent drilling point for you guys.
(20 year marketing guy, im always looking at everything through that lens)
OK @Gabe F. the instructions for deploying to Netlify are... just click the button!
catching up on these messages, totally, this makes sense
So the way Bolt seems to build is that is that it does a static build (an SPA) and ships that to Netlify. Which is great, because it's during this buyild process that the CONVEX_URL gets backed into the app. So by default, you just get this dev URL baked in.
For now I'm just looking and making sure this is easy, but yeah going forward we need to have an upgrade flow or a differentiating flow or something
But the way bolt builds these is pretty simple, as you pointed out it just builds and then ships, which is great.
And we keep convex in dev mode?
One thing that would be cool to see build in to convex is a terminal shortcut or possibly an overlay component that will run commands in the terminal. For example, when you reload in bolt, it can lose the auth connector because it's a virtualized enviornment.
So a small like, corner pop up that is directly connected to the terminal to run functions would be a MASSIVE plus for adopting on LLM builders.
Yeah with this style you'll be using the same database
If you dont' want to do that, you can create a .env.production with your prod URL, and I think that would be used instead — but for now pushing people to just use one seems reasonable?
Yes I agree.
or example, when you reload in bolt, it can lose the auth connector because it's a virtualized enviornment.What's the auth connector, like if you're using convex auth?
Meaning just the connection to convex to sync functions
ah got it, yeah ideally you change the package.json "run" script to run both
vite
and npx convex dev
(because npm run dev
happens automatically when you reload)
but if we're not going to help you with that, then yeah some way to say "sync now" seems useful
what's that look like for the supabase integration, how do you push your e.g. schema?Supabase has rapid adoption in bolt because of the UI button click to create database. I'm sure that's something you can build into the NPM so it appears in the window that includes basic functions like auth to your project to create connection, or create a new project, and then a function sync. Ability to add verbose/explicits to those functions since Claude doesn't understand the mutation thing very well yet.
Something like that would then take the terminal out of the picture for the reeeees
It pushes through below builder level API integration
To allow it to pass through to Supabase.
Bolt writes the migration, then you get an alert to push the migration. Click migrate, done
We need the terminal process to run because that's what bundles the code up and sends it in, but we can figure out a way to make that automatic
Honestly, the UI component, similar to how astro has would work
I promise you
Got it, yeah makes sense
As far as migrations, that's been a struggle sometimes because it trys to push new schema without migrations first.
So how would one push a migration through the terminal?
in the end if the terminal process isn't running, that's nothing the web app can do to change that — but we can at minimum make sure the "run" script is modified
what was the flow you used, saying "I want to use Convex" and then it installed convex and run
npx convex dev
for you?I told it from the get go to use convex, it installed the public npm. Claude finally got that fixed.
It was pulling old versioning previously.
But yes it ran the install with the rest of the project, then ran npx convex dev
Generally it's
1. make the new fields optional in the schema
2. backfill it with a script or manually
3. make the new fields not optional
or easy mode,
1. delete all data
2. change the schema
and I didn't include "push the schema" steps in there because generally you're running the syncing command
npx convex dev
via npm run dev
That's absolutely terrifying on easy mode lol
Yeet delete lol
When I'm in cursor it's figured out the need for the three steps by reading the error message from the first push where it tried to change the schema
Ok so I guess I just need to understand what I need to tell bolt ⚡ n natural language to prevent schema failure on convex dev sync
In*
but yeah maybe we need a higher level thing if we're not always sycning, for the llm to "run the migration" where that means these steps
I guess it can't read the error message?
or did it run the
npx convex dev --once
So it will throw the error, bolt feeds the error into the chat, you then click FIX
It doesn't auto fix back and fourth
It will attempt the fix, then tell you "it's fixed now" then you sync again and throws another.
what throws an error, the preview browser or the terminal command?
It does get the error context but it would also be easier if I knew what I needed to tell convex ahead of time to write the schema changes correctly OR what I should tell it to first.
The terminal
Chat can read the terminal
sounds like we should instruct it to run these commands itself, or maybe use an MCP server to ask "hey is there already a syncing command running?" and if so just wait for the sync, butif not run the sync manually
cool
No mcp support in bolt yet
ok well anything mcp can do our CLI can do for now
So let me get back to PC in a sec
ok @ballingt
I would suggest the following
- create a UI component that renders in the preview window that is similar to that of Astro. You can navigate through a small menu that is able to ship commands through the terminal including setting verbose and explicits (its a requirement to use disablestypescript for bolt because of how claude writes)
This is a non-technical adoption tool because very few understand whats happening in the terminal.
- if bolt is going to work with convex in dev-only back end got it - does any additional hardening need to be done to ensure its still safe.
- could at some point an operational mode that supports versioning of a single dev mode be built? again, mindset of supporting LLM builders.
- since claude currently likes to just write schema changes and attempts to sync them without the rows, tables or columns being there, what steps do we need to take to ensure claude does things in a specific order that ensures you dont run into an error loop? (deleting data not really an option because non-technical)
- the AI rules that are written, may need to be updated to include the specific steps related to database, field and table changes so they are done in a specific order.
so my ask is:
in natural language - what should I tell bolt to do related to schema changes. "hey, we are changing the schema on X, before you program that into a function, we need to do XYZ first"
is there a way to get constant sync to work and have it make the sync (npx convex dev) with the typescript explicit attached?
thank this is good stuff!
- What does versioning a single dev mode mean?
- say more about --typescript=disable if that's what you're talking about, sounds like your project doesn't typecheck and you're fine with that, and you figure this is probably the default? Generally we do want the LLM to see "oh there's a type error, better fix;" but if it's true that generally projects don't typecheck, then sure that seems reasonable
hardening? no additional hardening need to be done to ensure its still safe, the differences are that more error messages are visible instead of being removed
what steps do we need to take to ensure claud does things in a specific order? hm same as supabase, if you're adding columns that are required then you ought to run a migration that adds them. But it is a little different, it's your job (Claude's job) to read the errors from the schema change, see that it needs to make things optional, then change the data by writing a mutatino and running it.
agree on ai rules that are written needing to be updated, I wonder how we hook into that — we have a set of rules that we run evals so we're confident in them, we could just dump these in the filesystem?
in natural language - what should I tell bolt to do related to schema changesHm we have this in other rules, but something like "we need to first make our schema allow both old and new data, then write a function that will migrate all the data, then run that function, then change the schema to be stricter"
is there a way to get constant sync to work and have it make the sync (npx convex dev) with the typescript explicit attached?yeah, it's
npx convex dev --typecheck disable
, or if you don't want it to be continuous it's npx convex dev --typecheck disable --once
Curious especially about the disabling typescript, obviously we provide that so people can do it, but if typescript is installed we assume that people want to typecheckof course.
claude for some reason cant seem to get it.
i think its because of how convex uses mutations
it makes change after change after change and the errors just keep stacking up.
its wild.
the app works great, no errors print in bolt for any reason.
convex how ever, very angry
What does versioning a single dev mode mean - meaning, without using the split dev/production featur that convex has. essentially you just keep it in dev instead of deploying to production convex.
but in order to get ANYTHING into convex without an obscene amount of error looping, which claude is typically good at fixing for normal react/vite stuff, the way it writes the code for convex, just pisses off convex so much that i cant get anything pushed/synced with out the --typescript=disable
even though I've fed the project the rules and the entire "this is how convex works" it still gets it wrong so badly that you end up fixing an error in the function, it tries to sync, it causes 5 more.
got it, yeah this shouldn't be bad, mostly docs
send you a DM with a mermaid of the project im working on.
This WAS working great. and now, it behaves the same as the other way. unsure as to how that happend.
nvm. forgot the token changes LOL