Last updated: May 2025
Vision Control Inc. ("we", "us", "our") is a file version-control and collaboration service. For the purposes of EU/UK data-protection law, we are the data controller for the personal data described in this policy.
If you have questions about how we handle your data, contact us at: support@visioncont.org
| Field | Why we collect it | Stored as |
|---|---|---|
| Email address | Account login, transactional emails | Plain text (unique) |
| Password | Authentication | bcrypt hash — never plain text |
| Username | Display name across the service | Plain text |
| Bio & avatar | Optional public profile | Plain text / base-64 image |
| Account creation date | Service administration | Timestamp |
When you create projects and upload files we store the project metadata (name, description, visibility setting) and every version of every file you upload, including the filename, file size, storage path, version history, and the approval status of each version. File content is stored either on our VPS filesystem, in Cloudflare R2 object storage, or in our PostgreSQL database (for small delta records). We also store folder structure and per-file privacy settings you configure.
We store the list of collaborators on each project, their assigned roles (collaborator / manager / co-owner), and who added them and when. Join-request messages and their acceptance/rejection status are also stored.
We create short-lived tokens for email verification (24-hour expiry) and password-reset links (1-hour expiry). These tokens are stored in the database and are invalidated immediately after use.
Payments, subscriptions, and payouts are processed entirely by
Stripe.
We store only the Stripe-assigned identifiers Stripe gives us:
stripe_customer_id, stripe_subscription_id, and your
current plan key (free / pro / business / enterprise).
We never store card numbers, bank account details, or any other raw payment data.
If you enable Stripe Connect payouts, your Stripe Connect account ID
(stripe_account_id) and onboarding/payout status are stored.
We store your preferences for email notifications and daily-digest emails. You can change or disable these from your profile at any time.
| Processing activity | Legal basis |
|---|---|
| Account creation & authentication | Contract performance (Art. 6(1)(b)) — necessary to provide the service |
| Storing uploaded files & projects | Contract performance (Art. 6(1)(b)) |
| Sending transactional emails (verification, password reset, storage warnings) | Contract performance (Art. 6(1)(b)) |
| Compute usage logging for capacity planning | Legitimate interests (Art. 6(1)(f)) — operating and improving infrastructure |
| Storing Stripe identifiers for billing | Contract performance (Art. 6(1)(b)) |
| Optional notification & digest emails | Consent (Art. 6(1)(a)) — opt-in preferences you control |
| CSRF tokens & session security | Legitimate interests (Art. 6(1)(f)) — security of the service |
We do not sell, rent, or trade your personal data to any third party.
| Recipient | Purpose | Location |
|---|---|---|
| Stripe, Inc. | Payment processing, subscription management, Connect payouts | United States (Standard Contractual Clauses apply) |
| Cloudflare (R2) | Object storage for uploaded file versions | Depends on R2 region configured — EU regions available |
| VPS hosting provider | Server hosting, PostgreSQL database, on-disk file storage | As configured in deployment |
| SMTP email provider | Delivery of transactional and notification emails | As configured in SMTP_HOST |
We do not share your data with any other third parties. We have Data Processing Agreements (or rely on Standard Contractual Clauses) with all sub-processors listed above.
| Data category | Retention period |
|---|---|
| Account data, projects, and uploaded files | Until you delete your account; or until auto-deletion under storage enforcement (see §8) |
| Email verification tokens | 24 hours from creation; deleted or invalidated after first use |
| Password-reset tokens | 1 hour from creation; immediately invalidated after use |
| Login sessions | 24 hours from last activity |
| Compute usage logs | Retained while your account is active; deleted when your account is deleted |
| Stripe billing identifiers | Retained while your account is active; cleared when your account is deleted |
| Support messages | Up to 2 years for audit/quality purposes, then deleted |
| Nginx access logs | Rotated automatically (typically 7–30 days depending on server configuration) |
If you are located in the European Economic Area (EEA), the United Kingdom, or another jurisdiction with applicable data-protection law, you have the following rights:
We will respond to data-subject requests within 30 days. We may ask you to verify your identity before fulfilling a request.
Each account has a storage limit based on your subscription plan (free accounts receive 10 GB). If you exceed your limit, the following automated process applies:
This processing is carried out under contract performance (our Terms of Service, §6). You are always notified before any automated deletion takes place.
We use a single first-party session cookie (connect.sid) to keep you
logged in. This cookie is:
We do not use advertising cookies, analytics cookies, or any third-party tracking cookies. No cookie consent banner is required for strictly-necessary session cookies under ePrivacy / PECR rules.
The desktop client stores your API token in the operating-system keychain (not a cookie).
We take the security of your personal data seriously and use appropriate technical and organisational measures to protect it, including:
No method of transmission or storage over the internet is completely secure. While we strive to protect your data, we cannot guarantee absolute security. If you believe your account has been compromised, please contact us immediately at support@visioncont.org.
Project owners can opt in to receive donations from other users via Stripe Connect. If you do so:
When you use the Client Review feature to share a file version with an external reviewer, we store the reviewer's email address and any feedback they submit. That email address is also saved to your personal address book within the service so you can easily re-use it in future. You can delete individual address-book entries from your profile at any time.
The reviewer's email is used solely to facilitate the review link; it is not used for marketing or shared with any third party.
We and our sub-processors (Stripe, Cloudflare) may process your data outside the EEA. Where this occurs we rely on Standard Contractual Clauses (SCCs) approved by the European Commission, or equivalent transfer mechanisms, to ensure adequate protection.
The service is not directed at children under the age of 16. We do not knowingly collect personal data from children. If you believe a child has created an account, please contact us and we will delete the account promptly.
We may update this policy from time to time. The "Last updated" date at the top of this page will always reflect the most recent revision. If we make material changes we will notify registered users by email before the changes take effect.
For any privacy-related questions, data-subject requests, or complaints: