[ First commit ]

This commit is contained in:
Mateus Cezário Barreto 2025-11-05 17:08:13 -03:00
commit 851303e97b
6 changed files with 167 additions and 0 deletions

5
Gemfile Normal file
View file

@ -0,0 +1,5 @@
source "https://rubygems.org"
gem 'sinatra'
gem 'sinatra-flash'
gem 'puma'

19
building.md Normal file
View file

@ -0,0 +1,19 @@
# Contruindo uma instância do TonTonWeb
Clone o repositório da aplicação princiapal (esse repositório).
Edite o arquivo de configuração Rack [config.ru]. O arquivo exemplo mapeia apenas a rota '/' para a aplicação principal. Adicione aplicações do projeto TonTon e mapeie elas para novas rotas.
Instale as dependências e inicie o servidor.
bundle install
bundle exec puma
É necessário que o shell tenha a variável de ambiente SESSION_SECRET definida.
UwU
## Módulos Ruby TonTon
Clone o repositório do módulo dentro da aplicação principal e o inclua no arquivo [config.ru].

12
config.ru Normal file
View file

@ -0,0 +1,12 @@
require_relative 'tonton_web'
# Require TonTon modules if you want
use Rack::Session::Cookie, key: 'rack.session', secret: ENV.fetch('SESSION_SECRET')
app = Rack::URLMap.new(
'/' => TonTonWeb.new
# Add TonTon modules here
)
run app

81
readme.md Normal file
View file

@ -0,0 +1,81 @@
# TonTon
TonTon é uma antologia de softwares abertos modulares relacionados com tecnologia na educação e aprendizado colaborativo.
Esse repositório contém a aplicação web principal e a wiki Gollum extendida. <(^_^)>
O Ruby on Rails foi substituido pelo Sinatra. (⌐■_■)
As aplicações terão APIs para facilitar interfaces alternativas. Monte o seu TonTon. ( ͡° ᴥ ͡°)
[Building](building.md)
## TonTonWeb
Aplicação web principal, em Ruby, com um mecanismo de controle de usuários.
O gerenciamento é feito via linha de comando (utilitário tauth) e interface web.
O serviços são expostos via:
- API Ruby via Rack (para ser usada pela interface interna).
- API web (para ser usada por interfaces que não são escritas em Ruby).
O TonTonWeb tem uma versão [experimental](https://github.com/seruna-1/tonton) em Ruby on Rails, agora arquivada. (◡_◡)
Status: sem mecanismo de autenticação.
## TonTon-Gollum (wiki)
Uma extensão simples da wiki Gollum para suportar autenticação de usuário.
Status: testável.
Funcionalidades esperadas:
- Subdiretórios dos usuários editáveis apenas pelo próprio usuário.
## Tolls
Tonton Polls.
Aplicação Sinatra para gerenciamento de enquetes.
Status: não iniciado.
## Tofinn
Toffin é um modelo genérico de árvore de arquivos tokenizáveis e com um modelo integrado opcional de versionamento de arquivos.
Status: concepção. Duas implementações esperadas, uma em C (Coffin) e outra em Ruby (Torfinn). Há uma versão [experimental](https://github.com/seruna-1/toffin), em Ruby, abandonada.
## Totoki
Totoki é o plano de wiki futura para o TonTon usando a API do Toffin.
Totoki é inspirada pelo Gollum. Assim como o Gollum lida com frontend e tem a própria API separada (gollum-lib), o Totoki será a aplicação Sinatra com API wiki separada (totoki-lib).
Status: não iniciado.
## Tamire
TonTon Abstract Mathematical Introspective Representation (Tamire).
Tamire é uma biblioteca de para abstração de linguagem matemática em estruturas de objetos.
Teria duas implementações, uma em Ruby e outra em Javascript, cada uma com:
- Leitura de Asciimath para entrada.
- Renderização em SVG para saída.
- Representação em Json para entrada e saída.
Status: não iniciado.
## Tamires
Tamire Speaker (Tamires) é um módulo Javascript e uma aplicação Ruby para análise por pessoas cegas de estrutura matemática gerada pela Tamire.
Status: não iniciado.

25
tonton_web.rb Normal file
View file

@ -0,0 +1,25 @@
require 'gollum/app'
require 'sinatra/flash'
require "sqlite3"
class TonTonWeb < Sinatra::Base
set :host_authorization, { permitted_hosts: ['localhost', 'mytonton.com.br'] }
set :sessions, true
get '/' do
redirect "/home"
end
get '/home' do
markdown File.read('readme.md'), layout_engine: :erb, layout: true
end
get '/building.md' do
markdown File.read('building.md'), layout_engine: :erb, layout: true
end
get '/**.md' do
markdown request.path_info.to_sym
end
end

25
views/layout.erb Normal file
View file

@ -0,0 +1,25 @@
<html>
<head>
<title>TonTon</title>
</head>
<body>
<header>
<nav>
<a href="/home">Home</a>
<a href="/wiki">Wiki</a>
<a href="/git">Git</a>
</nav>
<header>
<%= yield %>
</body>
<script>
const title = document.querySelector('title');
title.textContent = document.querySelector('h1').textContent;
</script>
</html>