csv-viewer-online

📊 Student Performance Analyzer

Aplicação web para análise de desempenho de alunos em turmas AWS re/Start, construída em JavaScript vanilla com ES Modules, sem build step. Hospedável diretamente no GitHub Pages.

Lê arquivos CSV exportados do Canvas LMS, identifica alunos pendentes, gera mensagens personalizadas de acompanhamento e exporta resultados em CSV/Outlook.


✨ Funcionalidades


🏗️ Arquitetura

Refatorada em camadas com responsabilidades claras, seguindo princípios de separação de concerns. Sem build step usa ES Modules nativos do navegador.

src/
├── main.js              # Entry point registry de actions e event delegation
├── state.js             # Estado global centralizado
├── config.js            # Configurações persistidas (localStorage)
│
├── utils/               # Utilitários puros, sem dependências de domínio
│   ├── dom.js           # $, $$, byId, setHidden, delegate
│   ├── string.js        # normalize, normalizarSectionKey
│   └── format.js        # fixEncoding, formatBytes, getSaudacao, formatarEncerramento
│
├── core/                # Lógica de domínio pura (testável, sem DOM)
│   ├── activity.js      # isKC, isLab, formatarNomeAtividade
│   ├── student.js       # isContaTesteAutomatica, isAlunoIgnorado
│   ├── csv.js           # validateCSV, processCSV
│   ├── status.js        # getStatus + labels/ícones/cores
│   └── message.js       # gerarMensagem (3 variantes)
│
├── services/            # Side-effects (clipboard, storage, exports)
│   ├── clipboard.js     # Cópia + abertura do Outlook
│   ├── history.js       # Histórico de uploads
│   ├── ignored.js       # Gerenciamento da lista de ignorados
│   ├── encerramentos.js # Avisos de encerramento por turma
│   └── exporter.js      # Exportação CSV / mensagens
│
└── ui/                  # Camada de apresentação (lê/escreve no DOM)
    ├── toast.js         # Notificações
    ├── theme.js         # Tema claro/escuro
    ├── modal.js         # Sistema de modais
    ├── progress.js      # Barra de progresso
    ├── dropzone.js      # Drag & drop
    ├── preview.js       # Pré-visualização do CSV
    ├── table.js         # Renderização e ordenação da tabela
    ├── charts.js        # Gráficos Chart.js
    ├── settings.js      # Modal de configurações
    ├── envio.js         # Modal de envio em massa
    ├── area-copia.js    # Área de cópia rápida
    └── shortcuts.js     # Atalhos de teclado

styles/
├── main.css             # Entry @imports na ordem de cascata
├── base/
│   ├── variables.css    # Custom properties (light + dark)
│   └── reset.css        # Reset/normalize
├── layout/
│   ├── header.css
│   └── footer.css
└── components/          # Um arquivo por bloco visual
    ├── upload.css, table.css, modal.css, ...
    └── responsive.css   # Media queries

Decisões de design


📦 Dependências externas (CDN)

Ambas carregadas via CDN no index.html.


📝 Formato esperado do CSV

Exportação padrão do Canvas LMS contendo (no mínimo) as colunas:

A aplicação detecta automaticamente:


👨‍💻 Desenvolvedores


Anderson Albuquerque

Brian Richard

📄 Licença

© 2025–2026 — Todos os direitos reservados.