commit 851303e97b0a84de1c1602ba85a0694d28e33f03 Author: Mateus Cezário Barreto Date: Wed Nov 5 17:08:13 2025 -0300 [ First commit ] diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..059924a --- /dev/null +++ b/Gemfile @@ -0,0 +1,5 @@ +source "https://rubygems.org" + +gem 'sinatra' +gem 'sinatra-flash' +gem 'puma' \ No newline at end of file diff --git a/building.md b/building.md new file mode 100644 index 0000000..acb4bf3 --- /dev/null +++ b/building.md @@ -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]. \ No newline at end of file diff --git a/config.ru b/config.ru new file mode 100644 index 0000000..71f8b90 --- /dev/null +++ b/config.ru @@ -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 \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..55d8f38 --- /dev/null +++ b/readme.md @@ -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. \ No newline at end of file diff --git a/tonton_web.rb b/tonton_web.rb new file mode 100644 index 0000000..cc5ebcb --- /dev/null +++ b/tonton_web.rb @@ -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 \ No newline at end of file diff --git a/views/layout.erb b/views/layout.erb new file mode 100644 index 0000000..1100f6a --- /dev/null +++ b/views/layout.erb @@ -0,0 +1,25 @@ + + + TonTon + + + +
+ +
+ + <%= yield %> + + + + \ No newline at end of file