Skip to content

GDPR Compliance

BlocMarket maintains a full Article 30 Record of Processing Activities (ROPA) in docs/compliance/gdpr_data_mapping.md. The platform operates under UK GDPR; the data controller is BlocMarket Ltd.

All personal data is classified into three tiers:

ClassificationExamplesHandling
RestrictedPassword hashes, MFA secrets, Stripe references, identity documentsEncrypted at rest; never logged; short expiries
ConfidentialEmail, names, phone, addresses, GPS points, bid amounts, IP addressesTLS 1.3 in transit; RLS-protected
InternalUUIDs, roles, statuses, view countsStandard access controls

Sensitive fields use specialised protections: passwords are Argon2id-hashed; email verification tokens expire in 24 hours; password reset tokens in 30 minutes; identity documents in AWS S3 (eu-west-2) expire after 30 days maximum with AES-256 at rest.

Data CategoryRetention PeriodRationale
Email, first/last name3 years post-closureService records
Password hashUntil deletionAuthentication only
Property addresses, GPS, boundaryUntil delisted + 1 yearDispute window
Bids (amount, status, message)Account lifetime + 6 years (anonymised)Limitation Act 1980
Payments6 yearsFinancial record-keeping (HMRC)
NotificationsUntil read + 30 daysOperational
Identity documents30 days maximumVerification only
IP addresses (rate limit cache)24 hoursSecurity
IP addresses (logs)90 daysSecurity monitoring
Login history12 monthsSecurity
Audit trail (financial)7 yearsCompliance
ActivityLegal Basis
User registration and authenticationContract — Art. 6(1)(b)
Property listing managementContract — Art. 6(1)(b); Legitimate interest — Art. 6(1)(f) (verification)
Bloc formation and biddingContract — Art. 6(1)(b)
Payment processingContract — Art. 6(1)(b); Legal obligation — Art. 6(1)(c)
Push notificationsConsent — Art. 6(1)(a)
Identity verification documentsConsent — Art. 6(1)(a)
Security monitoring and activity loggingLegitimate interest — Art. 6(1)(f) (fraud prevention)
RightArticleImplementationResponse Time
AccessArt. 15GET /api/v1/users/me/export (JSON/CSV)30 days
RectificationArt. 16PATCH /api/v1/users/profile (self-service)Immediate
ErasureArt. 17DELETE /api/v1/users/me (7-day grace period)30 days
PortabilityArt. 20GET /api/v1/users/me/export (JSON + CSV)30 days
ObjectArt. 21privacy@blocmarket.wyattau.com30 days
Restrict processingArt. 18privacy@blocmarket.wyattau.com30 days
Withdraw consentArt. 7(3)Account settings → Notification PreferencesImmediate
Notified of breachArt. 34Email notification to affected users72 hours

Export status can be polled at GET /api/v1/users/me/export/status. The gdpr-worker application processes export and deletion requests asynchronously. IP addresses are redacted from anonymised exports.

Two-stage deletion:

  1. Soft deletePOST /api/v1/users/account/delete hides the account; POST /api/v1/users/account/restore can reverse it
  2. Permanent deletionDELETE /api/v1/users/me; the worker anonymises transaction records (legal retention requirement), deletes profile and preferences, removes property associations, clears cached data, and logs the deletion for audit
  • user_activity_log table records security-relevant events with structured JSON
  • Application, access, and audit logs aggregate to Grafana Loki
  • Audit logs for financial transactions are retained 7 years
  • API access logs retained 90 days; login history 12 months
Consent TypeLegal BasisMechanism
Push notificationsArt. 6(1)(a)Per-device opt-in via POST /api/v1/notifications/devices/register; tokens deleted when consent withdrawn
Marketing communicationsArt. 6(1)(a)Unsubscribe mechanism; per-channel preferences
Transactional notificationsArt. 6(1)(b)Managed via PATCH /api/v1/notifications/preferences
Identity verification documentsArt. 6(1)(a)Explicit consent checkbox; 30-day automatic expiry

BlocMarket uses no cross-site tracking and no marketing/advertising cookies.

ProcessorData LocationTransfer Mechanism
SupabaseUS/EUStandard Contractual Clauses (pending DPA)
AWS S3eu-west-2No transfer
StripeUK/USSCCs; UK Extension to EU Adequacy
GoCardlessUKNo transfer
DocuSignUK/USSCCs; UK Extension to EU Adequacy
Google/FCMUSSCCs (pending DPA)

A documented procedure requires notification to the ICO within 72 hours where a breach is likely to result in a risk to rights and freedoms, and notification to affected data subjects without undue delay where risk is high.

MeasureImplementation
Encryption in transitTLS 1.3 on all endpoints
Encryption at restAES-256 (S3), Supabase TDE
Password hashingArgon2id (memory-hard KDF)
Access controlRLS + RBAC
SQL injection preventionSQLx compile-time validated queries
Multi-factor authenticationTOTP (optional)
Rate limitingPer-IP, sliding window
ReviewFrequencyOwner
Full ROPA reviewAnnuallyDPO
Retention policy compliance checkQuarterlyDPO
Data subject rights process testSemi-annuallyDPO
Third-party processor auditAnnuallyLegal + Security
Post-breach ROPA updateAfter any breachDPO