Skip to content
yaydeploy

How we work

How we work together

We see your code and how your data is structured. We never see your users' data.

Principles

  • You own everything. Your code, database, hosting and payment accounts stay yours. You invite us — we never create accounts for your app in our name.
  • Only the access we need. Each service needs a different level of access. The table below shows exactly which.
  • No real user data. To test your app, we copy the structure of your database and fill it with generated data.
  • Temporary access. You give access for a task and remove it when the task is done.
  • Everything on record. Who got which access, when, and when it was removed — logged in a shared document you can always check.

Access by service

  • Service: Free review

    Code
    Read only
    Database
    Structure only
    Hosting, payments and keys
    None
  • Service: Access & data test

    Code
    Read only
    Database
    Structure only
    Hosting, payments and keys
    None
  • Service: Deep audit

    Code
    Read only
    Database
    Structure only
    Hosting, payments and keys
    List of settings, without secret values
  • Service: Emergency fix

    Code
    Changes via review*
    Database
    Structure; an anonymized example if needed
    Hosting, payments and keys
    Error logs without personal data
  • Service: "Ready to grow" sprint, Feature sprint, Speed & load, Investor ready

    Code
    Changes via review*
    Database
    Separate test database
    Hosting, payments and keys
    Test keys only (e.g. Stripe test mode)
  • Service: Migration

    Code
    Changes via review*
    Database
    Temporary access during the move, with your written consent
    Hosting, payments and keys
    Temporary access, removed right after
  • Service: Basic care, Monthly support, Dev on demand

    Code
    Changes via review*
    Database
    Separate test database
    Hosting, payments and keys
    Monitoring alerts without personal data
  • Service: Coaching

    Code
    Your screen, on a call
    Database
    None
    Hosting, payments and keys
    None

*Changes via review: we propose every change as a pull request — a change that you or automatic checks approve before it goes live.

Step by step

  1. Before we start

    We sign a non-disclosure agreement (NDA). For clients in the EU, also a data processing agreement (DPA). You get this page as a reference, so you know in advance what we'll ask for and when. We use AI coding tools only with settings that don't allow your code to be used for training. Don't want AI tools on your code? We work without them.

  2. Your code

    For reviews and audits, you add us to your repository (where your code is stored) with read-only access. For paid work, we get write access, but your main branch (the main version of your code) stays protected: changes go in only through pull requests that you or automatic checks approve. Building in Lovable? Lovable writes your changes straight to the main branch, so we set the protection up to keep that sync working, while our own changes still go through pull requests. Your app lives in Lovable, Bolt or Replit without a repository? You connect your project to GitHub (a service for storing code) or send us a code export.

  3. Your database

    You export only its structure: tables, links between them and access rules. No rows, no user data. We give you a ready command or do it together on a call. We build a copy from this structure and fill it with generated users, orders and payments. All tests run on this copy — including the access & data test, where we try to open one test user's data as another user, get paid features without paying or act as an admin. If a bug only shows up on real data, we ask for a specific anonymized example, or you show it to us on screen during a call.

  4. Test environment

    For sprints and monthly plans, we set up a separate test copy of your app (staging) in your accounts: its own database with generated data and its own address. We use test keys only: Stripe in test mode and separate AI service keys with spending limits. Every change is checked there first, then goes live.

  5. Secrets and your live app

    Your live keys stay in your hosting settings. We don't see them and don't ask for them. Need a new key? You add it yourself, following our instructions. Changes go live automatically after approval, with no manual access to your servers. Secrets never go through chat or email. If there's no other way, we use a one-time link from a password manager that expires after opening.

  6. Migration: the only exception

    Moving real data without access to it is impossible. So access is given with your written consent for a set time window. Data goes directly from your old account to your new one, with no copies on our computers. Right after the move, access is removed and you change all keys. Prefer to keep control? You run the move yourself, following our instructions, on a shared call.

  7. Emergencies

    If your live app is down and we can't find the cause without more access, we ask for temporary access and wait for your explicit approval. We log what we did and when. Once it's fixed, access is removed. This only applies when we need more access than usual. Work on the fix itself starts on time.

  8. Monitoring

    We connect error tracking that automatically hides personal data: emails, names and access keys. You don't have to keep an eye on the app yourself: alerts go to both you and us.

  9. When we finish

    You remove us from all services using a checklist we give you. We delete local copies of your code and test database and confirm it in writing. If we saw any key during the work, you change it.

Our own security

  • Separate work accounts for every service, two-factor login everywhere.
  • A password manager and an encrypted disk.
  • We keep client code only while the work lasts.

Questions about access? Ask before we start.

Get a free review