cerrado @ 519af559f94aab1bd1446cc01144cbf2640fcc6a

feat: Add wip banner
diff --git a/scss/main.scss b/scss/main.scss
index 26155a62c9dbd8ae233adcfac7a91cb519de1015..5500a383ec0e462a371173601b8a19e63e0820a0 100644
--- a/scss/main.scss
+++ b/scss/main.scss
@@ -21,6 +21,10 @@ @import "bootstrap/scss/_navbar.scss";
 @import "bootstrap/scss/_grid.scss";
 @import "tree.scss";
 
+// TODO remove once is not needed
+$alert-border-radius: 0;
+@import "bootstrap/scss/_alert.scss";
+
 // overwrite to reduce the ammount of css generated by loading all utilities
 $utilities: (
   "order": (
@@ -46,6 +50,16 @@       end: right,
       none: none,
     )
   ),
+  "text-align": (
+    responsive: true,
+    property: text-align,
+    class: text,
+    values: (
+      start: left,
+      end: right,
+      center: center,
+  )
+),
 );
 
 @import "bootstrap/scss/utilities/_api.scss";
diff --git a/templates/base.qtpl b/templates/base.qtpl
index ae9f7a6c50f072bfc14a2edf7c1af335f19e0a1b..9e2e6ac85aa996f80b31e8c4fc3170fe357dbcd0 100644
--- a/templates/base.qtpl
+++ b/templates/base.qtpl
@@ -39,25 +39,23 @@ Page prints a page implementing Page interface.
 {% func PageTemplate(p Page) %}
 <!DOCTYPE html>
 <html lang="en">
-    <head>
-        <meta charset="utf-8">
-        <link rel="icon" href="data:,">
-        <title>{%= p.Title() %}</title> 
-        <link rel="stylesheet" href="/static/main{%s Slug%}.css">
-        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
-        <meta name="viewport" content="width=device-width, initial-scale=1" />
-    </head>
-    <body>
-        {%= p.Navbar() %}
-        <div class="container">
-            {%= p.Content() %}
-        </div>
-    </body>
-    {%= p.Script() %}
+  <head>
+    <meta charset="utf-8">
+    <link rel="icon" href="data:,">
+    <title>{%= p.Title() %}</title> 
+    <link rel="stylesheet" href="/static/main{%s Slug%}.css">
+    <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+  </head>
+  <body>
+    <div class="alert alert-warning text-center" role="alert">
+        This project is under development, things may be broken or incomplete.
+    </div>
+    {%= p.Navbar() %}
+    <div class="container">
+      {%= p.Content() %}
+    </div>
+  </body>
+  {%= p.Script() %}
 </html>
 {% endfunc %}
-
-{% code type BasePage struct {} %}
-{% func (p *BasePage) Title() %}Empty{% endfunc %}
-{% func (p *BasePage) Body() %}HelloWorld{% endfunc %}
-{% func (p *BasePage) Script() %}{% endfunc %}
diff --git a/templates/base.qtpl.go b/templates/base.qtpl.go
index bc40252cea03af8df732d1a1b29d11716260bca4..b2356feb0c1d6dd3aa6cd1105c63a81005a9093f 100644
--- a/templates/base.qtpl.go
+++ b/templates/base.qtpl.go
@@ -84,99 +84,66 @@ //line base.qtpl:39
 	qw422016.N().S(`
 <!DOCTYPE html>
 <html lang="en">
-    <head>
-        <meta charset="utf-8">
-        <link rel="icon" href="data:,">
-        <title>`)
+  <head>
+    <meta charset="utf-8">
+    <link rel="icon" href="data:,">
+    <title>`)
 //line base.qtpl:45
 	p.StreamTitle(qw422016)
 //line base.qtpl:45
 	qw422016.N().S(`</title> 
-        <link rel="stylesheet" href="/static/main`)
+    <link rel="stylesheet" href="/static/main`)
 //line base.qtpl:46
 	qw422016.E().S(Slug)
 //line base.qtpl:46
 	qw422016.N().S(`.css">
-        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
-        <meta name="viewport" content="width=device-width, initial-scale=1" />
-    </head>
-    <body>
-        `)
-//line base.qtpl:51
+    <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+  </head>
+  <body>
+    <div class="alert alert-warning text-center" role="alert">
+        This project is under development, things may be broken or incomplete.
+    </div>
+    `)
+//line base.qtpl:54
 	p.StreamNavbar(qw422016)
-//line base.qtpl:51
+//line base.qtpl:54
 	qw422016.N().S(`
-        <div class="container">
-            `)
-//line base.qtpl:53
+    <div class="container">
+      `)
+//line base.qtpl:56
 	p.StreamContent(qw422016)
-//line base.qtpl:53
+//line base.qtpl:56
 	qw422016.N().S(`
-        </div>
-    </body>
-    `)
-//line base.qtpl:56
+    </div>
+  </body>
+  `)
+//line base.qtpl:59
 	p.StreamScript(qw422016)
-//line base.qtpl:56
+//line base.qtpl:59
 	qw422016.N().S(`
 </html>
 `)
-//line base.qtpl:58
-}
-
-//line base.qtpl:58
-func WritePageTemplate(qq422016 qtio422016.Writer, p Page) {
-//line base.qtpl:58
-	qw422016 := qt422016.AcquireWriter(qq422016)
-//line base.qtpl:58
-	StreamPageTemplate(qw422016, p)
-//line base.qtpl:58
-	qt422016.ReleaseWriter(qw422016)
-//line base.qtpl:58
-}
-
-//line base.qtpl:58
-func PageTemplate(p Page) string {
-//line base.qtpl:58
-	qb422016 := qt422016.AcquireByteBuffer()
-//line base.qtpl:58
-	WritePageTemplate(qb422016, p)
-//line base.qtpl:58
-	qs422016 := string(qb422016.B)
-//line base.qtpl:58
-	qt422016.ReleaseByteBuffer(qb422016)
-//line base.qtpl:58
-	return qs422016
-//line base.qtpl:58
-}
-
-//line base.qtpl:60
-type BasePage struct{}
-
-//line base.qtpl:61
-func (p *BasePage) StreamTitle(qw422016 *qt422016.Writer) {
-//line base.qtpl:61
-	qw422016.N().S(`Empty`)
 //line base.qtpl:61
 }
 
 //line base.qtpl:61
-func (p *BasePage) WriteTitle(qq422016 qtio422016.Writer) {
+func WritePageTemplate(qq422016 qtio422016.Writer, p Page) {
 //line base.qtpl:61
 	qw422016 := qt422016.AcquireWriter(qq422016)
 //line base.qtpl:61
-	p.StreamTitle(qw422016)
+	StreamPageTemplate(qw422016, p)
 //line base.qtpl:61
 	qt422016.ReleaseWriter(qw422016)
 //line base.qtpl:61
 }
 
 //line base.qtpl:61
-func (p *BasePage) Title() string {
+func PageTemplate(p Page) string {
 //line base.qtpl:61
 	qb422016 := qt422016.AcquireByteBuffer()
 //line base.qtpl:61
-	p.WriteTitle(qb422016)
+	WritePageTemplate(qb422016, p)
 //line base.qtpl:61
 	qs422016 := string(qb422016.B)
 //line base.qtpl:61
@@ -185,67 +152,3 @@ //line base.qtpl:61
 	return qs422016
 //line base.qtpl:61
 }
-
-//line base.qtpl:62
-func (p *BasePage) StreamBody(qw422016 *qt422016.Writer) {
-//line base.qtpl:62
-	qw422016.N().S(`HelloWorld`)
-//line base.qtpl:62
-}
-
-//line base.qtpl:62
-func (p *BasePage) WriteBody(qq422016 qtio422016.Writer) {
-//line base.qtpl:62
-	qw422016 := qt422016.AcquireWriter(qq422016)
-//line base.qtpl:62
-	p.StreamBody(qw422016)
-//line base.qtpl:62
-	qt422016.ReleaseWriter(qw422016)
-//line base.qtpl:62
-}
-
-//line base.qtpl:62
-func (p *BasePage) Body() string {
-//line base.qtpl:62
-	qb422016 := qt422016.AcquireByteBuffer()
-//line base.qtpl:62
-	p.WriteBody(qb422016)
-//line base.qtpl:62
-	qs422016 := string(qb422016.B)
-//line base.qtpl:62
-	qt422016.ReleaseByteBuffer(qb422016)
-//line base.qtpl:62
-	return qs422016
-//line base.qtpl:62
-}
-
-//line base.qtpl:63
-func (p *BasePage) StreamScript(qw422016 *qt422016.Writer) {
-//line base.qtpl:63
-}
-
-//line base.qtpl:63
-func (p *BasePage) WriteScript(qq422016 qtio422016.Writer) {
-//line base.qtpl:63
-	qw422016 := qt422016.AcquireWriter(qq422016)
-//line base.qtpl:63
-	p.StreamScript(qw422016)
-//line base.qtpl:63
-	qt422016.ReleaseWriter(qw422016)
-//line base.qtpl:63
-}
-
-//line base.qtpl:63
-func (p *BasePage) Script() string {
-//line base.qtpl:63
-	qb422016 := qt422016.AcquireByteBuffer()
-//line base.qtpl:63
-	p.WriteScript(qb422016)
-//line base.qtpl:63
-	qs422016 := string(qb422016.B)
-//line base.qtpl:63
-	qt422016.ReleaseByteBuffer(qb422016)
-//line base.qtpl:63
-	return qs422016
-//line base.qtpl:63
-}