diff --git a/index.html b/index.html index 8add267..bd52bb4 100644 --- a/index.html +++ b/index.html @@ -682,6 +682,67 @@ text-decoration: underline; } + .card-login-info { + display: flex; + gap: 12px; + margin-top: 8px; + padding-top: 8px; + border-top: 1px dashed var(--border-color); + } + + .card-login-field { + flex: 1; + background: var(--bg-secondary); + border: 1px solid var(--border-color); + border-radius: var(--radius-sm); + padding: 8px 10px; + } + + .card-login-field-label { + font-size: 0.65rem; + color: var(--text-muted); + text-transform: uppercase; + letter-spacing: 0.5px; + margin-bottom: 4px; + } + + .card-login-field-content { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + } + + .card-login-field-text { + font-family: var(--font-mono); + font-size: 0.75rem; + color: var(--accent-cyan); + word-break: break-all; + } + + .card-login-field-text.masked { + color: var(--text-muted); + } + + .card-login-copy { + background: none; + border: none; + color: var(--text-muted); + cursor: pointer; + padding: 2px; + display: flex; + transition: var(--transition); + } + + .card-login-copy:hover { + color: var(--accent-cyan); + } + + .card-login-copy svg { + width: 14px; + height: 14px; + } + /* Toast */ .toast-container { position: fixed; @@ -1238,6 +1299,16 @@ +
+
+ + +
+
+ + +
+
@@ -1463,7 +1534,7 @@ } // EMBEDDED DATA - Dados incluídos diretamente no HTML - const EMBEDDED_DATA = {"version":"1.0","lastUpdated":"2026-03-20T14:30:00Z","credentials":[{"id":"coolify-001","name":"Coolify - App Key","category":"infraestrutura","subCategory":"orchestrator","dataType":"key","value":"base64:b47bUe7FBv1cGpzW5zSIEfTVsfXqw+wDg37p6BIOCVE=","url":"https://coolify.reifonas.cloud","notes":"Usada para criptografia de sessões do Coolify","tags":["coolify","criptografia"],"isPaid":false,"paidInfo":null,"associatedService":"Coolify","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"coolify-002","name":"Coolify - Database Password (PostgreSQL)","category":"infraestrutura","subCategory":"database","dataType":"password","value":"IbPDBCzJPeinra5tCfCZaDz9QOkIHBFofOSpnr626/s=","url":"https://coolify.reifonas.cloud","notes":"Senha do banco PostgreSQL interno do Coolify","tags":["coolify","postgresql","database"],"isPaid":false,"paidInfo":null,"associatedService":"Coolify","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"coolify-003","name":"Coolify - Redis Password","category":"infraestrutura","subCategory":"cache","dataType":"secret","value":"kkMadIcUAkDM1oUrcY3tCC+r9Uw9RWBpt+terc5TfMU=","url":"https://coolify.reifonas.cloud","notes":"Senha do Redis para cache do Coolify","tags":["coolify","redis","cache"],"isPaid":false,"paidInfo":null,"associatedService":"Coolify","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"coolify-004","name":"Coolify - Pusher App ID","category":"infraestrutura","subCategory":"websocket","dataType":"key","value":"9874b73ff9652e5327b5b70952929f4abdc67589802a6efc1665a2652ed0696b","url":"https://coolify.reifonas.cloud","notes":"App ID do Pusher para WebSocket em tempo real","tags":["coolify","pusher","websocket"],"isPaid":false,"paidInfo":null,"associatedService":"Coolify","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"coolify-005","name":"Coolify - Pusher App Key","category":"infraestrutura","subCategory":"websocket","dataType":"key","value":"7a4125c71f34f83bf2ee722434a596f135f53021d72d7513b58c6e1aa1b9ed5e","url":"https://coolify.reifonas.cloud","notes":"App Key do Pusher para WebSocket em tempo real","tags":["coolify","pusher","websocket"],"isPaid":false,"paidInfo":null,"associatedService":"Coolify","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"coolify-006","name":"Coolify - Pusher App Secret","category":"infraestrutura","subCategory":"websocket","dataType":"secret","value":"2244c9076f690153e7400179fb6fb429020a74801d61644fa29ede5ae17b7523","url":"https://coolify.reifonas.cloud","notes":"App Secret do Pusher para autenticação","tags":["coolify","pusher","websocket","secret"],"isPaid":false,"paidInfo":null,"associatedService":"Coolify","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"supabase-001","name":"Supabase - Dashboard Studio User","category":"api-externa","subCategory":"dashboard","dataType":"username","value":"2FfdSSoPDostr0wA","url":"https://supabase.reifonas.cloud/dashboard","notes":"Usuário do painel administrativo do Supabase Studio","tags":["supabase","admin","studio"],"isPaid":false,"paidInfo":null,"associatedService":"Supabase","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"supabase-002","name":"Supabase - Dashboard Studio Password","category":"api-externa","subCategory":"dashboard","dataType":"password","value":"Mg0WcYG7XPXA0oWf4SOUfIFmkW5Bs5Cr","url":"https://supabase.reifonas.cloud/dashboard","notes":"Senha do painel administrativo do Supabase Studio","tags":["supabase","admin","studio"],"isPaid":false,"paidInfo":null,"associatedService":"Supabase","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"supabase-003","name":"Supabase - Database Credentials","category":"banco-de-dados","subCategory":"postgresql","dataType":"credentials","value":"postgresql://supabase_admin:Xz0oyb6ArGYG5uAVTVwcvJxRrMuT7EIJ@localhost:5432/postgres","url":"https://supabase.reifonas.cloud/dashboard/project/_/database/tables","notes":"Credenciais completas do banco PostgreSQL. Porta: 5432","tags":["supabase","postgresql","database"],"isPaid":false,"paidInfo":null,"associatedService":"Supabase","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"supabase-004","name":"Supabase - Service Role Key","category":"api-externa","subCategory":"api-keys","dataType":"api-key","value":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsImlhdCI6MTc3Mjk5NTUwMCwiZXhwIjo0OTI4NjY5MTAwLCJyb2xlIjoic2VydmljZV9yb2xlIn0._n2Kj2f29z1u0pOYUGqAr-1Xjt-xQpK9KDhhhGvOIro","url":"https://supabase.reifonas.cloud/dashboard/project/_/settings/api","notes":"Chave admin para operações no servidor. NUNCA expor no frontend!","tags":["supabase","api","admin","service-role"],"isPaid":false,"paidInfo":null,"associatedService":"Supabase","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"supabase-005","name":"Supabase - Anon Key","category":"api-externa","subCategory":"api-keys","dataType":"api-key","value":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsImlhdCI6MTc3Mjk5NTUwMCwiZXhwIjo0OTI4NjY5MTAwLCJyb2xlIjoiYW5vbiJ9.kOAYmQJlNd3LsssUHaNyvWZpa2sunfpLj24F_X-PRNY","url":"https://supabase.reifonas.cloud/dashboard/project/_/settings/api","notes":"Chave pública para uso no frontend (nível anon)","tags":["supabase","api","public","anon"],"isPaid":false,"paidInfo":null,"associatedService":"Supabase","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"supabase-006","name":"Supabase - JWT Secret","category":"api-externa","subCategory":"auth","dataType":"jwt-secret","value":"BJTT52gbXWcUeWMgGGQ90I2ei80RDCZ0","url":"https://supabase.reifonas.cloud/dashboard/project/_/auth/providers","notes":"Secret para validar tokens JWT do Supabase Auth","tags":["supabase","auth","jwt"],"isPaid":false,"paidInfo":null,"associatedService":"Supabase","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"supabase-007","name":"Supabase - MinIO Access Key","category":"storage","subCategory":"s3","dataType":"key","value":"JcIIUSqslL5JCG3y","url":"https://supabase.reifonas.cloud/dashboard/project/_/storage","notes":"Access Key para MinIO (storage S3-compatible)","tags":["supabase","storage","minio","s3"],"isPaid":false,"paidInfo":null,"associatedService":"Supabase","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"supabase-008","name":"Supabase - MinIO Secret Key","category":"storage","subCategory":"s3","dataType":"secret","value":"pR8v6UUvVDcCxTitjVQkqgdaHcsQ8vCv","url":"https://supabase.reifonas.cloud/dashboard/project/_/storage","notes":"Secret Key para MinIO (storage S3-compatible)","tags":["supabase","storage","minio","s3","secret"],"isPaid":false,"paidInfo":null,"associatedService":"Supabase","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"supabase-009","name":"Supabase - Vault Encryption Key","category":"api-externa","subCategory":"security","dataType":"key","value":"IgDixpOtM6uhRL2LaarNwnSrZmanUtvc","url":"https://supabase.reifonas.cloud/dashboard/project/_/vault","notes":"Chave de criptografia para o Vault do Supabase","tags":["supabase","vault","encryption","security"],"isPaid":false,"paidInfo":null,"associatedService":"Supabase","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"supabase-010","name":"Supabase - Logflare API Key","category":"api-externa","subCategory":"analytics","dataType":"api-key","value":"s5tbGFZV0rCoA8OZpP5Eg8rZnBlykvOr","url":"https://supabase.reifonas.cloud/dashboard/project/_/logs","notes":"API Key para integração com Logflare (logs analytics)","tags":["supabase","logs","analytics","logflare"],"isPaid":false,"paidInfo":null,"associatedService":"Supabase","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"logto-001","name":"Logto - Database Credentials","category":"banco-de-dados","subCategory":"postgresql","dataType":"credentials","value":"postgresql://bhWbMdkltdZej1RG:Szt31khElk0RczDuk0CJq2eDMsp6oo0e@localhost:5432/logto","url":"https://logto.reifonas.cloud","notes":"Credenciais do banco PostgreSQL do Logto. DB Name: logto","tags":["logto","auth","postgresql","database"],"isPaid":false,"paidInfo":null,"associatedService":"Logto","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"logto-002","name":"Logto - Admin Endpoint","category":"autenticacao","subCategory":"oauth","dataType":"url","value":"https://logto-admin-bzlued1boxl3t8ewsyn99an9.187.77.227.172.sslip.io","url":"https://logto-admin-bzlued1boxl3t8ewsyn99an9.187.77.227.172.sslip.io","notes":"Endpoint administrativo do Logto (SSLip.io temporário)","tags":["logto","auth","admin","oauth"],"isPaid":false,"paidInfo":null,"associatedService":"Logto","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"gitea-001","name":"Gitea - Admin Credentials","category":"git","subCategory":"git-server","dataType":"credentials","value":"Usuário: admtracksteel / Marcos | Senha: @@Gi05Br;;;","url":"https://git.reifonas.cloud","notes":"Credenciais de admin para Gitea (usar para ambos usuários)","tags":["gitea","git","admin"],"isPaid":false,"paidInfo":null,"associatedService":"Gitea","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"gitea-002","name":"Gitea - Internal Token","category":"git","subCategory":"git-server","dataType":"token","value":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE3NzMxMDg3Mjl9.beKMVnmwBwdIyBhApfihXHMxvIMc3mXjJJQ0gLuwPAo","url":"https://git.reifonas.cloud","notes":"Token interno para autenticação API do Gitea","tags":["gitea","git","api","token"],"isPaid":false,"paidInfo":null,"associatedService":"Gitea","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"gitea-003","name":"Gitea - OAuth2 JWT Secret","category":"git","subCategory":"oauth","dataType":"jwt-secret","value":"hfHyav79UnnuhN0x9cVHvgedRVS6Y_xumnRW62d0Xk8","url":"https://git.reifonas.cloud","notes":"JWT Secret para OAuth2 do Gitea","tags":["gitea","oauth","jwt"],"isPaid":false,"paidInfo":null,"associatedService":"Gitea","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"gitea-004","name":"Gitea - LFS JWT Secret","category":"git","subCategory":"lfs","dataType":"jwt-secret","value":"gvasUkABbQ9scDHYdKRwsIEURWsbFBXUnOFD91Gf8A4","url":"https://git.reifonas.cloud","notes":"JWT Secret para Git LFS do Gitea","tags":["gitea","lfs","jwt"],"isPaid":false,"paidInfo":null,"associatedService":"Gitea","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"telegram-001","name":"Telegram Bot - Bot Token","category":"bot","subCategory":"telegram","dataType":"bot-token","value":"8272877120:AAEKPhLGZPyj8XL9HGSowGLAFzXZPtXHMa4","url":"https://t.me/AdmTrackSteelBot","notes":"Token do bot Telegram para integração com VPS","tags":["telegram","bot","notification"],"isPaid":false,"paidInfo":null,"associatedService":"Telegram Bot","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"telegram-002","name":"Telegram Bot - Chat ID Admin","category":"bot","subCategory":"telegram","dataType":"key","value":"8768212834","url":"https://t.me/AdmTrackSteelBot","notes":"Chat ID do usuário admin (Marcos) autorizado","tags":["telegram","bot","admin"],"isPaid":false,"paidInfo":null,"associatedService":"Telegram Bot","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"gpi-001","name":"GPI Local - MongoDB URI","category":"banco-de-dados","subCategory":"mongodb","dataType":"uri","value":"mongodb+srv://admtracksteel:29OHAHpKTI8XcCNt@cluster0.a4xiilu.mongodb.net/ts_gpi?retryWrites=true&w=majority&appName=Cluster0","url":null,"notes":"URI do MongoDB Atlas para o projeto GPI local","tags":["gpi","mongodb","atlas","database"],"isPaid":true,"paidInfo":{"cancellationDate":null,"reminderDays":7,"cost":"Free tier (500MB)","billingCycle":"monthly"},"associatedService":"GPI Local","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"gpi-002","name":"GPI Local - Clerk Publishable Key","category":"api-externa","subCategory":"auth","dataType":"key","value":"pk_live_Y2xlcmsucmVpZm9uYXMuY2xvdWQk","url":"https://dashboard.clerk.com","notes":"Chave pública do Clerk para autenticação","tags":["gpi","clerk","auth","frontend"],"isPaid":false,"paidInfo":null,"associatedService":"GPI Local","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"gpi-003","name":"GPI Local - JWT Secret","category":"api-externa","subCategory":"auth","dataType":"jwt-secret","value":"kd6wmHgnOk5xLy2ybtUiGPaPtVEwv/L4m3vFkIvSYrE=","url":"https://dashboard.clerk.com","notes":"JWT Secret para validar tokens localmente","tags":["gpi","jwt","auth"],"isPaid":false,"paidInfo":null,"associatedService":"GPI Local","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"gpi-004","name":"GPI Local - Database Local (Postgres)","category":"banco-de-dados","subCategory":"postgresql","dataType":"uri","value":"postgresql://postgres:postgres@localhost:5432/pintura_db?schema=public","url":null,"notes":"URI do banco PostgreSQL local para desenvolvimento","tags":["gpi","postgresql","local","development"],"isPaid":false,"paidInfo":null,"associatedService":"GPI Local","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"anthropic-001","name":"Anthropic - API Key","category":"api-externa","subCategory":"llm","dataType":"api-key","value":"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","url":"https://console.anthropic.com","notes":"API Key para Claude API. Cuidado: valor muito longo!","tags":["anthropic","claude","llm","api"],"isPaid":true,"paidInfo":{"cancellationDate":null,"reminderDays":7,"cost":"Pay-as-you-go","billingCycle":"monthly"},"associatedService":"Anthropic","lastRotated":null,"createdAt":"2026-03-20","updatedAt":"2026-03-20"},{"id":"ssh-001","name":"SSH - Public Key","category":"ssh","subCategory":"authentication","dataType":"chave-publica","value":"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILXuodcZ2QF/nmNZaBBiSZIF3t1kU8F7oDI4BgSBibDZ admtracksteel@gmail.com","url":null,"notes":"Chave pública SSH para autenticação em servidores. Usuário: root","tags":["ssh","ed25519","authentication","server"],"isPaid":false,"paidInfo":null,"associatedService":"SSH","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"gitea-token-001","name":"Token Gitea Coolify","category":"deploy","subCategory":"ci-cd","dataType":"token","value":"28914e07ba0d55b31668b5fa2d2f90da8b13894b","url":"https://git.reifonas.cloud","notes":"Token para integração do Coolify com Gitea","tags":["coolify","gitea","deploy","token"],"isPaid":false,"paidInfo":null,"associatedService":"Coolify-Gitea","lastRotated":null,"createdAt":"2026-03-10","updatedAt":"2026-03-10"}],"metadata":{"categories":{"destino":["infraestrutura","banco-de-dados","api-externa","deploy","ssh","autenticacao","storage","git","bot"],"tipo-dado":["key","token","senha","url","chave-publica","api-key","jwt-secret","uri","secret","password","bot-token","credentials","username"]}}}; + const EMBEDDED_DATA = {"version": "1.0", "lastUpdated": "2026-03-20T14:30:00Z", "credentials": [{"id": "coolify-001", "name": "Coolify - App Key", "category": "infraestrutura", "subCategory": "orchestrator", "dataType": "key", "value": "base64:b47bUe7FBv1cGpzW5zSIEfTVsfXqw+wDg37p6BIOCVE=", "url": "https://coolify.reifonas.cloud", "notes": "Usada para criptografia de sessões do Coolify", "tags": ["coolify", "criptografia"], "isPaid": false, "paidInfo": null, "associatedService": "Coolify", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "coolify-002", "name": "Coolify - Database Password (PostgreSQL)", "category": "infraestrutura", "subCategory": "database", "dataType": "password", "value": "IbPDBCzJPeinra5tCfCZaDz9QOkIHBFofOSpnr626/s=", "url": "https://coolify.reifonas.cloud", "notes": "Senha do banco PostgreSQL interno do Coolify", "tags": ["coolify", "postgresql", "database"], "isPaid": false, "paidInfo": null, "associatedService": "Coolify", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "coolify-003", "name": "Coolify - Redis Password", "category": "infraestrutura", "subCategory": "cache", "dataType": "secret", "value": "kkMadIcUAkDM1oUrcY3tCC+r9Uw9RWBpt+terc5TfMU=", "url": "https://coolify.reifonas.cloud", "notes": "Senha do Redis para cache do Coolify", "tags": ["coolify", "redis", "cache"], "isPaid": false, "paidInfo": null, "associatedService": "Coolify", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "coolify-004", "name": "Coolify - Pusher App ID", "category": "infraestrutura", "subCategory": "websocket", "dataType": "key", "value": "9874b73ff9652e5327b5b70952929f4abdc67589802a6efc1665a2652ed0696b", "url": "https://coolify.reifonas.cloud", "notes": "App ID do Pusher para WebSocket em tempo real", "tags": ["coolify", "pusher", "websocket"], "isPaid": false, "paidInfo": null, "associatedService": "Coolify", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "coolify-005", "name": "Coolify - Pusher App Key", "category": "infraestrutura", "subCategory": "websocket", "dataType": "key", "value": "7a4125c71f34f83bf2ee722434a596f135f53021d72d7513b58c6e1aa1b9ed5e", "url": "https://coolify.reifonas.cloud", "notes": "App Key do Pusher para WebSocket em tempo real", "tags": ["coolify", "pusher", "websocket"], "isPaid": false, "paidInfo": null, "associatedService": "Coolify", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "coolify-006", "name": "Coolify - Pusher App Secret", "category": "infraestrutura", "subCategory": "websocket", "dataType": "secret", "value": "2244c9076f690153e7400179fb6fb429020a74801d61644fa29ede5ae17b7523", "url": "https://coolify.reifonas.cloud", "notes": "App Secret do Pusher para autenticação", "tags": ["coolify", "pusher", "websocket", "secret"], "isPaid": false, "paidInfo": null, "associatedService": "Coolify", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "supabase-001", "name": "Supabase - Dashboard Studio User", "category": "api-externa", "subCategory": "dashboard", "dataType": "username", "value": "2FfdSSoPDostr0wA", "url": "https://supabase.reifonas.cloud/dashboard", "notes": "Usuário do painel administrativo do Supabase Studio", "tags": ["supabase", "admin", "studio"], "isPaid": false, "paidInfo": null, "associatedService": "Supabase", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "supabase-002", "name": "Supabase - Dashboard Studio Password", "category": "api-externa", "subCategory": "dashboard", "dataType": "password", "value": "Mg0WcYG7XPXA0oWf4SOUfIFmkW5Bs5Cr", "url": "https://supabase.reifonas.cloud/dashboard", "notes": "Senha do painel administrativo do Supabase Studio", "tags": ["supabase", "admin", "studio"], "isPaid": false, "paidInfo": null, "associatedService": "Supabase", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "supabase-003", "name": "Supabase - Database Credentials", "category": "banco-de-dados", "subCategory": "postgresql", "dataType": "credentials", "value": "postgresql://supabase_admin:Xz0oyb6ArGYG5uAVTVwcvJxRrMuT7EIJ@localhost:5432/postgres", "url": "https://supabase.reifonas.cloud/dashboard/project/_/database/tables", "notes": "Credenciais completas do banco PostgreSQL. Porta: 5432", "tags": ["supabase", "postgresql", "database"], "isPaid": false, "paidInfo": null, "associatedService": "Supabase", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "supabase-004", "name": "Supabase - Service Role Key", "category": "api-externa", "subCategory": "api-keys", "dataType": "api-key", "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsImlhdCI6MTc3Mjk5NTUwMCwiZXhwIjo0OTI4NjY5MTAwLCJyb2xlIjoic2VydmljZV9yb2xlIn0._n2Kj2f29z1u0pOYUGqAr-1Xjt-xQpK9KDhhhGvOIro", "url": "https://supabase.reifonas.cloud/dashboard/project/_/settings/api", "notes": "Chave admin para operações no servidor. NUNCA expor no frontend!", "tags": ["supabase", "api", "admin", "service-role"], "isPaid": false, "paidInfo": null, "associatedService": "Supabase", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "supabase-005", "name": "Supabase - Anon Key", "category": "api-externa", "subCategory": "api-keys", "dataType": "api-key", "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsImlhdCI6MTc3Mjk5NTUwMCwiZXhwIjo0OTI4NjY5MTAwLCJyb2xlIjoiYW5vbiJ9.kOAYmQJlNd3LsssUHaNyvWZpa2sunfpLj24F_X-PRNY", "url": "https://supabase.reifonas.cloud/dashboard/project/_/settings/api", "notes": "Chave pública para uso no frontend (nível anon)", "tags": ["supabase", "api", "public", "anon"], "isPaid": false, "paidInfo": null, "associatedService": "Supabase", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "supabase-006", "name": "Supabase - JWT Secret", "category": "api-externa", "subCategory": "auth", "dataType": "jwt-secret", "value": "BJTT52gbXWcUeWMgGGQ90I2ei80RDCZ0", "url": "https://supabase.reifonas.cloud/dashboard/project/_/auth/providers", "notes": "Secret para validar tokens JWT do Supabase Auth", "tags": ["supabase", "auth", "jwt"], "isPaid": false, "paidInfo": null, "associatedService": "Supabase", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "supabase-007", "name": "Supabase - MinIO Access Key", "category": "storage", "subCategory": "s3", "dataType": "key", "value": "JcIIUSqslL5JCG3y", "url": "https://supabase.reifonas.cloud/dashboard/project/_/storage", "notes": "Access Key para MinIO (storage S3-compatible)", "tags": ["supabase", "storage", "minio", "s3"], "isPaid": false, "paidInfo": null, "associatedService": "Supabase", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "supabase-008", "name": "Supabase - MinIO Secret Key", "category": "storage", "subCategory": "s3", "dataType": "secret", "value": "pR8v6UUvVDcCxTitjVQkqgdaHcsQ8vCv", "url": "https://supabase.reifonas.cloud/dashboard/project/_/storage", "notes": "Secret Key para MinIO (storage S3-compatible)", "tags": ["supabase", "storage", "minio", "s3", "secret"], "isPaid": false, "paidInfo": null, "associatedService": "Supabase", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "supabase-009", "name": "Supabase - Vault Encryption Key", "category": "api-externa", "subCategory": "security", "dataType": "key", "value": "IgDixpOtM6uhRL2LaarNwnSrZmanUtvc", "url": "https://supabase.reifonas.cloud/dashboard/project/_/vault", "notes": "Chave de criptografia para o Vault do Supabase", "tags": ["supabase", "vault", "encryption", "security"], "isPaid": false, "paidInfo": null, "associatedService": "Supabase", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "supabase-010", "name": "Supabase - Logflare API Key", "category": "api-externa", "subCategory": "analytics", "dataType": "api-key", "value": "s5tbGFZV0rCoA8OZpP5Eg8rZnBlykvOr", "url": "https://supabase.reifonas.cloud/dashboard/project/_/logs", "notes": "API Key para integração com Logflare (logs analytics)", "tags": ["supabase", "logs", "analytics", "logflare"], "isPaid": false, "paidInfo": null, "associatedService": "Supabase", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "logto-001", "name": "Logto - Database Credentials", "category": "banco-de-dados", "subCategory": "postgresql", "dataType": "credentials", "value": "postgresql://bhWbMdkltdZej1RG:Szt31khElk0RczDuk0CJq2eDMsp6oo0e@localhost:5432/logto", "url": "https://logto.reifonas.cloud", "notes": "Credenciais do banco PostgreSQL do Logto. DB Name: logto", "tags": ["logto", "auth", "postgresql", "database"], "isPaid": false, "paidInfo": null, "associatedService": "Logto", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "logto-002", "name": "Logto - Admin Endpoint", "category": "autenticacao", "subCategory": "oauth", "dataType": "url", "value": "https://logto-admin-bzlued1boxl3t8ewsyn99an9.187.77.227.172.sslip.io", "url": "https://logto-admin-bzlued1boxl3t8ewsyn99an9.187.77.227.172.sslip.io", "loginUsername": "logto-admin", "loginPassword": "@@Gi05Br;;;", "notes": "Endpoint administrativo do Logto (SSLip.io temporário)", "tags": ["logto", "auth", "admin", "oauth"], "isPaid": false, "paidInfo": null, "associatedService": "Logto", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "gitea-001", "name": "Gitea - Admin Credentials", "category": "git", "subCategory": "git-server", "dataType": "credentials", "value": "Usuário: admtracksteel / Marcos | Senha: @@Gi05Br;;;", "url": "https://git.reifonas.cloud", "notes": "Credenciais de admin para Gitea (usar para ambos usuários)", "tags": ["gitea", "git", "admin"], "isPaid": false, "paidInfo": null, "associatedService": "Gitea", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "gitea-002", "name": "Gitea - Internal Token", "category": "git", "subCategory": "git-server", "dataType": "token", "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE3NzMxMDg3Mjl9.beKMVnmwBwdIyBhApfihXHMxvIMc3mXjJJQ0gLuwPAo", "url": "https://git.reifonas.cloud", "notes": "Token interno para autenticação API do Gitea", "tags": ["gitea", "git", "api", "token"], "isPaid": false, "paidInfo": null, "associatedService": "Gitea", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "gitea-003", "name": "Gitea - OAuth2 JWT Secret", "category": "git", "subCategory": "oauth", "dataType": "jwt-secret", "value": "hfHyav79UnnuhN0x9cVHvgedRVS6Y_xumnRW62d0Xk8", "url": "https://git.reifonas.cloud", "notes": "JWT Secret para OAuth2 do Gitea", "tags": ["gitea", "oauth", "jwt"], "isPaid": false, "paidInfo": null, "associatedService": "Gitea", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "gitea-004", "name": "Gitea - LFS JWT Secret", "category": "git", "subCategory": "lfs", "dataType": "jwt-secret", "value": "gvasUkABbQ9scDHYdKRwsIEURWsbFBXUnOFD91Gf8A4", "url": "https://git.reifonas.cloud", "notes": "JWT Secret para Git LFS do Gitea", "tags": ["gitea", "lfs", "jwt"], "isPaid": false, "paidInfo": null, "associatedService": "Gitea", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "telegram-001", "name": "Telegram Bot - Bot Token", "category": "bot", "subCategory": "telegram", "dataType": "bot-token", "value": "8272877120:AAEKPhLGZPyj8XL9HGSowGLAFzXZPtXHMa4", "url": "https://t.me/AdmTrackSteelBot", "notes": "Token do bot Telegram para integração com VPS", "tags": ["telegram", "bot", "notification"], "isPaid": false, "paidInfo": null, "associatedService": "Telegram Bot", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "telegram-002", "name": "Telegram Bot - Chat ID Admin", "category": "bot", "subCategory": "telegram", "dataType": "key", "value": "8768212834", "url": "https://t.me/AdmTrackSteelBot", "notes": "Chat ID do usuário admin (Marcos) autorizado", "tags": ["telegram", "bot", "admin"], "isPaid": false, "paidInfo": null, "associatedService": "Telegram Bot", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "gpi-001", "name": "GPI Local - MongoDB URI", "category": "banco-de-dados", "subCategory": "mongodb", "dataType": "uri", "value": "mongodb+srv://admtracksteel:29OHAHpKTI8XcCNt@cluster0.a4xiilu.mongodb.net/ts_gpi?retryWrites=true&w=majority&appName=Cluster0", "url": null, "notes": "URI do MongoDB Atlas para o projeto GPI local", "tags": ["gpi", "mongodb", "atlas", "database"], "isPaid": true, "paidInfo": {"cancellationDate": null, "reminderDays": 7, "cost": "Free tier (500MB)", "billingCycle": "monthly"}, "associatedService": "GPI Local", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "gpi-002", "name": "GPI Local - Clerk Publishable Key", "category": "api-externa", "subCategory": "auth", "dataType": "key", "value": "pk_live_Y2xlcmsucmVpZm9uYXMuY2xvdWQk", "url": "https://dashboard.clerk.com", "notes": "Chave pública do Clerk para autenticação", "tags": ["gpi", "clerk", "auth", "frontend"], "isPaid": false, "paidInfo": null, "associatedService": "GPI Local", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "gpi-003", "name": "GPI Local - JWT Secret", "category": "api-externa", "subCategory": "auth", "dataType": "jwt-secret", "value": "kd6wmHgnOk5xLy2ybtUiGPaPtVEwv/L4m3vFkIvSYrE=", "url": "https://dashboard.clerk.com", "notes": "JWT Secret para validar tokens localmente", "tags": ["gpi", "jwt", "auth"], "isPaid": false, "paidInfo": null, "associatedService": "GPI Local", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "gpi-004", "name": "GPI Local - Database Local (Postgres)", "category": "banco-de-dados", "subCategory": "postgresql", "dataType": "uri", "value": "postgresql://postgres:postgres@localhost:5432/pintura_db?schema=public", "url": null, "notes": "URI do banco PostgreSQL local para desenvolvimento", "tags": ["gpi", "postgresql", "local", "development"], "isPaid": false, "paidInfo": null, "associatedService": "GPI Local", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "anthropic-001", "name": "Anthropic - API Key", "category": "api-externa", "subCategory": "llm", "dataType": "api-key", "value": "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", "url": "https://console.anthropic.com", "notes": "API Key para Claude API. Cuidado: valor muito longo!", "tags": ["anthropic", "claude", "llm", "api"], "isPaid": true, "paidInfo": {"cancellationDate": null, "reminderDays": 7, "cost": "Pay-as-you-go", "billingCycle": "monthly"}, "associatedService": "Anthropic", "lastRotated": null, "createdAt": "2026-03-20", "updatedAt": "2026-03-20"}, {"id": "ssh-001", "name": "SSH - Public Key", "category": "ssh", "subCategory": "authentication", "dataType": "chave-publica", "value": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILXuodcZ2QF/nmNZaBBiSZIF3t1kU8F7oDI4BgSBibDZ admtracksteel@gmail.com", "url": null, "notes": "Chave pública SSH para autenticação em servidores. Usuário: root", "tags": ["ssh", "ed25519", "authentication", "server"], "isPaid": false, "paidInfo": null, "associatedService": "SSH", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "gitea-token-001", "name": "Token Gitea Coolify", "category": "deploy", "subCategory": "ci-cd", "dataType": "token", "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE3NDU...", "url": "https://git.reifonas.cloud", "notes": "Token para integração do Coolify com Gitea", "tags": ["coolify", "gitea", "deploy", "token"], "isPaid": false, "paidInfo": null, "associatedService": "Coolify-Gitea", "lastRotated": null, "createdAt": "2026-03-10", "updatedAt": "2026-03-10"}], "metadata": {"categories": {"destino": ["infraestrutura", "banco-de-dados", "api-externa", "deploy", "ssh", "autenticacao", "storage", "git", "bot"], "tipo-dado": ["key", "token", "senha", "url", "chave-publica", "api-key", "jwt-secret", "uri", "secret", "password", "bot-token", "credentials", "username"]}}}; async function loadData() { // Usar dados inline ao invés de carregar do arquivo (para funcionar offline/file://) @@ -1567,6 +1638,40 @@ `; } + let loginInfoHtml = ''; + if (cred.loginUsername || cred.loginPassword) { + const isLoginHidden = hiddenValues.has(cred.id + '_login'); + const displayUser = isLoginHidden ? '••••••••' : (cred.loginUsername || '-'); + const displayPass = isLoginHidden ? '••••••••' : (cred.loginPassword || '-'); + + loginInfoHtml = ` +
+ ${cred.loginUsername ? ` + + ` : ''} + ${cred.loginPassword ? ` + + ` : ''} +
+ `; + } + return `
@@ -1621,6 +1726,7 @@ ${cred.notes}
` : ''} + ${loginInfoHtml}
`; @@ -1672,13 +1778,24 @@ renderCards(); } - async function copyToClipboard(id) { + async function copyToClipboard(id, field = null) { const cred = data.credentials.find(c => c.id === id); if (!cred) return; try { - await navigator.clipboard.writeText(cred.value); - showToast(`Copiado: ${cred.name}`, 'success'); + let textToCopy = cred.value; + let label = cred.name; + + if (field === 'loginUsername') { + textToCopy = cred.loginUsername; + label = `${cred.name} - Usuário`; + } else if (field === 'loginPassword') { + textToCopy = cred.loginPassword; + label = `${cred.name} - Senha`; + } + + await navigator.clipboard.writeText(textToCopy); + showToast(`Copiado: ${label}`, 'success'); } catch (error) { showToast('Erro ao copiar', 'error'); } @@ -1710,6 +1827,8 @@ document.getElementById('value').value = cred.value; document.getElementById('url').value = cred.url || ''; document.getElementById('associatedService').value = cred.associatedService || ''; + document.getElementById('loginUsername').value = cred.loginUsername || ''; + document.getElementById('loginPassword').value = cred.loginPassword || ''; document.getElementById('notes').value = cred.notes || ''; document.getElementById('tags').value = cred.tags?.join(', ') || ''; @@ -1740,6 +1859,8 @@ const editId = document.getElementById('editId').value; const isPaid = document.getElementById('isPaid').checked; + const loginUsername = document.getElementById('loginUsername').value || null; + const loginPassword = document.getElementById('loginPassword').value || null; const credData = { name: document.getElementById('name').value, @@ -1749,6 +1870,8 @@ value: document.getElementById('value').value, url: document.getElementById('url').value || null, associatedService: document.getElementById('associatedService').value || null, + loginUsername: loginUsername, + loginPassword: loginPassword, notes: document.getElementById('notes').value || null, tags: document.getElementById('tags').value ? document.getElementById('tags').value.split(',').map(t => t.trim()).filter(t => t) : [], diff --git a/keys.html b/keys.html index 8add267..bd52bb4 100644 --- a/keys.html +++ b/keys.html @@ -682,6 +682,67 @@ text-decoration: underline; } + .card-login-info { + display: flex; + gap: 12px; + margin-top: 8px; + padding-top: 8px; + border-top: 1px dashed var(--border-color); + } + + .card-login-field { + flex: 1; + background: var(--bg-secondary); + border: 1px solid var(--border-color); + border-radius: var(--radius-sm); + padding: 8px 10px; + } + + .card-login-field-label { + font-size: 0.65rem; + color: var(--text-muted); + text-transform: uppercase; + letter-spacing: 0.5px; + margin-bottom: 4px; + } + + .card-login-field-content { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + } + + .card-login-field-text { + font-family: var(--font-mono); + font-size: 0.75rem; + color: var(--accent-cyan); + word-break: break-all; + } + + .card-login-field-text.masked { + color: var(--text-muted); + } + + .card-login-copy { + background: none; + border: none; + color: var(--text-muted); + cursor: pointer; + padding: 2px; + display: flex; + transition: var(--transition); + } + + .card-login-copy:hover { + color: var(--accent-cyan); + } + + .card-login-copy svg { + width: 14px; + height: 14px; + } + /* Toast */ .toast-container { position: fixed; @@ -1238,6 +1299,16 @@ +
+
+ + +
+
+ + +
+
@@ -1463,7 +1534,7 @@ } // EMBEDDED DATA - Dados incluídos diretamente no HTML - const EMBEDDED_DATA = {"version":"1.0","lastUpdated":"2026-03-20T14:30:00Z","credentials":[{"id":"coolify-001","name":"Coolify - App Key","category":"infraestrutura","subCategory":"orchestrator","dataType":"key","value":"base64:b47bUe7FBv1cGpzW5zSIEfTVsfXqw+wDg37p6BIOCVE=","url":"https://coolify.reifonas.cloud","notes":"Usada para criptografia de sessões do Coolify","tags":["coolify","criptografia"],"isPaid":false,"paidInfo":null,"associatedService":"Coolify","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"coolify-002","name":"Coolify - Database Password (PostgreSQL)","category":"infraestrutura","subCategory":"database","dataType":"password","value":"IbPDBCzJPeinra5tCfCZaDz9QOkIHBFofOSpnr626/s=","url":"https://coolify.reifonas.cloud","notes":"Senha do banco PostgreSQL interno do Coolify","tags":["coolify","postgresql","database"],"isPaid":false,"paidInfo":null,"associatedService":"Coolify","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"coolify-003","name":"Coolify - Redis Password","category":"infraestrutura","subCategory":"cache","dataType":"secret","value":"kkMadIcUAkDM1oUrcY3tCC+r9Uw9RWBpt+terc5TfMU=","url":"https://coolify.reifonas.cloud","notes":"Senha do Redis para cache do Coolify","tags":["coolify","redis","cache"],"isPaid":false,"paidInfo":null,"associatedService":"Coolify","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"coolify-004","name":"Coolify - Pusher App ID","category":"infraestrutura","subCategory":"websocket","dataType":"key","value":"9874b73ff9652e5327b5b70952929f4abdc67589802a6efc1665a2652ed0696b","url":"https://coolify.reifonas.cloud","notes":"App ID do Pusher para WebSocket em tempo real","tags":["coolify","pusher","websocket"],"isPaid":false,"paidInfo":null,"associatedService":"Coolify","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"coolify-005","name":"Coolify - Pusher App Key","category":"infraestrutura","subCategory":"websocket","dataType":"key","value":"7a4125c71f34f83bf2ee722434a596f135f53021d72d7513b58c6e1aa1b9ed5e","url":"https://coolify.reifonas.cloud","notes":"App Key do Pusher para WebSocket em tempo real","tags":["coolify","pusher","websocket"],"isPaid":false,"paidInfo":null,"associatedService":"Coolify","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"coolify-006","name":"Coolify - Pusher App Secret","category":"infraestrutura","subCategory":"websocket","dataType":"secret","value":"2244c9076f690153e7400179fb6fb429020a74801d61644fa29ede5ae17b7523","url":"https://coolify.reifonas.cloud","notes":"App Secret do Pusher para autenticação","tags":["coolify","pusher","websocket","secret"],"isPaid":false,"paidInfo":null,"associatedService":"Coolify","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"supabase-001","name":"Supabase - Dashboard Studio User","category":"api-externa","subCategory":"dashboard","dataType":"username","value":"2FfdSSoPDostr0wA","url":"https://supabase.reifonas.cloud/dashboard","notes":"Usuário do painel administrativo do Supabase Studio","tags":["supabase","admin","studio"],"isPaid":false,"paidInfo":null,"associatedService":"Supabase","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"supabase-002","name":"Supabase - Dashboard Studio Password","category":"api-externa","subCategory":"dashboard","dataType":"password","value":"Mg0WcYG7XPXA0oWf4SOUfIFmkW5Bs5Cr","url":"https://supabase.reifonas.cloud/dashboard","notes":"Senha do painel administrativo do Supabase Studio","tags":["supabase","admin","studio"],"isPaid":false,"paidInfo":null,"associatedService":"Supabase","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"supabase-003","name":"Supabase - Database Credentials","category":"banco-de-dados","subCategory":"postgresql","dataType":"credentials","value":"postgresql://supabase_admin:Xz0oyb6ArGYG5uAVTVwcvJxRrMuT7EIJ@localhost:5432/postgres","url":"https://supabase.reifonas.cloud/dashboard/project/_/database/tables","notes":"Credenciais completas do banco PostgreSQL. Porta: 5432","tags":["supabase","postgresql","database"],"isPaid":false,"paidInfo":null,"associatedService":"Supabase","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"supabase-004","name":"Supabase - Service Role Key","category":"api-externa","subCategory":"api-keys","dataType":"api-key","value":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsImlhdCI6MTc3Mjk5NTUwMCwiZXhwIjo0OTI4NjY5MTAwLCJyb2xlIjoic2VydmljZV9yb2xlIn0._n2Kj2f29z1u0pOYUGqAr-1Xjt-xQpK9KDhhhGvOIro","url":"https://supabase.reifonas.cloud/dashboard/project/_/settings/api","notes":"Chave admin para operações no servidor. NUNCA expor no frontend!","tags":["supabase","api","admin","service-role"],"isPaid":false,"paidInfo":null,"associatedService":"Supabase","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"supabase-005","name":"Supabase - Anon Key","category":"api-externa","subCategory":"api-keys","dataType":"api-key","value":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsImlhdCI6MTc3Mjk5NTUwMCwiZXhwIjo0OTI4NjY5MTAwLCJyb2xlIjoiYW5vbiJ9.kOAYmQJlNd3LsssUHaNyvWZpa2sunfpLj24F_X-PRNY","url":"https://supabase.reifonas.cloud/dashboard/project/_/settings/api","notes":"Chave pública para uso no frontend (nível anon)","tags":["supabase","api","public","anon"],"isPaid":false,"paidInfo":null,"associatedService":"Supabase","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"supabase-006","name":"Supabase - JWT Secret","category":"api-externa","subCategory":"auth","dataType":"jwt-secret","value":"BJTT52gbXWcUeWMgGGQ90I2ei80RDCZ0","url":"https://supabase.reifonas.cloud/dashboard/project/_/auth/providers","notes":"Secret para validar tokens JWT do Supabase Auth","tags":["supabase","auth","jwt"],"isPaid":false,"paidInfo":null,"associatedService":"Supabase","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"supabase-007","name":"Supabase - MinIO Access Key","category":"storage","subCategory":"s3","dataType":"key","value":"JcIIUSqslL5JCG3y","url":"https://supabase.reifonas.cloud/dashboard/project/_/storage","notes":"Access Key para MinIO (storage S3-compatible)","tags":["supabase","storage","minio","s3"],"isPaid":false,"paidInfo":null,"associatedService":"Supabase","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"supabase-008","name":"Supabase - MinIO Secret Key","category":"storage","subCategory":"s3","dataType":"secret","value":"pR8v6UUvVDcCxTitjVQkqgdaHcsQ8vCv","url":"https://supabase.reifonas.cloud/dashboard/project/_/storage","notes":"Secret Key para MinIO (storage S3-compatible)","tags":["supabase","storage","minio","s3","secret"],"isPaid":false,"paidInfo":null,"associatedService":"Supabase","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"supabase-009","name":"Supabase - Vault Encryption Key","category":"api-externa","subCategory":"security","dataType":"key","value":"IgDixpOtM6uhRL2LaarNwnSrZmanUtvc","url":"https://supabase.reifonas.cloud/dashboard/project/_/vault","notes":"Chave de criptografia para o Vault do Supabase","tags":["supabase","vault","encryption","security"],"isPaid":false,"paidInfo":null,"associatedService":"Supabase","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"supabase-010","name":"Supabase - Logflare API Key","category":"api-externa","subCategory":"analytics","dataType":"api-key","value":"s5tbGFZV0rCoA8OZpP5Eg8rZnBlykvOr","url":"https://supabase.reifonas.cloud/dashboard/project/_/logs","notes":"API Key para integração com Logflare (logs analytics)","tags":["supabase","logs","analytics","logflare"],"isPaid":false,"paidInfo":null,"associatedService":"Supabase","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"logto-001","name":"Logto - Database Credentials","category":"banco-de-dados","subCategory":"postgresql","dataType":"credentials","value":"postgresql://bhWbMdkltdZej1RG:Szt31khElk0RczDuk0CJq2eDMsp6oo0e@localhost:5432/logto","url":"https://logto.reifonas.cloud","notes":"Credenciais do banco PostgreSQL do Logto. DB Name: logto","tags":["logto","auth","postgresql","database"],"isPaid":false,"paidInfo":null,"associatedService":"Logto","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"logto-002","name":"Logto - Admin Endpoint","category":"autenticacao","subCategory":"oauth","dataType":"url","value":"https://logto-admin-bzlued1boxl3t8ewsyn99an9.187.77.227.172.sslip.io","url":"https://logto-admin-bzlued1boxl3t8ewsyn99an9.187.77.227.172.sslip.io","notes":"Endpoint administrativo do Logto (SSLip.io temporário)","tags":["logto","auth","admin","oauth"],"isPaid":false,"paidInfo":null,"associatedService":"Logto","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"gitea-001","name":"Gitea - Admin Credentials","category":"git","subCategory":"git-server","dataType":"credentials","value":"Usuário: admtracksteel / Marcos | Senha: @@Gi05Br;;;","url":"https://git.reifonas.cloud","notes":"Credenciais de admin para Gitea (usar para ambos usuários)","tags":["gitea","git","admin"],"isPaid":false,"paidInfo":null,"associatedService":"Gitea","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"gitea-002","name":"Gitea - Internal Token","category":"git","subCategory":"git-server","dataType":"token","value":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE3NzMxMDg3Mjl9.beKMVnmwBwdIyBhApfihXHMxvIMc3mXjJJQ0gLuwPAo","url":"https://git.reifonas.cloud","notes":"Token interno para autenticação API do Gitea","tags":["gitea","git","api","token"],"isPaid":false,"paidInfo":null,"associatedService":"Gitea","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"gitea-003","name":"Gitea - OAuth2 JWT Secret","category":"git","subCategory":"oauth","dataType":"jwt-secret","value":"hfHyav79UnnuhN0x9cVHvgedRVS6Y_xumnRW62d0Xk8","url":"https://git.reifonas.cloud","notes":"JWT Secret para OAuth2 do Gitea","tags":["gitea","oauth","jwt"],"isPaid":false,"paidInfo":null,"associatedService":"Gitea","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"gitea-004","name":"Gitea - LFS JWT Secret","category":"git","subCategory":"lfs","dataType":"jwt-secret","value":"gvasUkABbQ9scDHYdKRwsIEURWsbFBXUnOFD91Gf8A4","url":"https://git.reifonas.cloud","notes":"JWT Secret para Git LFS do Gitea","tags":["gitea","lfs","jwt"],"isPaid":false,"paidInfo":null,"associatedService":"Gitea","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"telegram-001","name":"Telegram Bot - Bot Token","category":"bot","subCategory":"telegram","dataType":"bot-token","value":"8272877120:AAEKPhLGZPyj8XL9HGSowGLAFzXZPtXHMa4","url":"https://t.me/AdmTrackSteelBot","notes":"Token do bot Telegram para integração com VPS","tags":["telegram","bot","notification"],"isPaid":false,"paidInfo":null,"associatedService":"Telegram Bot","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"telegram-002","name":"Telegram Bot - Chat ID Admin","category":"bot","subCategory":"telegram","dataType":"key","value":"8768212834","url":"https://t.me/AdmTrackSteelBot","notes":"Chat ID do usuário admin (Marcos) autorizado","tags":["telegram","bot","admin"],"isPaid":false,"paidInfo":null,"associatedService":"Telegram Bot","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"gpi-001","name":"GPI Local - MongoDB URI","category":"banco-de-dados","subCategory":"mongodb","dataType":"uri","value":"mongodb+srv://admtracksteel:29OHAHpKTI8XcCNt@cluster0.a4xiilu.mongodb.net/ts_gpi?retryWrites=true&w=majority&appName=Cluster0","url":null,"notes":"URI do MongoDB Atlas para o projeto GPI local","tags":["gpi","mongodb","atlas","database"],"isPaid":true,"paidInfo":{"cancellationDate":null,"reminderDays":7,"cost":"Free tier (500MB)","billingCycle":"monthly"},"associatedService":"GPI Local","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"gpi-002","name":"GPI Local - Clerk Publishable Key","category":"api-externa","subCategory":"auth","dataType":"key","value":"pk_live_Y2xlcmsucmVpZm9uYXMuY2xvdWQk","url":"https://dashboard.clerk.com","notes":"Chave pública do Clerk para autenticação","tags":["gpi","clerk","auth","frontend"],"isPaid":false,"paidInfo":null,"associatedService":"GPI Local","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"gpi-003","name":"GPI Local - JWT Secret","category":"api-externa","subCategory":"auth","dataType":"jwt-secret","value":"kd6wmHgnOk5xLy2ybtUiGPaPtVEwv/L4m3vFkIvSYrE=","url":"https://dashboard.clerk.com","notes":"JWT Secret para validar tokens localmente","tags":["gpi","jwt","auth"],"isPaid":false,"paidInfo":null,"associatedService":"GPI Local","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"gpi-004","name":"GPI Local - Database Local (Postgres)","category":"banco-de-dados","subCategory":"postgresql","dataType":"uri","value":"postgresql://postgres:postgres@localhost:5432/pintura_db?schema=public","url":null,"notes":"URI do banco PostgreSQL local para desenvolvimento","tags":["gpi","postgresql","local","development"],"isPaid":false,"paidInfo":null,"associatedService":"GPI Local","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"anthropic-001","name":"Anthropic - API Key","category":"api-externa","subCategory":"llm","dataType":"api-key","value":"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","url":"https://console.anthropic.com","notes":"API Key para Claude API. Cuidado: valor muito longo!","tags":["anthropic","claude","llm","api"],"isPaid":true,"paidInfo":{"cancellationDate":null,"reminderDays":7,"cost":"Pay-as-you-go","billingCycle":"monthly"},"associatedService":"Anthropic","lastRotated":null,"createdAt":"2026-03-20","updatedAt":"2026-03-20"},{"id":"ssh-001","name":"SSH - Public Key","category":"ssh","subCategory":"authentication","dataType":"chave-publica","value":"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILXuodcZ2QF/nmNZaBBiSZIF3t1kU8F7oDI4BgSBibDZ admtracksteel@gmail.com","url":null,"notes":"Chave pública SSH para autenticação em servidores. Usuário: root","tags":["ssh","ed25519","authentication","server"],"isPaid":false,"paidInfo":null,"associatedService":"SSH","lastRotated":null,"createdAt":"2026-03-18","updatedAt":"2026-03-20"},{"id":"gitea-token-001","name":"Token Gitea Coolify","category":"deploy","subCategory":"ci-cd","dataType":"token","value":"28914e07ba0d55b31668b5fa2d2f90da8b13894b","url":"https://git.reifonas.cloud","notes":"Token para integração do Coolify com Gitea","tags":["coolify","gitea","deploy","token"],"isPaid":false,"paidInfo":null,"associatedService":"Coolify-Gitea","lastRotated":null,"createdAt":"2026-03-10","updatedAt":"2026-03-10"}],"metadata":{"categories":{"destino":["infraestrutura","banco-de-dados","api-externa","deploy","ssh","autenticacao","storage","git","bot"],"tipo-dado":["key","token","senha","url","chave-publica","api-key","jwt-secret","uri","secret","password","bot-token","credentials","username"]}}}; + const EMBEDDED_DATA = {"version": "1.0", "lastUpdated": "2026-03-20T14:30:00Z", "credentials": [{"id": "coolify-001", "name": "Coolify - App Key", "category": "infraestrutura", "subCategory": "orchestrator", "dataType": "key", "value": "base64:b47bUe7FBv1cGpzW5zSIEfTVsfXqw+wDg37p6BIOCVE=", "url": "https://coolify.reifonas.cloud", "notes": "Usada para criptografia de sessões do Coolify", "tags": ["coolify", "criptografia"], "isPaid": false, "paidInfo": null, "associatedService": "Coolify", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "coolify-002", "name": "Coolify - Database Password (PostgreSQL)", "category": "infraestrutura", "subCategory": "database", "dataType": "password", "value": "IbPDBCzJPeinra5tCfCZaDz9QOkIHBFofOSpnr626/s=", "url": "https://coolify.reifonas.cloud", "notes": "Senha do banco PostgreSQL interno do Coolify", "tags": ["coolify", "postgresql", "database"], "isPaid": false, "paidInfo": null, "associatedService": "Coolify", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "coolify-003", "name": "Coolify - Redis Password", "category": "infraestrutura", "subCategory": "cache", "dataType": "secret", "value": "kkMadIcUAkDM1oUrcY3tCC+r9Uw9RWBpt+terc5TfMU=", "url": "https://coolify.reifonas.cloud", "notes": "Senha do Redis para cache do Coolify", "tags": ["coolify", "redis", "cache"], "isPaid": false, "paidInfo": null, "associatedService": "Coolify", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "coolify-004", "name": "Coolify - Pusher App ID", "category": "infraestrutura", "subCategory": "websocket", "dataType": "key", "value": "9874b73ff9652e5327b5b70952929f4abdc67589802a6efc1665a2652ed0696b", "url": "https://coolify.reifonas.cloud", "notes": "App ID do Pusher para WebSocket em tempo real", "tags": ["coolify", "pusher", "websocket"], "isPaid": false, "paidInfo": null, "associatedService": "Coolify", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "coolify-005", "name": "Coolify - Pusher App Key", "category": "infraestrutura", "subCategory": "websocket", "dataType": "key", "value": "7a4125c71f34f83bf2ee722434a596f135f53021d72d7513b58c6e1aa1b9ed5e", "url": "https://coolify.reifonas.cloud", "notes": "App Key do Pusher para WebSocket em tempo real", "tags": ["coolify", "pusher", "websocket"], "isPaid": false, "paidInfo": null, "associatedService": "Coolify", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "coolify-006", "name": "Coolify - Pusher App Secret", "category": "infraestrutura", "subCategory": "websocket", "dataType": "secret", "value": "2244c9076f690153e7400179fb6fb429020a74801d61644fa29ede5ae17b7523", "url": "https://coolify.reifonas.cloud", "notes": "App Secret do Pusher para autenticação", "tags": ["coolify", "pusher", "websocket", "secret"], "isPaid": false, "paidInfo": null, "associatedService": "Coolify", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "supabase-001", "name": "Supabase - Dashboard Studio User", "category": "api-externa", "subCategory": "dashboard", "dataType": "username", "value": "2FfdSSoPDostr0wA", "url": "https://supabase.reifonas.cloud/dashboard", "notes": "Usuário do painel administrativo do Supabase Studio", "tags": ["supabase", "admin", "studio"], "isPaid": false, "paidInfo": null, "associatedService": "Supabase", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "supabase-002", "name": "Supabase - Dashboard Studio Password", "category": "api-externa", "subCategory": "dashboard", "dataType": "password", "value": "Mg0WcYG7XPXA0oWf4SOUfIFmkW5Bs5Cr", "url": "https://supabase.reifonas.cloud/dashboard", "notes": "Senha do painel administrativo do Supabase Studio", "tags": ["supabase", "admin", "studio"], "isPaid": false, "paidInfo": null, "associatedService": "Supabase", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "supabase-003", "name": "Supabase - Database Credentials", "category": "banco-de-dados", "subCategory": "postgresql", "dataType": "credentials", "value": "postgresql://supabase_admin:Xz0oyb6ArGYG5uAVTVwcvJxRrMuT7EIJ@localhost:5432/postgres", "url": "https://supabase.reifonas.cloud/dashboard/project/_/database/tables", "notes": "Credenciais completas do banco PostgreSQL. Porta: 5432", "tags": ["supabase", "postgresql", "database"], "isPaid": false, "paidInfo": null, "associatedService": "Supabase", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "supabase-004", "name": "Supabase - Service Role Key", "category": "api-externa", "subCategory": "api-keys", "dataType": "api-key", "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsImlhdCI6MTc3Mjk5NTUwMCwiZXhwIjo0OTI4NjY5MTAwLCJyb2xlIjoic2VydmljZV9yb2xlIn0._n2Kj2f29z1u0pOYUGqAr-1Xjt-xQpK9KDhhhGvOIro", "url": "https://supabase.reifonas.cloud/dashboard/project/_/settings/api", "notes": "Chave admin para operações no servidor. NUNCA expor no frontend!", "tags": ["supabase", "api", "admin", "service-role"], "isPaid": false, "paidInfo": null, "associatedService": "Supabase", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "supabase-005", "name": "Supabase - Anon Key", "category": "api-externa", "subCategory": "api-keys", "dataType": "api-key", "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsImlhdCI6MTc3Mjk5NTUwMCwiZXhwIjo0OTI4NjY5MTAwLCJyb2xlIjoiYW5vbiJ9.kOAYmQJlNd3LsssUHaNyvWZpa2sunfpLj24F_X-PRNY", "url": "https://supabase.reifonas.cloud/dashboard/project/_/settings/api", "notes": "Chave pública para uso no frontend (nível anon)", "tags": ["supabase", "api", "public", "anon"], "isPaid": false, "paidInfo": null, "associatedService": "Supabase", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "supabase-006", "name": "Supabase - JWT Secret", "category": "api-externa", "subCategory": "auth", "dataType": "jwt-secret", "value": "BJTT52gbXWcUeWMgGGQ90I2ei80RDCZ0", "url": "https://supabase.reifonas.cloud/dashboard/project/_/auth/providers", "notes": "Secret para validar tokens JWT do Supabase Auth", "tags": ["supabase", "auth", "jwt"], "isPaid": false, "paidInfo": null, "associatedService": "Supabase", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "supabase-007", "name": "Supabase - MinIO Access Key", "category": "storage", "subCategory": "s3", "dataType": "key", "value": "JcIIUSqslL5JCG3y", "url": "https://supabase.reifonas.cloud/dashboard/project/_/storage", "notes": "Access Key para MinIO (storage S3-compatible)", "tags": ["supabase", "storage", "minio", "s3"], "isPaid": false, "paidInfo": null, "associatedService": "Supabase", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "supabase-008", "name": "Supabase - MinIO Secret Key", "category": "storage", "subCategory": "s3", "dataType": "secret", "value": "pR8v6UUvVDcCxTitjVQkqgdaHcsQ8vCv", "url": "https://supabase.reifonas.cloud/dashboard/project/_/storage", "notes": "Secret Key para MinIO (storage S3-compatible)", "tags": ["supabase", "storage", "minio", "s3", "secret"], "isPaid": false, "paidInfo": null, "associatedService": "Supabase", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "supabase-009", "name": "Supabase - Vault Encryption Key", "category": "api-externa", "subCategory": "security", "dataType": "key", "value": "IgDixpOtM6uhRL2LaarNwnSrZmanUtvc", "url": "https://supabase.reifonas.cloud/dashboard/project/_/vault", "notes": "Chave de criptografia para o Vault do Supabase", "tags": ["supabase", "vault", "encryption", "security"], "isPaid": false, "paidInfo": null, "associatedService": "Supabase", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "supabase-010", "name": "Supabase - Logflare API Key", "category": "api-externa", "subCategory": "analytics", "dataType": "api-key", "value": "s5tbGFZV0rCoA8OZpP5Eg8rZnBlykvOr", "url": "https://supabase.reifonas.cloud/dashboard/project/_/logs", "notes": "API Key para integração com Logflare (logs analytics)", "tags": ["supabase", "logs", "analytics", "logflare"], "isPaid": false, "paidInfo": null, "associatedService": "Supabase", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "logto-001", "name": "Logto - Database Credentials", "category": "banco-de-dados", "subCategory": "postgresql", "dataType": "credentials", "value": "postgresql://bhWbMdkltdZej1RG:Szt31khElk0RczDuk0CJq2eDMsp6oo0e@localhost:5432/logto", "url": "https://logto.reifonas.cloud", "notes": "Credenciais do banco PostgreSQL do Logto. DB Name: logto", "tags": ["logto", "auth", "postgresql", "database"], "isPaid": false, "paidInfo": null, "associatedService": "Logto", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "logto-002", "name": "Logto - Admin Endpoint", "category": "autenticacao", "subCategory": "oauth", "dataType": "url", "value": "https://logto-admin-bzlued1boxl3t8ewsyn99an9.187.77.227.172.sslip.io", "url": "https://logto-admin-bzlued1boxl3t8ewsyn99an9.187.77.227.172.sslip.io", "loginUsername": "logto-admin", "loginPassword": "@@Gi05Br;;;", "notes": "Endpoint administrativo do Logto (SSLip.io temporário)", "tags": ["logto", "auth", "admin", "oauth"], "isPaid": false, "paidInfo": null, "associatedService": "Logto", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "gitea-001", "name": "Gitea - Admin Credentials", "category": "git", "subCategory": "git-server", "dataType": "credentials", "value": "Usuário: admtracksteel / Marcos | Senha: @@Gi05Br;;;", "url": "https://git.reifonas.cloud", "notes": "Credenciais de admin para Gitea (usar para ambos usuários)", "tags": ["gitea", "git", "admin"], "isPaid": false, "paidInfo": null, "associatedService": "Gitea", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "gitea-002", "name": "Gitea - Internal Token", "category": "git", "subCategory": "git-server", "dataType": "token", "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE3NzMxMDg3Mjl9.beKMVnmwBwdIyBhApfihXHMxvIMc3mXjJJQ0gLuwPAo", "url": "https://git.reifonas.cloud", "notes": "Token interno para autenticação API do Gitea", "tags": ["gitea", "git", "api", "token"], "isPaid": false, "paidInfo": null, "associatedService": "Gitea", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "gitea-003", "name": "Gitea - OAuth2 JWT Secret", "category": "git", "subCategory": "oauth", "dataType": "jwt-secret", "value": "hfHyav79UnnuhN0x9cVHvgedRVS6Y_xumnRW62d0Xk8", "url": "https://git.reifonas.cloud", "notes": "JWT Secret para OAuth2 do Gitea", "tags": ["gitea", "oauth", "jwt"], "isPaid": false, "paidInfo": null, "associatedService": "Gitea", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "gitea-004", "name": "Gitea - LFS JWT Secret", "category": "git", "subCategory": "lfs", "dataType": "jwt-secret", "value": "gvasUkABbQ9scDHYdKRwsIEURWsbFBXUnOFD91Gf8A4", "url": "https://git.reifonas.cloud", "notes": "JWT Secret para Git LFS do Gitea", "tags": ["gitea", "lfs", "jwt"], "isPaid": false, "paidInfo": null, "associatedService": "Gitea", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "telegram-001", "name": "Telegram Bot - Bot Token", "category": "bot", "subCategory": "telegram", "dataType": "bot-token", "value": "8272877120:AAEKPhLGZPyj8XL9HGSowGLAFzXZPtXHMa4", "url": "https://t.me/AdmTrackSteelBot", "notes": "Token do bot Telegram para integração com VPS", "tags": ["telegram", "bot", "notification"], "isPaid": false, "paidInfo": null, "associatedService": "Telegram Bot", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "telegram-002", "name": "Telegram Bot - Chat ID Admin", "category": "bot", "subCategory": "telegram", "dataType": "key", "value": "8768212834", "url": "https://t.me/AdmTrackSteelBot", "notes": "Chat ID do usuário admin (Marcos) autorizado", "tags": ["telegram", "bot", "admin"], "isPaid": false, "paidInfo": null, "associatedService": "Telegram Bot", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "gpi-001", "name": "GPI Local - MongoDB URI", "category": "banco-de-dados", "subCategory": "mongodb", "dataType": "uri", "value": "mongodb+srv://admtracksteel:29OHAHpKTI8XcCNt@cluster0.a4xiilu.mongodb.net/ts_gpi?retryWrites=true&w=majority&appName=Cluster0", "url": null, "notes": "URI do MongoDB Atlas para o projeto GPI local", "tags": ["gpi", "mongodb", "atlas", "database"], "isPaid": true, "paidInfo": {"cancellationDate": null, "reminderDays": 7, "cost": "Free tier (500MB)", "billingCycle": "monthly"}, "associatedService": "GPI Local", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "gpi-002", "name": "GPI Local - Clerk Publishable Key", "category": "api-externa", "subCategory": "auth", "dataType": "key", "value": "pk_live_Y2xlcmsucmVpZm9uYXMuY2xvdWQk", "url": "https://dashboard.clerk.com", "notes": "Chave pública do Clerk para autenticação", "tags": ["gpi", "clerk", "auth", "frontend"], "isPaid": false, "paidInfo": null, "associatedService": "GPI Local", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "gpi-003", "name": "GPI Local - JWT Secret", "category": "api-externa", "subCategory": "auth", "dataType": "jwt-secret", "value": "kd6wmHgnOk5xLy2ybtUiGPaPtVEwv/L4m3vFkIvSYrE=", "url": "https://dashboard.clerk.com", "notes": "JWT Secret para validar tokens localmente", "tags": ["gpi", "jwt", "auth"], "isPaid": false, "paidInfo": null, "associatedService": "GPI Local", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "gpi-004", "name": "GPI Local - Database Local (Postgres)", "category": "banco-de-dados", "subCategory": "postgresql", "dataType": "uri", "value": "postgresql://postgres:postgres@localhost:5432/pintura_db?schema=public", "url": null, "notes": "URI do banco PostgreSQL local para desenvolvimento", "tags": ["gpi", "postgresql", "local", "development"], "isPaid": false, "paidInfo": null, "associatedService": "GPI Local", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "anthropic-001", "name": "Anthropic - API Key", "category": "api-externa", "subCategory": "llm", "dataType": "api-key", "value": "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", "url": "https://console.anthropic.com", "notes": "API Key para Claude API. Cuidado: valor muito longo!", "tags": ["anthropic", "claude", "llm", "api"], "isPaid": true, "paidInfo": {"cancellationDate": null, "reminderDays": 7, "cost": "Pay-as-you-go", "billingCycle": "monthly"}, "associatedService": "Anthropic", "lastRotated": null, "createdAt": "2026-03-20", "updatedAt": "2026-03-20"}, {"id": "ssh-001", "name": "SSH - Public Key", "category": "ssh", "subCategory": "authentication", "dataType": "chave-publica", "value": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILXuodcZ2QF/nmNZaBBiSZIF3t1kU8F7oDI4BgSBibDZ admtracksteel@gmail.com", "url": null, "notes": "Chave pública SSH para autenticação em servidores. Usuário: root", "tags": ["ssh", "ed25519", "authentication", "server"], "isPaid": false, "paidInfo": null, "associatedService": "SSH", "lastRotated": null, "createdAt": "2026-03-18", "updatedAt": "2026-03-20"}, {"id": "gitea-token-001", "name": "Token Gitea Coolify", "category": "deploy", "subCategory": "ci-cd", "dataType": "token", "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE3NDU...", "url": "https://git.reifonas.cloud", "notes": "Token para integração do Coolify com Gitea", "tags": ["coolify", "gitea", "deploy", "token"], "isPaid": false, "paidInfo": null, "associatedService": "Coolify-Gitea", "lastRotated": null, "createdAt": "2026-03-10", "updatedAt": "2026-03-10"}], "metadata": {"categories": {"destino": ["infraestrutura", "banco-de-dados", "api-externa", "deploy", "ssh", "autenticacao", "storage", "git", "bot"], "tipo-dado": ["key", "token", "senha", "url", "chave-publica", "api-key", "jwt-secret", "uri", "secret", "password", "bot-token", "credentials", "username"]}}}; async function loadData() { // Usar dados inline ao invés de carregar do arquivo (para funcionar offline/file://) @@ -1567,6 +1638,40 @@ `; } + let loginInfoHtml = ''; + if (cred.loginUsername || cred.loginPassword) { + const isLoginHidden = hiddenValues.has(cred.id + '_login'); + const displayUser = isLoginHidden ? '••••••••' : (cred.loginUsername || '-'); + const displayPass = isLoginHidden ? '••••••••' : (cred.loginPassword || '-'); + + loginInfoHtml = ` +
+ ${cred.loginUsername ? ` + + ` : ''} + ${cred.loginPassword ? ` + + ` : ''} +
+ `; + } + return `
@@ -1621,6 +1726,7 @@ ${cred.notes}
` : ''} + ${loginInfoHtml}
`; @@ -1672,13 +1778,24 @@ renderCards(); } - async function copyToClipboard(id) { + async function copyToClipboard(id, field = null) { const cred = data.credentials.find(c => c.id === id); if (!cred) return; try { - await navigator.clipboard.writeText(cred.value); - showToast(`Copiado: ${cred.name}`, 'success'); + let textToCopy = cred.value; + let label = cred.name; + + if (field === 'loginUsername') { + textToCopy = cred.loginUsername; + label = `${cred.name} - Usuário`; + } else if (field === 'loginPassword') { + textToCopy = cred.loginPassword; + label = `${cred.name} - Senha`; + } + + await navigator.clipboard.writeText(textToCopy); + showToast(`Copiado: ${label}`, 'success'); } catch (error) { showToast('Erro ao copiar', 'error'); } @@ -1710,6 +1827,8 @@ document.getElementById('value').value = cred.value; document.getElementById('url').value = cred.url || ''; document.getElementById('associatedService').value = cred.associatedService || ''; + document.getElementById('loginUsername').value = cred.loginUsername || ''; + document.getElementById('loginPassword').value = cred.loginPassword || ''; document.getElementById('notes').value = cred.notes || ''; document.getElementById('tags').value = cred.tags?.join(', ') || ''; @@ -1740,6 +1859,8 @@ const editId = document.getElementById('editId').value; const isPaid = document.getElementById('isPaid').checked; + const loginUsername = document.getElementById('loginUsername').value || null; + const loginPassword = document.getElementById('loginPassword').value || null; const credData = { name: document.getElementById('name').value, @@ -1749,6 +1870,8 @@ value: document.getElementById('value').value, url: document.getElementById('url').value || null, associatedService: document.getElementById('associatedService').value || null, + loginUsername: loginUsername, + loginPassword: loginPassword, notes: document.getElementById('notes').value || null, tags: document.getElementById('tags').value ? document.getElementById('tags').value.split(',').map(t => t.trim()).filter(t => t) : [], diff --git a/keys.json b/keys.json index 6c94972..3c37d4d 100644 --- a/keys.json +++ b/keys.json @@ -299,6 +299,8 @@ "dataType": "url", "value": "https://logto-admin-bzlued1boxl3t8ewsyn99an9.187.77.227.172.sslip.io", "url": "https://logto-admin-bzlued1boxl3t8ewsyn99an9.187.77.227.172.sslip.io", + "loginUsername": "logto-admin", + "loginPassword": "@@Gi05Br;;;", "notes": "Endpoint administrativo do Logto (SSLip.io temporário)", "tags": ["logto", "auth", "admin", "oauth"], "isPaid": false,