1diff --git a/scss/main.scss b/scss/main.scss
2index 26218e875bfea6718f40e7173d5d7b7528a4db9c..ac8d2c41f227563bf083b39514f4449ab440413b 100644
3--- a/scss/main.scss
4+++ b/scss/main.scss
5@@ -1,8 +1,9 @@
6-//$card-border-width: 0;
7-$card-border-radius: 0;
8-$card-cap-padding-y: 0;
9-$card-cap-padding-x: 5px;
10-$card-group-margin: 10 px;
11+// disable gutter
12+$grid-gutter-width: 0;
13+
14+$base-font-size: 1rem;
15+$font_family_monospace: monospace;
16+$headings-margin-bottom: 0;
17
18 // basic functionality
19 @import "bootstrap/scss/_functions.scss";
20@@ -17,7 +18,6 @@ @import "bootstrap/scss/_root.scss";
21 @import "bootstrap/scss/_containers.scss";
22 @import "bootstrap/scss/_nav.scss";
23 @import "bootstrap/scss/_navbar.scss";
24-@import "bootstrap/scss/_card.scss";
25 @import "bootstrap/scss/_grid.scss";
26
27
28@@ -29,3 +29,30 @@
29 .card-body {
30 padding: 5px;
31 }
32+
33+.navbar-nav {
34+ margin-top: 0px
35+}
36+
37+.event-list {
38+ margin-bottom: 1rem;
39+}
40+
41+.event:first-child {
42+ margin-top: 0;
43+}
44+
45+.event {
46+ text-overflow: ellipsis;
47+ overflow: hidden;
48+ padding: 0.5rem;
49+ margin: 0.5rem 0;
50+ background: #f8f9fa;
51+}
52+
53+.event > h4 {
54+ margin: 0;
55+}
56+.event > p {
57+ margin: 0.5rem 0;
58+}
59diff --git a/templates/base.qtpl b/templates/base.qtpl
60index df6c6fc96023c9c6e0254ff2457e91d4a20ac08c..6654f42a73f2ba9287aa5f6614891d2b6a75f9a9 100644
61--- a/templates/base.qtpl
62+++ b/templates/base.qtpl
63@@ -31,15 +31,12 @@ <link rel="stylesheet" href="/static/main.css">
64 <meta name="viewport" content="width=device-width, initial-scale=1" />
65 </head>
66 <body>
67- <nav class="navbar navbar-expand bg-body-tertiary">
68- <div class="container-fluid">
69- <div class="collapse navbar-collapse">
70- <div class="navbar-nav">
71- <a class="nav-link" href="/git">git</a>
72- <a class="nav-link" href="/list">list</a>
73- </div>
74- </div>
75- </div>
76+ <nav class="container navbar navbar-expand-sm">
77+ <ul class="navbar-nav">
78+ <li class="nav-link" href="/git">git</li>
79+ <li class="nav-link" href="/list">list</li>
80+ <li class="nav-link" href="/about">about</li>
81+ </ul>
82 </nav>
83 <div class="container">
84 {%= p.Content() %}
85diff --git a/templates/base.qtpl.go b/templates/base.qtpl.go
86index f78744dd11eaa501772cc9945807fc405f570cf2..2573b99ef3b0fed08c2e52be745d2fe128a6ef07 100644
87--- a/templates/base.qtpl.go
88+++ b/templates/base.qtpl.go
89@@ -73,156 +73,153 @@ <link rel="stylesheet" href="/static/main.css">
90 <meta name="viewport" content="width=device-width, initial-scale=1" />
91 </head>
92 <body>
93- <nav class="navbar navbar-expand bg-body-tertiary">
94- <div class="container-fluid">
95- <div class="collapse navbar-collapse">
96- <div class="navbar-nav">
97- <a class="nav-link" href="/git">git</a>
98- <a class="nav-link" href="/list">list</a>
99- </div>
100- </div>
101- </div>
102+ <nav class="container navbar navbar-expand-sm">
103+ <ul class="navbar-nav">
104+ <li class="nav-link" href="/git">git</li>
105+ <li class="nav-link" href="/list">list</li>
106+ <li class="nav-link" href="/about">about</li>
107+ </ul>
108 </nav>
109 <div class="container">
110 `)
111-//line base.qtpl:45
112+//line base.qtpl:42
113 p.StreamContent(qw422016)
114-//line base.qtpl:45
115+//line base.qtpl:42
116 qw422016.N().S(`
117 </div>
118 </body>
119 `)
120-//line base.qtpl:48
121+//line base.qtpl:45
122 p.StreamScript(qw422016)
123-//line base.qtpl:48
124+//line base.qtpl:45
125 qw422016.N().S(`
126 </html>
127 `)
128-//line base.qtpl:50
129+//line base.qtpl:47
130 }
131
132-//line base.qtpl:50
133+//line base.qtpl:47
134 func WritePageTemplate(qq422016 qtio422016.Writer, p Page) {
135-//line base.qtpl:50
136+//line base.qtpl:47
137 qw422016 := qt422016.AcquireWriter(qq422016)
138-//line base.qtpl:50
139+//line base.qtpl:47
140 StreamPageTemplate(qw422016, p)
141-//line base.qtpl:50
142+//line base.qtpl:47
143 qt422016.ReleaseWriter(qw422016)
144-//line base.qtpl:50
145+//line base.qtpl:47
146 }
147
148-//line base.qtpl:50
149+//line base.qtpl:47
150 func PageTemplate(p Page) string {
151-//line base.qtpl:50
152+//line base.qtpl:47
153 qb422016 := qt422016.AcquireByteBuffer()
154-//line base.qtpl:50
155+//line base.qtpl:47
156 WritePageTemplate(qb422016, p)
157-//line base.qtpl:50
158+//line base.qtpl:47
159 qs422016 := string(qb422016.B)
160-//line base.qtpl:50
161+//line base.qtpl:47
162 qt422016.ReleaseByteBuffer(qb422016)
163-//line base.qtpl:50
164+//line base.qtpl:47
165 return qs422016
166-//line base.qtpl:50
167+//line base.qtpl:47
168 }
169
170-//line base.qtpl:52
171+//line base.qtpl:49
172 type BasePage struct{}
173
174-//line base.qtpl:53
175+//line base.qtpl:50
176 func (p *BasePage) StreamTitle(qw422016 *qt422016.Writer) {
177-//line base.qtpl:53
178+//line base.qtpl:50
179 qw422016.N().S(`Empty`)
180-//line base.qtpl:53
181+//line base.qtpl:50
182 }
183
184-//line base.qtpl:53
185+//line base.qtpl:50
186 func (p *BasePage) WriteTitle(qq422016 qtio422016.Writer) {
187-//line base.qtpl:53
188+//line base.qtpl:50
189 qw422016 := qt422016.AcquireWriter(qq422016)
190-//line base.qtpl:53
191+//line base.qtpl:50
192 p.StreamTitle(qw422016)
193-//line base.qtpl:53
194+//line base.qtpl:50
195 qt422016.ReleaseWriter(qw422016)
196-//line base.qtpl:53
197+//line base.qtpl:50
198 }
199
200-//line base.qtpl:53
201+//line base.qtpl:50
202 func (p *BasePage) Title() string {
203-//line base.qtpl:53
204+//line base.qtpl:50
205 qb422016 := qt422016.AcquireByteBuffer()
206-//line base.qtpl:53
207+//line base.qtpl:50
208 p.WriteTitle(qb422016)
209-//line base.qtpl:53
210+//line base.qtpl:50
211 qs422016 := string(qb422016.B)
212-//line base.qtpl:53
213+//line base.qtpl:50
214 qt422016.ReleaseByteBuffer(qb422016)
215-//line base.qtpl:53
216+//line base.qtpl:50
217 return qs422016
218-//line base.qtpl:53
219+//line base.qtpl:50
220 }
221
222-//line base.qtpl:54
223+//line base.qtpl:51
224 func (p *BasePage) StreamBody(qw422016 *qt422016.Writer) {
225-//line base.qtpl:54
226+//line base.qtpl:51
227 qw422016.N().S(`HelloWorld`)
228-//line base.qtpl:54
229+//line base.qtpl:51
230 }
231
232-//line base.qtpl:54
233+//line base.qtpl:51
234 func (p *BasePage) WriteBody(qq422016 qtio422016.Writer) {
235-//line base.qtpl:54
236+//line base.qtpl:51
237 qw422016 := qt422016.AcquireWriter(qq422016)
238-//line base.qtpl:54
239+//line base.qtpl:51
240 p.StreamBody(qw422016)
241-//line base.qtpl:54
242+//line base.qtpl:51
243 qt422016.ReleaseWriter(qw422016)
244-//line base.qtpl:54
245+//line base.qtpl:51
246 }
247
248-//line base.qtpl:54
249+//line base.qtpl:51
250 func (p *BasePage) Body() string {
251-//line base.qtpl:54
252+//line base.qtpl:51
253 qb422016 := qt422016.AcquireByteBuffer()
254-//line base.qtpl:54
255+//line base.qtpl:51
256 p.WriteBody(qb422016)
257-//line base.qtpl:54
258+//line base.qtpl:51
259 qs422016 := string(qb422016.B)
260-//line base.qtpl:54
261+//line base.qtpl:51
262 qt422016.ReleaseByteBuffer(qb422016)
263-//line base.qtpl:54
264+//line base.qtpl:51
265 return qs422016
266-//line base.qtpl:54
267+//line base.qtpl:51
268 }
269
270-//line base.qtpl:55
271+//line base.qtpl:52
272 func (p *BasePage) StreamScript(qw422016 *qt422016.Writer) {
273-//line base.qtpl:55
274+//line base.qtpl:52
275 }
276
277-//line base.qtpl:55
278+//line base.qtpl:52
279 func (p *BasePage) WriteScript(qq422016 qtio422016.Writer) {
280-//line base.qtpl:55
281+//line base.qtpl:52
282 qw422016 := qt422016.AcquireWriter(qq422016)
283-//line base.qtpl:55
284+//line base.qtpl:52
285 p.StreamScript(qw422016)
286-//line base.qtpl:55
287+//line base.qtpl:52
288 qt422016.ReleaseWriter(qw422016)
289-//line base.qtpl:55
290+//line base.qtpl:52
291 }
292
293-//line base.qtpl:55
294+//line base.qtpl:52
295 func (p *BasePage) Script() string {
296-//line base.qtpl:55
297+//line base.qtpl:52
298 qb422016 := qt422016.AcquireByteBuffer()
299-//line base.qtpl:55
300+//line base.qtpl:52
301 p.WriteScript(qb422016)
302-//line base.qtpl:55
303+//line base.qtpl:52
304 qs422016 := string(qb422016.B)
305-//line base.qtpl:55
306+//line base.qtpl:52
307 qt422016.ReleaseByteBuffer(qb422016)
308-//line base.qtpl:55
309+//line base.qtpl:52
310 return qs422016
311-//line base.qtpl:55
312+//line base.qtpl:52
313 }
314diff --git a/templates/gitlist.qtpl b/templates/gitlist.qtpl
315index 84a42f944fbfbd91ab43d14fc93c03a35a3092aa..fef912632b84fac88e3a587d3f28eed195d58d50 100644
316--- a/templates/gitlist.qtpl
317+++ b/templates/gitlist.qtpl
318@@ -1,6 +1,4 @@
319 {% import "git.gabrielgio.me/cerrado/pkg/service" %}
320-{% import "git.gabrielgio.me/cerrado/pkg/u" %}
321-
322
323 {% code
324 type GitListPage struct {
325@@ -11,27 +9,23 @@
326 {% func (p *GitListPage) Title() %}Git | List{% endfunc %}
327
328 {% func (p *GitListPage) Content() %}
329-{% for _, c := range u.ChunkBy(p.Respositories, 3) %}
330 <div class="row">
331- {% for _, r := range c %}
332- <div class="col-md g-1">
333- <div class="card">
334- <div class="card-header">
335- <a href="/{%s r.Name %}" class="btn btn-primary">{%s r.Title %}</a>
336- </div>
337- <div class="card-body">
338- <p class="card-text lead">{%s r.LastCommitMessage %}</p>
339- <p class="card-text"><small>{%s r.LastCommitDate %}</small></p>
340- <a href="#" class="card-link">summary</a>
341- <a href="#" class="card-link">log</a>
342- <a href="#" class="card-link">tree</a>
343+ <div class="col-md-8 offset-md-2">
344+ <div class="event-list">
345+ {% for _, r := range p.Respositories %}
346+ <div class="event">
347+ <h4>
348+ <a href="/{%s r.Name %}">{%s r.Name %}</a>
349+ </h4>
350+ </hr>
351+ <p>{%s r.LastCommitMessage %}</p>
352+ <p><small>{%s r.LastCommitDate %}</small></p>
353 </div>
354+ {% endfor %}
355 </div>
356+ {% endfunc %}
357 </div>
358- {% endfor %}
359 </div>
360-{% endfor %}
361-{% endfunc %}
362
363 {% func (p *GitListPage) Script() %}
364 {% endfunc %}
365diff --git a/templates/gitlist.qtpl.go b/templates/gitlist.qtpl.go
366index d16b8d5e143d4bd3c1c7f32faec093186c9ee319..89d1d71c2a63543102dcec825cc68031fdc436fa 100644
367--- a/templates/gitlist.qtpl.go
368+++ b/templates/gitlist.qtpl.go
369@@ -7,176 +7,163 @@
370 //line gitlist.qtpl:1
371 import "git.gabrielgio.me/cerrado/pkg/service"
372
373-//line gitlist.qtpl:2
374-import "git.gabrielgio.me/cerrado/pkg/u"
375-
376-//line gitlist.qtpl:5
377+//line gitlist.qtpl:3
378 import (
379 qtio422016 "io"
380
381 qt422016 "github.com/valyala/quicktemplate"
382 )
383
384-//line gitlist.qtpl:5
385+//line gitlist.qtpl:3
386 var (
387 _ = qtio422016.Copy
388 _ = qt422016.AcquireByteBuffer
389 )
390
391-//line gitlist.qtpl:6
392+//line gitlist.qtpl:4
393 type GitListPage struct {
394 Respositories []*service.Repository
395 }
396
397-//line gitlist.qtpl:11
398+//line gitlist.qtpl:9
399 func (p *GitListPage) StreamTitle(qw422016 *qt422016.Writer) {
400-//line gitlist.qtpl:11
401+//line gitlist.qtpl:9
402 qw422016.N().S(`Git | List`)
403-//line gitlist.qtpl:11
404+//line gitlist.qtpl:9
405 }
406
407-//line gitlist.qtpl:11
408+//line gitlist.qtpl:9
409 func (p *GitListPage) WriteTitle(qq422016 qtio422016.Writer) {
410-//line gitlist.qtpl:11
411+//line gitlist.qtpl:9
412 qw422016 := qt422016.AcquireWriter(qq422016)
413-//line gitlist.qtpl:11
414+//line gitlist.qtpl:9
415 p.StreamTitle(qw422016)
416-//line gitlist.qtpl:11
417+//line gitlist.qtpl:9
418 qt422016.ReleaseWriter(qw422016)
419-//line gitlist.qtpl:11
420+//line gitlist.qtpl:9
421 }
422
423-//line gitlist.qtpl:11
424+//line gitlist.qtpl:9
425 func (p *GitListPage) Title() string {
426-//line gitlist.qtpl:11
427+//line gitlist.qtpl:9
428 qb422016 := qt422016.AcquireByteBuffer()
429-//line gitlist.qtpl:11
430+//line gitlist.qtpl:9
431 p.WriteTitle(qb422016)
432-//line gitlist.qtpl:11
433+//line gitlist.qtpl:9
434 qs422016 := string(qb422016.B)
435-//line gitlist.qtpl:11
436+//line gitlist.qtpl:9
437 qt422016.ReleaseByteBuffer(qb422016)
438-//line gitlist.qtpl:11
439+//line gitlist.qtpl:9
440 return qs422016
441-//line gitlist.qtpl:11
442+//line gitlist.qtpl:9
443 }
444
445-//line gitlist.qtpl:13
446+//line gitlist.qtpl:11
447 func (p *GitListPage) StreamContent(qw422016 *qt422016.Writer) {
448-//line gitlist.qtpl:13
449+//line gitlist.qtpl:11
450 qw422016.N().S(`
451-`)
452-//line gitlist.qtpl:14
453- for _, c := range u.ChunkBy(p.Respositories, 3) {
454-//line gitlist.qtpl:14
455- qw422016.N().S(`
456 <div class="row">
457- `)
458-//line gitlist.qtpl:16
459- for _, r := range c {
460-//line gitlist.qtpl:16
461- qw422016.N().S(`
462- <div class="col-md g-1">
463- <div class="card">
464- <div class="card-header">
465- <a href="/`)
466-//line gitlist.qtpl:20
467- qw422016.E().S(r.Name)
468-//line gitlist.qtpl:20
469- qw422016.N().S(`" class="btn btn-primary">`)
470-//line gitlist.qtpl:20
471- qw422016.E().S(r.Title)
472-//line gitlist.qtpl:20
473- qw422016.N().S(`</a>
474+ <div class="col-md-8 offset-md-2">
475+ <div class="event-list">
476+ `)
477+//line gitlist.qtpl:15
478+ for _, r := range p.Respositories {
479+//line gitlist.qtpl:15
480+ qw422016.N().S(`
481+ <div class="event">
482+ <h4>
483+ <a href="/`)
484+//line gitlist.qtpl:18
485+ qw422016.E().S(r.Name)
486+//line gitlist.qtpl:18
487+ qw422016.N().S(`">`)
488+//line gitlist.qtpl:18
489+ qw422016.E().S(r.Name)
490+//line gitlist.qtpl:18
491+ qw422016.N().S(`</a>
492+ </h4>
493+ </hr>
494+ <p>`)
495+//line gitlist.qtpl:21
496+ qw422016.E().S(r.LastCommitMessage)
497+//line gitlist.qtpl:21
498+ qw422016.N().S(`</p>
499+ <p><small>`)
500+//line gitlist.qtpl:22
501+ qw422016.E().S(r.LastCommitDate)
502+//line gitlist.qtpl:22
503+ qw422016.N().S(`</small></p>
504 </div>
505- <div class="card-body">
506- <p class="card-text lead">`)
507-//line gitlist.qtpl:23
508- qw422016.E().S(r.LastCommitMessage)
509-//line gitlist.qtpl:23
510- qw422016.N().S(`</p>
511- <p class="card-text"><small>`)
512+ `)
513 //line gitlist.qtpl:24
514- qw422016.E().S(r.LastCommitDate)
515+ }
516 //line gitlist.qtpl:24
517- qw422016.N().S(`</small></p>
518- <a href="#" class="card-link">summary</a>
519- <a href="#" class="card-link">log</a>
520- <a href="#" class="card-link">tree</a>
521- </div>
522+ qw422016.N().S(`
523 </div>
524- </div>
525 `)
526-//line gitlist.qtpl:31
527- }
528-//line gitlist.qtpl:31
529- qw422016.N().S(`
530-</div>
531-`)
532-//line gitlist.qtpl:33
533- }
534-//line gitlist.qtpl:33
535- qw422016.N().S(`
536-`)
537-//line gitlist.qtpl:34
538+//line gitlist.qtpl:26
539 }
540
541-//line gitlist.qtpl:34
542+//line gitlist.qtpl:26
543 func (p *GitListPage) WriteContent(qq422016 qtio422016.Writer) {
544-//line gitlist.qtpl:34
545+//line gitlist.qtpl:26
546 qw422016 := qt422016.AcquireWriter(qq422016)
547-//line gitlist.qtpl:34
548+//line gitlist.qtpl:26
549 p.StreamContent(qw422016)
550-//line gitlist.qtpl:34
551+//line gitlist.qtpl:26
552 qt422016.ReleaseWriter(qw422016)
553-//line gitlist.qtpl:34
554+//line gitlist.qtpl:26
555 }
556
557-//line gitlist.qtpl:34
558+//line gitlist.qtpl:26
559 func (p *GitListPage) Content() string {
560-//line gitlist.qtpl:34
561+//line gitlist.qtpl:26
562 qb422016 := qt422016.AcquireByteBuffer()
563-//line gitlist.qtpl:34
564+//line gitlist.qtpl:26
565 p.WriteContent(qb422016)
566-//line gitlist.qtpl:34
567+//line gitlist.qtpl:26
568 qs422016 := string(qb422016.B)
569-//line gitlist.qtpl:34
570+//line gitlist.qtpl:26
571 qt422016.ReleaseByteBuffer(qb422016)
572-//line gitlist.qtpl:34
573+//line gitlist.qtpl:26
574 return qs422016
575-//line gitlist.qtpl:34
576+//line gitlist.qtpl:26
577 }
578
579-//line gitlist.qtpl:36
580+// </div>
581+// </div>
582+//
583+
584+//line gitlist.qtpl:30
585 func (p *GitListPage) StreamScript(qw422016 *qt422016.Writer) {
586-//line gitlist.qtpl:36
587+//line gitlist.qtpl:30
588 qw422016.N().S(`
589 `)
590-//line gitlist.qtpl:37
591+//line gitlist.qtpl:31
592 }
593
594-//line gitlist.qtpl:37
595+//line gitlist.qtpl:31
596 func (p *GitListPage) WriteScript(qq422016 qtio422016.Writer) {
597-//line gitlist.qtpl:37
598+//line gitlist.qtpl:31
599 qw422016 := qt422016.AcquireWriter(qq422016)
600-//line gitlist.qtpl:37
601+//line gitlist.qtpl:31
602 p.StreamScript(qw422016)
603-//line gitlist.qtpl:37
604+//line gitlist.qtpl:31
605 qt422016.ReleaseWriter(qw422016)
606-//line gitlist.qtpl:37
607+//line gitlist.qtpl:31
608 }
609
610-//line gitlist.qtpl:37
611+//line gitlist.qtpl:31
612 func (p *GitListPage) Script() string {
613-//line gitlist.qtpl:37
614+//line gitlist.qtpl:31
615 qb422016 := qt422016.AcquireByteBuffer()
616-//line gitlist.qtpl:37
617+//line gitlist.qtpl:31
618 p.WriteScript(qb422016)
619-//line gitlist.qtpl:37
620+//line gitlist.qtpl:31
621 qs422016 := string(qb422016.B)
622-//line gitlist.qtpl:37
623+//line gitlist.qtpl:31
624 qt422016.ReleaseByteBuffer(qb422016)
625-//line gitlist.qtpl:37
626+//line gitlist.qtpl:31
627 return qs422016
628-//line gitlist.qtpl:37
629+//line gitlist.qtpl:31
630 }