Skip to main content
deletedProjects keeps a project after it is deleted: one document per deleted project, with a copy of the whole project document and who deleted it. Web writes it in services/web/app/src/Features/Project/ProjectDeleter.mjs; the schema is services/web/app/src/models/DeletedProject.mjs. When the hard deletion delay has passed, the expiry destroys the project’s data and empties project, but the record with deleterData stays. A project in the trash is not here: trashing only adds the user to trashed of the project, see Projects Collection.

Fields

deletedReason values (services/web/app/src/Features/Project/DeletedProjectReasons.mjs:1-8):

Who Writes It

Who Reads It

Indexes

Migrations are in tools/migrations/.

Notes

  • Modules that listen to projectExpired delete their own data of the project: git-bridge (services/web/modules/git-bridge/index.mjs:37), github-sync (services/web/modules/github-sync/index.mjs:56), gitlab-sync (services/web/modules/gitlab-sync/index.mjs:46), gitea-sync (services/web/modules/gitea-sync/index.mjs:46) and dropbox (services/web/modules/dropbox/index.mjs:54).
  • An expired record is never deleted: deleterData stays for good, only project and the IP address are emptied.
  • Mongoose also gives deleterData its own _id, which nothing reads.
Last modified on November 14, 2026