Visitar URL original
GitHub - lucasgdb/report-card-system: Online school report system for students and teachers. It has an admin panel for teachers to release student grades and students can upload their photos to easy recognition. It has dark mode, PWA (offline access, installable as an app) and much more. · GitHub
Skip to content

About

Online school report system for students and teachers. It has an admin panel for teachers to release student grades and students can upload their photos to easy recognition. It has dark mode, PWA (offline access, installable as an app) and much more.

Topics

Resources

Stars

14 stars

Watchers

1 watching

Forks

Repository files navigation

Boletim Usefaz

Requisitos

  • Docker (com Compose v2)
  • Node >= 26 (o pnpm baixa a versão definida em devEngines automaticamente)
  • pnpm (corepack enable instala a versão definida em package.json)

Estrutura

Monorepo com pnpm workspaces. As versões compartilhadas ficam no catalog do pnpm-workspace.yaml.

Pacote Descrição
apps/server API GraphQL (Hono + GraphQL Yoga + Pothos + Kysely/PostgreSQL)
apps/boletim Sistema de Boletim (React + Relay + Vite)
apps/admin Sistema do Administrador (React + Relay + Vite)
packages/ui Componentes React compartilhados (Tailwind + shadcn com Base UI)
packages/relay Environment do Relay
packages/shared Utilitários compartilhados entre front-end e servidor
packages/vite-config Configuração do Vite usada pelos apps

Iniciando

Desenvolvimento (com Docker)

  • pnpm install: Instala as dependências do projeto
  • Copie o arquivo .env.example do apps/server para .env
  • pnpm dev: Inicia os containers do projeto
    • Se a porta 3000 estiver ocupada, use SERVER_PORT=3010 pnpm dev: a API sobe na 3010 e os apps passam a chamá-la lá
  • pnpm db:reset: Recria o banco do zero e alimenta com dados de teste (só em desenvolvimento)
  • Abra o Sistema de Boletim em http://localhost:8080
    • RM 12345
    • Senha usefaz123
  • Abra o Sistema do Administrador em http://localhost:8081
    • E-mail lucasgdbittencourt@gmail.com
    • Senha usefaz123
  • pnpm stop: Desliga o projeto.

E-mails (links de redefinição de senha) saem pelo SMTP do Gmail. Para testar sem enviar nada, use MAIL_DRIVER=log no .env do servidor: o e-mail, com o link, aparece no log (docker logs server).

Scripts

  • pnpm lint / pnpm lint:fix: Lint e formatação com Biome
  • pnpm typecheck: Gera os artefatos do Relay e checa os tipos de todos os pacotes
  • pnpm build: Gera o build de produção de todos os apps

No servidor (pnpm --filter @usefaz/server <script>, ou docker compose exec server pnpm <script>):

  • migrate / rollback: Aplica as migrations pendentes / desfaz a última
  • db:types: Gera os tipos do Kysely (src/database/types.ts) a partir do banco, depois de uma migration
  • db:reset: Recria o banco com os dados de teste (só em desenvolvimento)

Servidor

  • Sessão: cookie httpOnly com um token opaco (só o hash fica no banco), um por app (X-Usefaz-App). Senhas com argon2id.
  • GraphQL: só aceita persisted queries em produção. O relay-compiler de cada app grava as operações em apps/server/persisted-operations/; rode pnpm relay depois de mudar uma query ou mutation.
  • Erros: falhas que o usuário pode corrigir voltam como dado (error { field userMessage }); veja packages/ui/README.md.
  • Uploads: avatares no public/ do servidor (STORAGE_DRIVER=local) ou num bucket S3 (STORAGE_DRIVER=s3 e as variáveis S3_*).

Telas do Sistema de Boletim

Login

Login do boletim: o aluno entra com o número de matrícula e a senha

Página inicial

Página inicial do boletim: perfil do aluno e boletim escolar

Outras telas

Boletim com notas, faltas e médias
Boletim com notas, faltas e médias
Foto de perfil
Foto de perfil
Erro do servidor no formulário
Erro do servidor no formulário
Recuperação de senha
Recuperação de senha
Modo offline (PWA) com a última cópia salva
Modo offline (PWA) com a última cópia salva
Tema de Natal
Tema de Natal

Datas comemorativas (Natal, Halloween, Páscoa, Festa Junina, entre outras) decoram o boletim e a foto do aluno. Para ver um tema fora da época, use ?tema=natal (ou ?tema=off para desligar).

Celular

Login
Login
Perfil
Perfil
Boletim
Boletim
Tema de Natal
Tema de Natal

Autor


@lucasgdb

About

Online school report system for students and teachers. It has an admin panel for teachers to release student grades and students can upload their photos to easy recognition. It has dark mode, PWA (offline access, installable as an app) and much more.

Topics

Resources

Stars

14 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages