Repository navigation
Move backend off Railway: Neon Postgres + Render, uploads stored in Postgres - #2
Merged
Merged
Conversation
- neon init: link project (neon.ts, .neon ignored), add @neon/config and @neon/env - Read repo-root .env.local; prefer DATABASE_URL_UNPOOLED (direct endpoint) - Convert libpq sslmode/channel_binding params for asyncpg - Seed creates the admin user only when ADMIN_PASSWORD is set (no admin/admin default) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Profile photo, resume and screenshots go to a new uploaded_files table
(bytea, content type, filename, created time) so they survive restarts
on hosts with ephemeral disks. API paths and /uploads/{filename} URLs are
unchanged; replacing the profile photo deletes the previous one.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- render.yaml: free Python web service, rootDir backend, Python 3.10.12, health check /health, secrets as sync: false - backend/.dockerignore and .gitignore: keep env files, venvs and caches out - DEPLOY.md rewritten for Vercel + Render + Neon; railway.toml marked unused Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
.env.local. It prefersDATABASE_URL_UNPOOLED(the direct endpoint) because it is one long-running process with its own pool and runs DDL at startup. libpqsslmode/channel_bindingare converted for asyncpg.uploaded_filestable (bytea + content type + filename + created time). Render's free disk is ephemeral, so files saved there would be lost. API paths and the/uploads/{filename}URLs are unchanged, so the frontend is untouched. Replacing the profile photo deletes the old one.ADMIN_PASSWORDis set. Previously an emptyuserstable plus a missing env var producedadmin/admin.render.yamldefines a free Python web service:backend, Python 3.10.12, Frankfurt region (closest to Neonaws-eu-west-2).uvicorn main:app --host 0.0.0.0 --port $PORT, health check/health.sync: false.backend/.dockerignore(env files, venvs, caches, uploads) and venv entries in.gitignore.DEPLOY.mdis rewritten for Vercel + Render + Neon. Bothrailway.tomlfiles are marked unused.Not changed:
vercel.jsonandVITE_API_URL. They will point at the Render URL once the service exists.Testing
npm run buildpasses.backend/. I ran Render's build and start commands on Python 3.10.12 with only the Render env vars set. Results:/health200.env,.venvor__pycache__in the image.Known limitations (Render free tier)
contact_messages, but no email is sent.🤖 Generated with Claude Code