Historias
Historias

A criança escreve, a Professora Alice continua a história.

The child writes, Professora Alice carries the story on.

Uma app para crianças de 6 a 12 anos praticarem português europeu escrito, a inventar histórias com uma professora virtual que elogia, sugere e faz perguntas. Corre num computador em casa: nada sai para a Internet.

An app for 6-to-12-year-olds to practise written European Portuguese by inventing stories with a virtual teacher who praises, suggests and asks questions. It runs on a computer in your own home: nothing leaves the house.

Historias· O gato que falava
✏️ Inês
Pedrito estava a passiar a uma hora quando ouviu um som engrassado.
✏️ Escreve-se assim
Pedrito estava a passiar a uma hora quando ouviu um som engrassado.
➡️ Pedrito estava a passear uma hora quando ouviu um som engraçado.
👩‍🏫 Professora Alice
Muito bem, Inês! O som engraçado era como um sino a tocar. Pedrito correu para ver o que fazia o barulho e encontrou uma raposa com um chapéu. Que tipo de chapéu era aquele?
Enviar à Professora ✨
Como funcionaHow it works

Três coisas acontecem em cada frase

Three things happen on every sentence

A criança dá um título, escreve uma frase e carrega no botão. O resto demora uns segundos.

The child picks a title, writes a sentence and presses the button. The rest takes a few seconds.

1

A app corrige, com jeito

The app corrects, gently

Um dicionário de português europeu e um modelo de linguagem apanham a ortografia, os acentos e as confusões típicas (há/a, mas/mais). A criança vê o que mudou num cartão, palavra a palavra, sem ninguém a ralhar.

A European Portuguese dictionary and a language model catch spelling, accents and the classic mix-ups (há/a, mas/mais). The child sees what changed on a card, word by word, and nobody scolds.

2

A Professora continua

The Professora carries on

A Professora Alice diz uma coisa boa e concreta sobre a frase, acrescenta uma ou duas frases suas e termina com uma pergunta. Nunca corrige: só conta a história.

Professora Alice says something good and specific about the sentence, adds a line or two of her own and ends with a question. She never corrects: she only tells the story.

3

Os pais ficam a par

Parents stay in the loop

Cada frase passa por um "monitor" que procura sinais de tristeza, zanga ou medo na própria criança. Se aparecer algo, os pais recebem um email e vêem a frase completa na sua página.

Every sentence goes through a "monitor" looking for signs of sadness, anger or fear in the child themself. If something shows up, parents get an email and see the full sentence on their page.

Segurança e privacidadeSafety and privacy

Feito por um pai, para os filhos e os amigos deles

Built by a parent, for his kids and their friends

Tudo fica em casa

Everything stays at home

Os modelos de linguagem correm num computador em casa, não na nuvem. As histórias das crianças não são enviadas a nenhuma empresa nem usadas para treinar nada.

The language models run on a computer at home, not in the cloud. The children's stories are never sent to any company or used to train anything.

Uma professora com regras

A teacher with rules

A Professora escreve em português de Portugal, com frases curtas, e tem instruções claras: nada de temas assustadores, nada de sugerir coisas fora da conversa. Se a história ficar violenta, propõe uma reviravolta divertida.

The Professora writes in Portugal Portuguese, in short sentences, with clear instructions: no scary themes, nothing outside the conversation. If a story turns violent, she proposes a funny twist.

Sinais de alerta, não vigilância

Warning signs, not surveillance

O monitor só reage quando a criança parece falar de si própria. Dragões, monstros e batalhas de histórias passam. Na dúvida, avisa: quem decide são os pais, a ler o contexto.

The monitor only reacts when the child seems to talk about themself. Dragons, monsters and story battles pass. When in doubt it flags: parents decide, reading the context.

Contas pequenas e simples

Small, simple accounts

Cada criança entra com um nome de utilizador e uma palavra-passe que os pais escolhem. Os pais entram com o email e um código. Ninguém vê as histórias de outra família.

Each child signs in with a username and a password the parents choose. Parents sign in with their email and a code. No family sees another family's stories.

FamíliasFamilies

Como participar

How to join

Não é um serviço: cada instalação é de uma família, que convida as outras. Não custa nada.

This is not a service: each installation belongs to one family, which invites the others. It's free.

Passo 1 · o conviteStep 1 · the invitation

Quem instalou convida-te

Whoever installed it invites you

O administrador regista o teu email. Recebes um código de 6 dígitos sempre que entras na página dos pais.

The administrator registers your email. You get a 6-digit code every time you open the parents' page.

Passo 2 · as criançasStep 2 · the children

Cria as contas dos teus filhos

Create your kids' accounts

Um nome, um utilizador e uma palavra-passe fácil de lembrar. Irmãos partilham as histórias e podem escrever juntos.

A name, a username and an easy password. Siblings share stories and can write together.

Passo 3 · a escreverStep 3 · writing

Abre a app num tablet ou computador

Open the app on a tablet or laptop

A criança entra uma vez e fica ligada. Escolhe um título, escreve a primeira frase e a Professora responde. Tu vês tudo na tua página.

The child signs in once and stays signed in. Picks a title, writes the first line, and the Professora replies. You see everything on your page.

Por dentroUnder the hood

Quatro etapas por frase, tudo em software livre

Four stages per sentence, all open source

Cada frase da criança percorre esta cadeia num computador vulgar com uma placa gráfica de 6 GB. Os dois modelos revezam-se na memória; a resposta chega em 3 a 8 segundos.

Every sentence runs through this chain on an ordinary computer with a 6 GB GPU. The two models take turns in memory; a reply arrives in 3 to 8 seconds.

1 · dicionáriodictionaryhunspell pt-PT Determinístico. Apanha palavras inexistentes, valida diminutivos, corrige sozinho os casos claros por semelhança fonética. Deterministic. Catches non-words, validates diminutives, fixes the clear cases itself by phonetic similarity.
2 · correctorcorrectorQwen3 8B · T=0 Acentos, pontuação, homófonas e os empates que o dicionário deixa, com dicas. Uma rede de segurança revê o resultado. Accents, punctuation, homophones and the ties the dictionary leaves, with hints. A safety net re-checks the result.
3 · monitorQwen3 8B · lista + modelowordlist + model Responde "ALERTA: SIM | motivo" ou "NÃO". Qualquer das duas camadas assinala a frase para os pais. Answers "ALERTA: SIM | reason" or "NÃO". Either layer flags the sentence for the parents.
4 · professoraAMALIA 9B · T=0.4 Modelo português europeu, afinado para PT-PT. Recebe o histórico com as versões corrigidas e responde em streaming. A European Portuguese model, tuned for PT-PT. Gets the history with corrected versions and streams the reply.

O que corre onde

What runs where

Máquina
Machine
Um PC ou portátil com Linux, uma placa NVIDIA com 6 GB ou mais (ex.: RTX 3060) e 16–32 GB de RAM. Fica ligado em casa, na rede local.
A Linux PC or laptop with an NVIDIA card of 6 GB or more (e.g. RTX 3060) and 16–32 GB of RAM. It stays on at home, on the local network.
Modelos
Models
Ollama · qwen3:8b · AMALIA-9B-0626-DPO (layerx-labs, GGUF Q4_K_M)
App
FastAPI + SQLite num contentor Docker; uma página HTML para as crianças, outra para os pais. Instala-se com docker compose up -d.
FastAPI + SQLite in a Docker container; one HTML page for the kids, one for the parents. Installs with docker compose up -d.
Email
Códigos de entrada e alertas via Resend; notificações opcionais por ntfy.
Sign-in codes and alerts via Resend; optional push via ntfy.
Licenças
Licences
Tudo de código aberto (MIT, Apache 2, BSD, LGPL). O projecto em si não tem fins comerciais.
All open source (MIT, Apache 2, BSD, LGPL). The project itself is non-commercial.

Cada papel é um ficheiro YAML

Each role is one YAML file

Modelo, temperatura, tokens e o prompt de sistema vivem em models/. Mudar a Professora é editar um ficheiro e reiniciar.

Model, temperature, tokens and the system prompt live in models/. Changing the Professora means editing one file and restarting.

# models/professora.yaml name: Professora Alice model: hf.co/layerx-labs/AMALIA-9B-0626-DPO-GGUF:Q4_K_M options: temperature: 0.4 num_predict: 300 num_ctx: 8192 system: | És a Professora Alice, uma professora de Português muito paciente, alegre e carinhosa…