Privacy · Version 2026-10-26
Privacy and cookies
You decide whether this portfolio may collect optional metrics.
Controller and contact
Daniel Costa Carvalho Martins is responsible for this personal portfolio. For privacy questions or to exercise your rights, use the contact form or the email published on the contact page. Identify your request as Privacy / LGPD. Contact the controller.
Purposes and choices
Navigation metrics count pages, visible sections and clicks. With your consent, an optional cookie stores a random browser identifier; the API converts it to an annual HMAC for estimated visitor counts. These are pseudonymous data, not an assurance of anonymity. Performance metrics measure loading and responsiveness (Web Vitals) without a visitor identifier. Both purposes require separate, optional consent, which you may reject or withdraw at any time.
No optional collection starts before your choice. Refusing does not block content, contact or downloads. DNT and GPC signals block optional metrics. We do not collect form contents, button text, exact click positions, full outbound URLs, query strings or referrers in analytics. No advertising, profiling for automated decisions, sale of data or third-party analytics is used.
Cookies and browser storage
| Cookie | Purpose and duration |
|---|---|
| portfolio_privacy | Necessary to remember choices and policy version for 180 days; no visitor ID. |
| portfolio_observability | Necessary signed, HttpOnly consent receipt. Authorizes only the chosen purposes; 180 days. |
| portfolio_visitor | Optional navigation ID; at most 180 days, renewed at the year boundary. Removed on withdrawal or privacy signals. |
| portfolio_session | Necessary only for administrator login; HttpOnly, up to 12 hours. |
Cookies use SameSite=Strict (the login session uses Lax) and Secure under HTTPS. Readable preference and visitor cookies allow the browser to stop instrumentation; they cannot authorize the API. Local storage remembers theme/accessibility settings and a random change notification between tabs, with no analytics identity. Legacy analytics storage is discarded and requires a fresh choice.
Retention and withdrawal
You can change or withdraw consent using Metrics privacy below. Expiry or a policy change requires a new choice. Withdrawal removes the browser ID, discards pending batches and blocks new collection; requests already authorized may finish. The Delete current browser data action also removes pseudonymous daily presence tied to the currently available ID and revokes metrics. Use it before removing the ID. Neither action retroactively removes aggregate counts or data belonging to previously cleared or rotated IDs. Server consent evidence records purposes, version, time, expiry and revocation, without IP or visitor ID, for up to 180 days after expiry (up to 360 days from choice).
Web Vitals are retained for 30 days; event deduplication receipts for 48 hours. Pseudonymous daily presence retains the current year and five previous years to support the five-year dashboard and prior-period comparisons. Daily counts contain no visitor ID and have no automatic expiry. Scheduled maintenance runs daily; expired data may remain until a successful run. Encrypted remote backups, when enabled, have 14-day retention. Restores must reapply expiry and revocations before collection resumes.
Contact data, security and service providers
The contact form processes name, email and message to respond to your request, separately from optional metrics. Do not send sensitive data. The administrator has restricted access; contact records are deleted after 180 days by the daily retention job. Any continuation of a business relationship requires its own documented processing rules. Essential technical processing supports login, rate limiting and security; the consent choice is retained to respect and demonstrate your decision.
Hosting (Vercel), database (Neon/PostgreSQL) and private file storage (Vercel Blob) may process technical or stored data, potentially outside Brazil depending on deployment. Network services necessarily receive IPs and may retain their own logs. The application analytics tables do not store raw IPs; rate limiting uses keyed hashes. Infrastructure access, regions, international-transfer safeguards and log retention are managed by the controller and provider contracts.
Your rights
You may request confirmation, access, correction, portability where applicable, information on sharing, anonymization, blocking or deletion of unnecessary or consent-based data, and withdraw consent. Use the contact channel above; requests are free and the controller may ask for the minimum information necessary to verify the request. We cannot reliably link a name or email to a random browser ID after it is removed. Previously aggregated counts do not contain individual event histories.