djo

Linguagem de programação

Uma linguagem pequena para coisas simples da internet.

Sites, CMS e sistemas pequenos, num único binário sem dependências. Roda onde o Go compila: servidores, Raspberry Pi e outros dispositivos IoT.

Instalar Ler a documentação

post.djo
struct Post{
    id[Int] nocall
    titulo[String]
    publicado[Bool] = false

    f link
        return "/post?id=" + (str:self.id)
}

var p = Post:"Olá"
p.id = 7
print p.link:          // /post?id=7

Tudo o que um site pequeno precisa, já dentro

Um binário só

Sem instalar nada além do djo. A versão completa tem uns 11 MB; a nano, sem rede, só 3 MB.

Web de fábrica

Servidor, templates, rotas por arquivo ou em rotas.djo, sessões, proteção CSRF, senhas com PBKDF2 e upload.

Banco embutido

Db é um SQLite dentro da linguagem. O banco é um arquivo, sem servidor para cuidar.

Structs e interfaces

Campos tipados, composição, herança com sonof e interfaces satisfeitas por quem tem os métodos, como no Go.

Feita para IoT

Porta serial, Time.sleep e builds para ARM, MIPS e RISC-V. Leia um sensor e envie com Http.post.

Pronta para agentes

Cada rota tem uma face de tela e outra de agente na mesma URL. action publica funções tipadas, e o servidor gera um manifesto com JSON Schema.

Sintaxe que cabe na cabeça

Uma chamada é nome:arg1:arg2. Blocos usam indentação ou chaves, e os dois valem em todo lugar. Pouca pontuação, poucas palavras reservadas.

Uma página pode devolver JSON em poucas linhas, sem framework.

Ver mais exemplos

api.djo
// api.djo: uma página que responde JSON
if
    cond[Http.method: == "POST"]
    var d = Http.json:
    Http.json:{"recebido": d["n"] + 1}:201
else
    Http.json:{"erro": "use POST"}:405
terminal
# instalar (sem precisar de Go)
DJO_BASE_URL=<pasta do release> DJO_VERSION=v0.1.0 sh install.sh

# servir um site
djo serve -dev meusite

# empacotar num executável
djo build meusite

Do código ao servidor em três comandos

djo serve usa o mapeamento de URL para arquivo do PHP. djo build junta o seu site e o interpretador num executável que você copia para qualquer lugar.

Guia de instalação