Skip to main content
Career, Learning & Web Development Fundamentals

The Modern Web Development Workflow, Day to Day: From Ticket to Production

By Obaid Tariq, Founder & Lead Engineer · Published

The short answer

A modern web development workflow turns every change into a small, reviewed, tested and reversible step. Work starts from a clear ticket, happens on a short-lived Git branch, often with an AI coding agent doing part of the implementation, and goes through a pull request where automated CI checks and a preview deployment run before a person reviews it. Merging deploys to production, and monitoring tells the team quickly whether anything went wrong. The tools vary; the principles of small changes, automated checks and human accountability don't.

What does a modern web development workflow look like day to day?

A developer picks up a small, well-defined ticket, creates a branch, implements the change (often with an AI agent working against tests), and opens a pull request. Continuous integration runs type checks, linting and tests, a preview deployment gives everyone a working URL, and a teammate reviews the change before it is merged and deployed. Monitoring and error tracking then confirm it works for real users, and the cycle repeats several times a day.

The principles behind the tools

Teams use different tools, but good workflows share four ideas. Small changes, because small changes are easy to review and easy to undo. Automated checks, because machines are better than people at noticing a broken type or a failing test. A working preview of every change, because reviewing a running app catches problems that reading code misses. And a person accountable for every merge, whether the code was written by a human or an AI agent.

A day in the life: one feature from ticket to production

Here is a realistic day for a developer on a small product team adding a "export invoices to CSV" feature. The times are illustrative.

An illustrative day of a modern web development workflow for one small feature
WhenWhat happensWhy it matters
09:00Check overnight alerts, error tracker and any failed scheduled jobsProduction problems come before new work
09:15Short stand-up: what shipped, what's next, what's blockedKeeps work small and visible
09:30Read the ticket; confirm acceptance criteria (who can export, which fields, how large)Most rework comes from unclear requirements
09:45Create a branch such as feat/invoice-csv-exportIsolates the change from the main branch
10:00Ask an AI agent to explore the invoice code and propose a plan; review and adjust the planCatches wrong approaches before any code is written
10:30Write or have the agent write failing tests for the acceptance criteria, including "a user cannot export another organisation's invoices"Tests become the definition of done for human and agent
11:00Agent implements; developer reviews each diff, runs the tests and fixes what's wrongThe developer stays responsible for every line
12:30Push the branch and open a draft pull request with a description and screenshotsCI and a preview deployment start automatically
13:30Fix a lint failure and a slow query flagged in CI; check the preview URL on a phoneProblems found here cost minutes, not incidents
14:30Mark the PR ready; an automated AI review comments, then a teammate reviewsTwo different kinds of review catch different things
15:30Address review comments with new commits; CI re-runsReview is a conversation, not a gate to argue with
16:00Merge; production deploys automatically, behind a feature flagShipping and releasing are separate decisions
16:15Turn the flag on for internal users; watch error rates and logsReal-world confirmation before everyone gets it
16:45Delete the branch, update the ticket, note anything for tomorrowKeeps the repository and board tidy

Branching: keep it simple and short-lived

Most web teams use a branch-based workflow close to GitHub flow. GitHub's documentation describes six steps: create a branch, make changes with clear commits, open a pull request, address review comments, merge, and delete the branch. It recommends keeping each commit to one complete, isolated change and using a separate branch for each unrelated set of changes.

  • One main branch that is always deployable, usually called main.
  • Short-lived feature branches, ideally merged within a day or two. Long-running branches create painful merge conflicts and big, hard-to-review pull requests.
  • Descriptive branch names with a type prefix, such as feat/, fix/ or chore/, which makes the history easy to scan.
  • Protected main branch. GitHub's branch protection rules can require pull request reviews, require status checks to pass, require conversations to be resolved, and block force pushes. Turning these on means nobody, human or agent, can push untested code straight to production.

Pull requests: the unit of work

A pull request is where a change is explained, checked and agreed. A good one is small (in our view, a reviewer should be able to read it properly in under half an hour), has a description of the problem and the solution, links to the ticket, includes screenshots or a short recording for UI changes, and notes anything risky such as a database migration. Open it as a draft early if you want feedback on direction before it is finished.

CI: the checks that run on every change

Continuous integration (CI) runs automated checks every time code is pushed. Continuous delivery or deployment (CD) takes the merged result to an environment automatically. Together, CI/CD means the path from commit to production is the same every time. A typical set of CI checks for a TypeScript web app:

Typical CI checks for a modern web application and what each catches
CheckWhat it catchesTypical run time
Install with a lockfileDependencies that differ from what was testedShort
Type check (for example tsc --noEmit)Wrong types, missing fields, broken importsShort
Lint and format checkCommon bugs, inconsistent style, unused codeShort
Unit testsBroken business logic in individual functionsShort
Integration testsBroken database queries, API routes and service boundariesMedium
BuildAnything that stops the app compiling for productionMedium
End-to-end tests on key journeysBroken sign-up, login, checkout or core workflow in a real browserLonger
Dependency and secret scanningKnown vulnerable packages and committed credentialsShort

Two GitHub features are worth enabling on any repository. Push protection, part of secret scanning, blocks hardcoded credentials before they reach the repository. Dependabot security updates open pull requests that update vulnerable dependencies to a patched version, which then go through the same CI checks as any other change.

Preview deployments: review the running app

A preview deployment is a live copy of the app built from a branch or pull request. Using Vercel as the example, its documentation says it creates a preview deployment by default when you push to a branch that isn't the production branch or open a pull request, and that each deployment gets an automatically generated URL, typically posted as a comment on the pull request. Other hosting platforms offer similar features; check their documentation for the details. Previews let designers, product managers and clients check a change without installing anything, and let reviewers test on real phones.

Working with AI agents, with review built in

AI coding agents such as Claude Code and Cursor's Agent can read a codebase, edit files and run commands, so they fit naturally into this workflow. The discipline is what keeps it safe. Anthropic's Claude Code best-practice documentation recommends:

  • Explore, then plan, then code. Have the agent read the relevant code and propose a plan before it changes anything, especially for changes across several files.
  • Give it a way to verify its work, such as tests, a build or a screenshot comparison, and ask it to show evidence such as test output rather than just claiming success.
  • Keep project rules in a file the agent reads, such as CLAUDE.md, covering commands, code style and branch and PR conventions.
  • Review in a fresh context. A separate session or subagent reviewing the diff is not biased towards code it just wrote.

AI code review tools that comment on pull requests are useful as a first pass: they are quick and consistent at spotting common mistakes. In our view they should add to human review, not replace it, and changes to authentication, permissions, payments and data deletion should always get a human reviewer who understands the system. For the specific risks of unreviewed AI output, see the risks of shipping AI-generated code.

Code review: what reviewers look for

Google's published engineering practices give a useful standard: approve a change once it definitely improves the overall code health of the system, even if it isn't perfect. Reviews that demand perfection slow teams down; reviews that rubber-stamp let problems through. A practical checklist:

  1. Does it do what the ticket asked, and nothing unrelated?
  2. Are authorisation checks in place for every new data access?
  3. Are the important behaviours tested, including failure cases?
  4. Is it understandable without the author explaining it?
  5. Does the preview deployment behave correctly, including on mobile and with a keyboard?
  6. Is anything risky, such as a migration or a new dependency, called out and justified?

Automated testing: the test pyramid

The test pyramid, introduced by Mike Cohn and explained in detail in Ham Vocke's article on Martin Fowler's site, says to write many small, fast unit tests, fewer integration tests, and very few end-to-end tests, because high-level tests are slower, more brittle and more expensive to maintain. The article warns against the "ice-cream cone" shape: lots of end-to-end tests and few unit tests. AI agents make writing tests cheaper, which makes it tempting to generate huge suites; the pyramid is a reminder to put each test at the lowest level that can catch the problem.

The layers of the test pyramid in a typical web app
LayerExampleHow many
UnitA function that formats invoice rows as CSVMany
IntegrationThe API route that fetches invoices for the current organisation from a test databaseSome
End-to-endA browser test that logs in, clicks Export and downloads a fileA few, for the key journeys only

Releasing: deploy often, release deliberately

  • Merging deploys. On most modern platforms, merging to the production branch triggers a production deployment automatically.
  • Feature flags separate deploy from release. Code can be in production but switched off, then enabled for staff, a few customers, then everyone.
  • Database migrations go first and stay backwards compatible, so the old and new versions of the app can both run during a deploy.
  • Know how to roll back. Most hosting platforms let you return to an earlier deployment; find out how yours does it. Vercel's documentation also describes staging a production deployment, checking it on its generated URL, then promoting it to your production domains without rebuilding. Practise the rollback before you need it.

Monitoring: closing the loop

A change isn't finished when it merges; it is finished when it works for users. At minimum, run error tracking on the front end and the server, uptime checks on key pages and APIs, structured logs for important events, and alerts that go to a person who will act on them. Watch the error tracker for an hour after a significant release. Performance matters too: our guide to Core Web Vitals covers what to measure. For how the hosting side fits in, see deploying SaaS on Vercel, Railway or AWS.

The weekly rhythm

An example weekly rhythm for a small web product team
DayTeam activityPurpose
MondayPlan the week; break work into tickets small enough to ship in a day or twoSmall tickets make small pull requests
DailyStand-up, several merges and deploys, review of others' PRsSteady flow rather than big-bang releases
MidweekMerge dependency update PRs; review error tracker trendsPrevents slow decay
ThursdayDemo of shipped work to stakeholders using production or preview URLsFeedback on real software, not slides
FridayShort retrospective; fix flaky tests; tidy the board; avoid risky releases late in the dayKeeps the process healthy

We work in fixed two-week sprints with a demo at the end of each, which is a common variation of this rhythm. Whatever the cadence, the aim is the same: working software in front of people regularly.

Scaling the workflow up or down

  • Solo developer. Keep branches, pull requests and CI even when you review your own work. Use an AI review and a fresh-context agent review as your second pair of eyes, and read your own diff on the preview before merging.
  • Small team. Everything above, with one required human approval and protected main.
  • Regulated or larger teams. Add code owners for sensitive areas, required approvals from security for specific paths, audit trails of deployments and formal change records.

Frequently asked questions

What is CI/CD in web development?

CI, continuous integration, means automatically running checks such as type checks, linting, tests and a build every time code is pushed. CD, continuous delivery or deployment, means automatically taking code that passes those checks to an environment such as preview or production. Together they make every release follow the same tested path.

What is a preview deployment?

A preview deployment is a live, temporary version of an app built from a branch or pull request, with its own URL. Platforms such as Vercel create them automatically by default, so reviewers, designers and clients can test a change before it is merged into production.

Should AI code review replace human code review?

No. AI code review is a fast, useful first pass that catches common mistakes, but a person who understands the product should still approve changes, especially those touching authentication, permissions, payments or data deletion. Accountability for a merge should always rest with a human.

What is the best Git workflow for a small team?

For most small web teams, a simple branch-based workflow such as GitHub flow works well: short-lived feature branches, pull requests with required checks and one review, a protected main branch that is always deployable, and automatic deployment on merge.

How many end-to-end tests should a web app have?

Relatively few. The test pyramid recommends many fast unit tests, fewer integration tests and only a small number of end-to-end tests covering key journeys such as sign-up, login and checkout, because end-to-end tests are slower and more brittle to maintain.

Sources

  1. GitHub Docs: GitHub flow — Six steps of GitHub flow; one isolated change per commit; separate branches for unrelated changes. Accessed 19 October 2026.
  2. GitHub Docs: About protected branches — Branch protection settings: required reviews, required status checks, conversation resolution, force-push blocking. Accessed 19 October 2026.
  3. GitHub Docs: About push protection — Push protection blocks hardcoded credentials before they are pushed. Accessed 19 October 2026.
  4. GitHub Docs: About Dependabot security updates — Dependabot opens pull requests updating vulnerable dependencies to a patched version. Accessed 19 October 2026.
  5. Vercel Docs: Environments — Default Local, Preview and Production environments; preview deployments on non-production branch pushes and pull requests; generated URLs; per-environment variables; staged production deployments promoted without rebuilding. Accessed 19 October 2026.
  6. Claude Code documentation: Best practices — Explore, plan, then code; give the agent a way to verify its work; show evidence; CLAUDE.md; review in a fresh context. Accessed 19 October 2026.
  7. Cursor documentation: Agent overview — Cursor's Agent edits code and runs terminal commands. Accessed 19 October 2026.
  8. Google Engineering Practices: The Standard of Code Review — Approve a change once it definitely improves overall code health, even if not perfect. Accessed 19 October 2026.
  9. Ham Vocke, "The Practical Test Pyramid" (martinfowler.com) — Test pyramid introduced by Mike Cohn; many unit tests, fewer integration and very few end-to-end tests; the ice-cream cone anti-pattern. Accessed 19 October 2026.

Recommendations without a source are AI Dev Planner’s own engineering opinion. Platform features and prices change; check the linked pages for the current position. Found an error? See our corrections policy.

Want a delivery process like this on your project?

We default to branches, pull requests, CI checks, preview deployments and human review, with AI agents inside that process rather than around it. Ask us how we would set it up for your team or product.