> To follow this documentation you should [set up a local copy of the website](Compiling-a-local-version-of-the-website) first.
Each website can be a little different but there are a few rules that are
standard. Some of these rules are imposed by the static website generator that
we use (Lektor). Other rules are made up by the web team to make development
easier.
Each website can be a little different but there are a few rules that are standard. Some of these rules are imposed by the static website generator that we use (Lektor). Other rules are made up by the www team to make development easier.
### Development environment
There are two ways to develop on the websites: using GitLab or building locally.
#### GitLab
Most users should use GitLab to make website edits and author new pages,
followed by a merge request.
The procedure differs based on whether you're granted the `Developer` role on
the website project you want to edit:
- Regular contributors to web projects may request this privilege by
[opening a ticket](https://gitlab.torproject.org/tpo/tpa/team/-/issues/new)
- Occasional or "drive-by" contributors may still submit edits without this
role
The instructions below will get you started making edits, viewing previews
built in CI and submitting a merge request.
Once the merge request is reviewed and accepted by a project maintainer, a full
project build will automatically be triggered and deployed to
`https://<projectname>.staging.torproject.org`.
If the staging build passes QA, a deployment to production must be triggered
manually via the `Pipelines` or `Environments` project subpages. This is
usually done by another member of the project, but in the case of trivial
changes, the `deploy-prod` may be triggered by the merge request author.
If you need assistance, don't hesitate to drop by on