Dashboard
Dashboard
Visão geral · Itacaré Beach Tennis
47
Clipes salvos
↑ +8 esta semana
23
Jogadores únicos
↑ +3 esta semana
134
Downloads
↑ +22 esta semana
89
Stories gerados
↑ +15 esta semana
12GB
Armazenamento
Cloudflare R2
Clipes salvos por dia (últimos 7 dias)
Gerenciar Lances
Edite, exclua e monitore todos os clipes
Câmeras
Gerencie as câmeras Hikvision DS-2CD2043G2-I (4mm)
Jogadores
Jogadores cadastrados no sistema
Marca d'água
Configure o rodapé nos vídeos da Itacaré Beach Tennis
Prévia ao vivo
Como aparece no rodapé do vídeo
Itacaré Beach Tennis
|
10/03/2026 · 15:32
IBT
Configurar Stories
Escolha o formato padrão para geração automática de Stories (9:16)
🎯 Opção 1 — Recorte central
Corta a faixa central do vídeo 16:9 e estica para 9:16. Mais simples, perde as laterais. Ideal para lances no centro da quadra.
crop=ih*9/16:ih, scale=1080:1920
✨ Opção 2 — Fundo desfocado
Vídeo original centralizado com fundo desfocado preenchendo o 9:16. Mais elegante e sem perder conteúdo. Recomendado.
boxblur bg + overlay centered
🏷️ Opção 3 — Faixa de branding
Vídeo no topo + faixa Itacaré Beach Tennis embaixo com nome do jogador, tipo de lance e data. Mais profissional para redes sociais.
vstack: video + brand bar
Banco de Dados & Pastas
Estrutura técnica do sistema · Para desenvolvedores
📁 Estrutura de pastas (Cloudflare R2)
videos/
clips/
horizontal/
2026/03/10/
clip_001_joao_silva.mp4
clip_002_maria_costa.mp4
stories/
corte_central/
clip_001_joao_silva_stories.mp4
fundo_desfocado/
clip_001_joao_silva_blur.mp4
branding/
clip_001_joao_silva_brand.mp4
thumbnails/
clip_001_thumb.jpg
assets/
logos/
logo_principal.png
logo_watermark.png
watermark/
overlay_template.png
🗄️ SQL — Tabela: cameras
CREATE TABLE cameras (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
model VARCHAR(100),
ip VARCHAR(45) NOT NULL,
port INTEGER DEFAULT 554,
username VARCHAR(50) DEFAULT 'admin',
password VARCHAR(255) NOT NULL,
channel INTEGER DEFAULT 1,
lens_mm DECIMAL(4,1) DEFAULT 4.0,
status VARCHAR(20) DEFAULT 'online',
sd_usage INTEGER DEFAULT 0,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
🗄️ SQL — Tabela: clips
CREATE TABLE clips (
id SERIAL PRIMARY KEY,
player_name VARCHAR(150) NOT NULL,
court_id INTEGER REFERENCES cameras(id),
play_type VARCHAR(50),
clip_timestamp TIMESTAMP NOT NULL,
duration_sec INTEGER DEFAULT 60,
url_horizontal TEXT,
url_stories_crop TEXT,
url_stories_blur TEXT,
url_stories_brand TEXT,
url_thumbnail TEXT,
views INTEGER DEFAULT 0,
downloads INTEGER DEFAULT 0,
shares_wa INTEGER DEFAULT 0,
shares_ig INTEGER DEFAULT 0,
status VARCHAR(20) DEFAULT 'processing',
origin VARCHAR(20) DEFAULT 'site',
deleted_at TIMESTAMP DEFAULT NULL,
created_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX idx_clips_player ON clips (player_name);
CREATE INDEX idx_clips_time ON clips (clip_timestamp DESC);
CREATE INDEX idx_clips_court ON clips (court_id);
CREATE INDEX idx_clips_type ON clips (play_type);
CREATE INDEX idx_clips_search ON clips USING GIN (to_tsvector('portuguese', player_name));
🗄️ SQL — Tabelas auxiliares
CREATE TABLE players (
id SERIAL PRIMARY KEY,
name VARCHAR(150) NOT NULL UNIQUE,
total_clips INTEGER DEFAULT 0,
created_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE settings (
key VARCHAR(100) PRIMARY KEY,
value TEXT,
updated_at TIMESTAMP DEFAULT NOW()
);
INSERT INTO settings VALUES
('court_name', 'Itacaré Beach Tennis', NOW()),
('court_name_short', 'IBT', NOW()),
('clip_duration', '60', NOW()),
('clip_before_sec', '30', NOW()),
('stories_default', 'blur', NOW()),
('watermark_enabled','true', NOW()),
('gallery_public', 'true', NOW());
CREATE TABLE admins (
id SERIAL PRIMARY KEY,
username VARCHAR(100) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);
📡 Endpoints da API (backend FastAPI)
POST /api/clips
GET /api/clips
GET /api/clips/:id
DELETE /api/clips/:id
POST /api/clips/:id/view
POST /api/clips/:id/share
GET /api/cameras
POST /api/cameras
PUT /api/cameras/:id
DELETE /api/cameras/:id
GET /api/cameras/:id/test
GET /api/search?q=joao&court=1&type=smash&from=2026-03-01&to=2026-03-10
POST /api/auth/login
GET /api/admin/stats
GET /api/settings
PUT /api/settings
Configurações
Configurações gerais do sistema
Clipes
Parâmetros de geração
Gerar Stories automático
Cria versão 9:16 ao salvar
Qualidade 4MP original
Maior tamanho, mais nítido
Acesso Admin
Segurança
Galeria pública
Visitantes veem sem login
Notificações
Alertas automáticos
Câmera offline
Avisa se câmera cair
SD Card > 85%
Alerta de armazenamento