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