Skip to content

Repository files navigation

TypeScript Event Scheduler

Open interactive example / Abrir exemplo interativo

Agendador de Eventos em TypeScript

Validation English · Português · Examples / Exemplos · Validation / Validação

TypeScript and interfaces / TypeScript e interfaces · Working prototype / Protótipo funcional · Gabriel Demetrios Lafis

English

A typed scheduling library with a complete bilingual browser interface, UTC day filtering and portable JSON import and export.

What works

  • Create, update, delete and sort events; duplicate identifiers are rejected.
  • Defensive Date copies protect stored events from mutation by callers.
  • JSON import validates the entire schedule before replacing it; browser storage keeps the local agenda.

Reproducible walkthrough

Requirements: Node.js 24+ and pnpm 11 / Node.js 24+ e pnpm 11.

Run from the repository root. The validation environment installs the components exercised by the tests and documented example; optional integrations may need their separate dependencies.

pnpm install --frozen-lockfile
pnpm test
pnpm build

Input contract / Contrato de entrada: {id, name, date: Date, description?}; JSON dates require an explicit timezone / datas JSON exigem fuso explícito.

Expected behavior / Comportamento esperado: The example adds one design-review event at 2026-10-01T14:00:00Z and verifies it belongs to that UTC day. / O exemplo adiciona uma revisão de projeto em 2026-10-01T14:00:00Z e verifica o dia UTC correspondente.

Architecture / Arquitetura

flowchart LR
    A["Browser form / Formulário"]
    B["Typed schedule / Agenda tipada"]
    C["Validated UTC events / Eventos UTC validados"]
    D["Local storage and JSON / Armazenamento local e JSON"]
    A --> B --> C --> D
Loading

The main path can be followed in src/EventScheduler.ts. Examples call the actual implementation and include assertions; they are not pseudocode.

Scope and assumptions

Dates in the browser form are UTC, not local time. No calendar synchronization, reminders, collaboration server or recurring-event engine is included. Browser storage can be cleared; export backups when needed.

Changes verified in this review

Restored the missing scheduling implementation and browser module; repaired the build; added immutable reads, UTC boundary tests and atomic JSON import.

Português

Biblioteca tipada de agendamento com interface bilíngue completa, filtros por dia UTC e importação e exportação JSON.

Funcionalidades disponíveis

  • Crie, altere, exclua e ordene eventos; identificadores duplicados são rejeitados.
  • Cópias defensivas de Date protegem eventos contra alterações feitas por quem usa a biblioteca.
  • A importação JSON valida toda a agenda antes de substituí-la; o armazenamento do navegador preserva a agenda local.

Execução reproduzível

Use os comandos da seção acima a partir da raiz do repositório. Requisitos: Node.js 24+ and pnpm 11 / Node.js 24+ e pnpm 11. O ambiente de validação instala os componentes exercitados pelos testes e pelo exemplo documentado; integrações opcionais podem exigir dependências próprias.

O fluxo principal está em src/EventScheduler.ts. Os exemplos usam a implementação real e verificam resultados com asserções; não são pseudocódigo. O diagrama apresenta os mesmos passos nos dois idiomas.

Escopo e premissas

Datas do formulário são UTC, não hora local. Não há sincronização de calendário, lembretes, servidor colaborativo ou eventos recorrentes. O armazenamento do navegador pode ser apagado; exporte cópias quando necessário.

Melhorias verificadas nesta revisão

Restaurados implementação de agendamento e módulo do navegador; corrigida compilação; adicionados leitura protegida, testes de limites UTC e importação JSON atômica.

Run the application / Executar a aplicação

python -m http.server 8080 --directory docs
node examples/demo.mjs

Open / Abra: http://localhost:8080.

Repository guide / Guia do repositório

Location / Local Purpose / Finalidade
Implementation / Implementação Main domain behavior / Comportamento principal do domínio
Example / Exemplo Executable scenario / Cenário executável
Tests / Testes Normal behavior and failure cases / Fluxos válidos e casos de falha
Validation notes / Notas de validação Corrections, evidence and boundaries / Correções, evidências e limites
Workflow / Automação Automated checks / Verificações automatizadas

Development / Desenvolvimento

EN: When changing behavior, update the contract, the worked example and a regression test together. Keep synthetic fixtures separate from real data. A passing test suite demonstrates the listed software behaviors; it does not certify a deployment or domain outcome.

PT: Ao alterar comportamento, atualize em conjunto o contrato, o exemplo e um teste de regressão. Separe amostras fictícias de dados reais. Testes aprovados demonstram os comportamentos de software listados; não certificam implantação nem resultado no domínio.

Author / Autor: Gabriel Demetrios Lafis · Institutional contact / Contato institucional

License / Licença: repository license.

Additional contract checks · Verificações adicionais de contrato

JSON import rejects impossible calendar dates, invalid time components and unknown fields before replacing existing events. Leap years, fractional seconds and explicit UTC offsets are checked; accepted dates use four-digit UTC years (0000–9999).

A importação JSON rejeita datas impossíveis, componentes de horário inválidos e campos desconhecidos antes de substituir eventos. Anos bissextos, frações de segundo e fusos explícitos são verificados; datas aceitas usam anos UTC de quatro dígitos (0000–9999).

About

Bilingual UTC scheduler with JSON exchange and local storage / Agendador UTC bilíngue com intercâmbio JSON e armazenamento local.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages