Add per-framework "How to deploy X to AWS" quickstarts - #32
Merged
Conversation
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Contributor
Author
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
Contributor
|
Preview deployment for your docs. Learn more about Mintlify Previews.
|
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Co-Authored-By: brandon <brandon@flightcontrol.dev>
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
Adds a
Deploy to AWStab with 27 per-framework quickstarts under/deploy/aws/<framework>. This is a prerequisite for the Flightcontrol→Ravion rebrand of external docs, and a standalone SEO play.~15 external framework doc sites (Astro, Redwood, Docusaurus, Vite, Solid, Nuxt/Nitro, Next.js, Gatsby, Backstage, Hasura, Vike, Nixpacks, Langflow, Cedar) carry a "Deploy to AWS with Flightcontrol" guide whose CTA links into
flightcontrol.dev/docs/reference/examples/<framework>. Since flightcontrol.dev will not redirect to Ravion, we can't send upstream rebrand PRs until equivalent pages exist here — and today Ravion docs have no framework guides at all. These are the landing pages those PRs will point at, plus a wider set to seed guides in frameworks where we have no presence.Slugs are provider-scoped (
/deploy/aws/nextjs, overview at/deploy/aws) so GCP and others slot in as siblings without moving these pages. There is no/deployindex. Titles use the SEO formHow to deploy <X> to AWS;sidebarTitleis the bare framework name.Two archetypes:
rvn-aws-static→ S3 + CloudFront): Angular, Astro, Docusaurus, Gatsby, React, Solid, SvelteKit, Vike, Vite, Vuervn-aws-network+rvn-ecs-cluster+rvn-ecs-web→ ECS Fargate behind an ALB): Backstage, Bun, Django, FastAPI, Flask, Hasura, Hono, Laravel, NestJS, Next.js, Node/Express, Nuxt, Rails, RedwoodJS, Remix, Strapi, TanStack Start — those needing a database also provisionrvn-rdsNext.js, Astro, and SvelteKit each cover both modes on one page (SSR primary, static secondary) rather than splitting the keyword across two URLs.
Every page follows the same shape: short intro → prerequisites → agent prompt →
## Configure the deployment. Framework-specific detail (bind address, port, health path, build mode) lives in the config section rather than the intro.Build modes
Build/start commands, output directories, ports, and health paths were checked against each framework's current docs rather than written from memory, and
build_sourcereflects what Railpack actually detects:railpack— 25 pages, including Rails (Ruby provider:Gemfile+config/application.rb, asset precompile, Bootsnap, jemalloc, native DB deps), Django, Flask, FastAPI, and Bun. These previously shipped hand-written Dockerfiles, which were wrong — Railpack handles all of them. Pages note the detection preconditions that bite: Flask only gets a production start command ifgunicornis a dependency, FastAPI needsuvicornand assumesmain:app, Django's default start runsmigrateon every boot (races across tasks).dockerfile— Backstage only. It genuinely needs one, and specifically the multi-stage Dockerfile from Backstage's deployment docs; thepackages/backend/Dockerfilethatcreate-appscaffolds is the host-build variant and won't work unmodified, since it expectsyarn tsc && yarn build:backendto have run beforedocker build.image_registry— Hasura only, on the officialhasura/graphql-engineimage, since it's a prebuilt product rather than something built from your repo.Ravion injects
PORTfromcontainer_port, so Railpack's${PORT:-8000}defaults resolve correctly without declaringPORTas a runtime variable.Config minimalism
Every
ravion.yamlcarries only inputs whose value differs from the module definition default, so the examples stay minimal and nothing implies a knob the reader needs to think about. Note thatrequired: truein a module definition does not mean the value must be supplied — most of the ECS health-check and stickiness inputs are required-with-default — so requiredness wasn't used as a reason to keep a field. The exceptions are deliberate:build_source(tells you at a glance whether Railpack or a Dockerfile builds the app), andaws_region/aws_account_id(values the reader must consciously replace).health_check_pathandcontainer_portappear only where the framework's real value differs from/and80.Agent prompts
Each page carries a
<Prompt>block (same component as the CI integration page) so a reader can paste a framework-specific brief into their own coding agent. Step 1 of every prompt is mandatory: read and follow the agent workflow, which is the canonical dry-run-then-apply procedure — the prompts no longer duplicate it. Prompts instruct the agent to ask the user for values it can't determine (AWS account ID, repo slug, project ID, credentials) rather than writing placeholders into a file that ships.Shared
DeployPrerequisitesandDeployNextStepssnippets keep the signup/AWS-connect/CLI-apply and next-steps blocks in one place instead of duplicated 27 times.Known gaps
rvn-rdsoutputs into ECS runtime secrets, so the database-backed guides list the required variables and direct the reader to populate a Secrets Manager secret from the RDS outputs. Worth closing in the modules repo.ravion project config apply. This previously required aproj_...KSUID; givenId resolution shipped in flightcontrolhq/flightcontrol#6849 (merged).Verification
vale .,pnpm run validate,mint broken-links, andpnpm run check:og-imagesall pass; page structure is checked mechanically across all 27 pages. Laravel and Next.js spot-checked in the Mintlify preview. CI green.Link to Devin session: https://app.devin.ai/sessions/88a6ae44508044419ec9bef59a73b9a6
Requested by: @flybayer