Bygga
Type the product name from the box. Bygga shows every assembly step in 3D, with the parts, screws and tools for each one, and reads it out loud.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗🇧🇷 Português | 🇺🇸 English
Checklist de equipamentos de trilha, salva na nuvem e sempre à mão — sem mais lista de papel se perdendo entre a mochila de ataque e a cargueira.
App web gratuito para os membros do grupo de trekking Legendários organizarem o que levar nas duas mochilas da trilha (ataque e cargueira) e o que ainda falta comprar, com progresso salvo por usuário na nuvem.
Este é o app real usado pelo grupo em produção — o login é feito com conta Google de verdade e os dados ficam no banco real dos Legendários. Não há um modo demo separado; as capturas de tela abaixo mostram a interface funcionando com uma conta real (a minha).
Antes disso, a lista de equipamentos circulava como texto solto ou planilha — cada Legendário mantinha sua própria versão, sem padronização entre o que vai na mochila de ataque (a que fica com você o tempo todo na trilha) e o que vai na cargueira (entregue no check-in, acessada só em pontos pré-determinados). Fácil esquecer item, fácil perder o controle do que já foi separado ou comprado.
Login com Google
↓
Perfil criado no Supabase (nome, nº de Legendário, pista, 1º TOP)
↓
Checklist padrão semeada automaticamente (3 packs, seções, itens e subitens)
↓
Progresso marcado item a item, salvo automaticamente na nuvem
O resultado: cada Legendário abre o app, vê exatamente o que falta separar em cada mochila, e pode ajustar a lista (adicionar, editar, remover itens) sem afetar a lista de mais ninguém.
Além de editar item a item, cada Legendário pode montar a própria checklist do zero e guardá-la como preset — um molde sem marcações que dá pra restaurar quando quiser, ou compartilhar com outro Legendário por um código de 10 caracteres / link.
Quatro tabelas em public, mesmo prefixo lgndcheck_, RLS ligado, sem nenhum privilégio para anon:
| Tabela | O que guarda |
|---|---|
lgndcheck_presets | Snapshot do preset (JSON, sem marcações) + share_code opcional |
lgndcheck_entitlements | Limite de presets por usuário (sem linha = 1) |
lgndcheck_list_backups | Backup automático (com marcações) antes de um restaurar — um por usuário, o mais recente |
lgndcheck_share_rate_limit | Contador de tentativas de uso de código de compartilhamento (10/min) |
Toda escrita nessas tabelas passa pelas RPCs abaixo — não existe policy de insert/update direta pro usuário.
SECURITY DEFINER, só authenticated)| RPC | O que faz |
|---|---|
lgndcheck_salvar_preset_da_lista_atual(nome, id_para_substituir?) | Monta o snapshot a partir da lista atual do próprio usuário (nunca aceita JSON do cliente) e cria ou substitui o preset |
lgndcheck_aplicar_preset(id) | Restaura um preset próprio |
lgndcheck_resetar_para_base(snapshot_base) | Restaura a lista básica padrão |
lgndcheck_desfazer_ultima_substituicao() | Restaura o backup mais recente e o apaga |
lgndcheck_compartilhar_preset(id, ativar) | Gera ou revoga o share_code |
lgndcheck_ver_preset_compartilhado(codigo) | Prévia de um preset compartilhado (nome, dono, contagem por pack, títulos) — nunca o e-mail do dono |
lgndcheck_aplicar_preset_compartilhado(codigo) | Restaura direto um preset de outro usuário |
lgndcheck_salvar_preset_compartilhado(codigo, id_para_substituir?) | Importa uma cópia própria de um preset compartilhado |
Migrations: supabase/migrations/20261016000000_user_presets.sql e supabase/migrations/20261017000000_lgndcheck_presets_restore_e_desfazer.sql.
O plano com mais de 1 preset ainda não tem fluxo de compra na UI, mas o backend já suporta — basta uma linha na tabela de entitlements:
insert into public.lgndcheck_entitlements (user_id, max_presets)
values ('<uuid-do-usuario>', 3)
on conflict (user_id) do update set max_presets = excluded.max_presets;
| Camada | Tecnologia |
|---|---|
| Frontend | HTML, CSS e JavaScript puros — sem framework, sem build |
| Backend / dados | Supabase (Postgres) |
| Autenticação | Supabase Auth com login via Google OAuth |
| Tipografia | Google Fonts (Bitter + Work Sans) |
O app inteiro vive em um único index.html. A escolha foi deliberada: é um projeto pequeno, de escopo bem definido, para um grupo específico — não precisa de bundler, pipeline de build ou dependências além do cliente JS do Supabase via CDN. Isso significa que qualquer navegador abre o arquivo direto, sem etapa de deploy, e a manutenção fica trivial: uma pessoa só, sem stack de frontend, consegue editar o arquivo e publicar.
A segurança dos dados não depende de esconder a anon key do Supabase (ela é feita para ficar no cliente) — depende das políticas de Row Level Security configuradas no banco, que restringem cada usuário a ler e escrever apenas os próprios dados.
Toda a lógica está em index.html:
lgndcheck_profiles, lgndcheck_checklist_items, lgndcheck_pack_meta, mais as 4 tabelas de presets (ver seção acima) — prefixo lgndcheck_ porque o projeto Supabase é compartilhado com outras aplicaçõesTEMPLATE) usado para semear a checklist de um usuário novo no primeiro login, e convertido (templateToSnapshot) pro formato de snapshot usado em "Restaurar lista básica"boot, afterLogin, seedDefaultItems)renderPack, buildSections)loadPresetState, renderPresetSection, openRestoreConfirm, fluxo de compartilhar/importar)Não há build — é servir o arquivo estático:
git clone https://github.com/andrescultori/lgnd-checklist.git
cd lgnd-checklist
python3 -m http.server 8000
# abra http://localhost:8000
Para rodar com dados próprios (em vez do banco real dos Legendários), crie um projeto no Supabase, replique as tabelas lgndcheck_profiles, lgndcheck_checklist_items e lgndcheck_pack_meta, e troque SUPABASE_URL e SUPABASE_ANON_KEY no topo do <script> em index.html.
Este repositório é disponibilizado publicamente para fins de portfólio profissional. Trata-se do sistema real em produção para o grupo Legendários — veja a seção de licença para os termos de uso do código.
Desenvolvido por André Scultori · © 2026 · GitHub