add db.go for database connection
This commit is contained in:
parent
c2913318de
commit
e0dca3bbd8
10 changed files with 413 additions and 0 deletions
8
views/footer.templ.go
Normal file
8
views/footer.templ.go
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
package views
|
||||
|
||||
import "github.com/chasefleming/elem-go"
|
||||
|
||||
func RenderFooter() elem.Node {
|
||||
footerContent := elem.Footer(nil)
|
||||
return footerContent
|
||||
}
|
||||
21
views/head.templ.go
Normal file
21
views/head.templ.go
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
package views
|
||||
|
||||
import (
|
||||
"github.com/chasefleming/elem-go"
|
||||
"github.com/chasefleming/elem-go/attrs"
|
||||
)
|
||||
|
||||
func RenderHead() elem.Node {
|
||||
headContent := elem.Head(nil,
|
||||
elem.Meta(attrs.Props{attrs.Charset: "UTF-8", attrs.Name: "viewport", attrs.Content: "width=device-width, initial-scale=1.0"}),
|
||||
elem.Meta(attrs.Props{attrs.HTTPequiv: "X-UA-Compatible", attrs.Content: "IE=edge"}),
|
||||
elem.Script(attrs.Props{attrs.Src: "https://unpkg.com/htmx.org"}),
|
||||
elem.Title(nil, elem.Text("The Math Wizard")),
|
||||
elem.Link(attrs.Props{attrs.Href: "https://cdn.jsdelivr.net/npm/nes.css@2.3.0/css/nes.min.css", attrs.Rel: "stylesheet"}),
|
||||
elem.Link(attrs.Props{attrs.Rel: "stylesheet", attrs.Href: "https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css"}),
|
||||
elem.Link(attrs.Props{attrs.Rel: "stylesheet", attrs.Href: "/static/styles/style.css"}),
|
||||
elem.Script(attrs.Props{attrs.Src: "https://unpkg.com/scrollreveal@4.0.0/dist/scrollreveal.min.js"}),
|
||||
elem.Style(nil, elem.Text("@import url('https://fonts.googleapis.com/css2?family=Press+Start+2P');")),
|
||||
)
|
||||
return headContent
|
||||
}
|
||||
24
views/index.templ.go
Normal file
24
views/index.templ.go
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
package views
|
||||
|
||||
import (
|
||||
"github.com/chasefleming/elem-go"
|
||||
"github.com/chasefleming/elem-go/attrs"
|
||||
)
|
||||
|
||||
func RenderIndex() string {
|
||||
headContent := RenderHead()
|
||||
navContent := RenderNav()
|
||||
mainContent := RenderMain()
|
||||
footerContent := RenderFooter()
|
||||
bodyContent := elem.Body(attrs.Props{attrs.Class: "is-boxed"},
|
||||
elem.Div(attrs.Props{attrs.Class: "body-wrap boxed-container"},
|
||||
navContent,
|
||||
mainContent,
|
||||
footerContent,
|
||||
),
|
||||
)
|
||||
|
||||
htmlContent := elem.Html(nil, headContent, bodyContent)
|
||||
|
||||
return htmlContent.Render()
|
||||
}
|
||||
94
views/main.templ.go
Normal file
94
views/main.templ.go
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
package views
|
||||
|
||||
import (
|
||||
"github.com/chasefleming/elem-go"
|
||||
"github.com/chasefleming/elem-go/attrs"
|
||||
)
|
||||
|
||||
func RenderMain() elem.Node {
|
||||
mainContent := elem.Main(nil,
|
||||
elem.Section(attrs.Props{attrs.Class: "hero"},
|
||||
elem.Div(attrs.Props{attrs.Class: "container"},
|
||||
elem.Div(attrs.Props{attrs.Class: "hero-inner"},
|
||||
elem.Div(attrs.Props{attrs.Class: "hero-copy"},
|
||||
elem.H1(attrs.Props{attrs.Class: "hero-title"}, elem.Text("Automatisiere spielerisch das 1x1")),
|
||||
elem.P(attrs.Props{attrs.Class: "hero-paragraph"}, elem.Text("Zeige was du kannst und kämpfe dich durch den Dungeon.")),
|
||||
elem.Div(attrs.Props{attrs.Class: "hero-cta"},
|
||||
elem.A(attrs.Props{attrs.Class: "nes-btn is-primary", attrs.Href: "/login"}, elem.Text("Starte Jetzt!")),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
elem.Section(attrs.Props{attrs.Class: "features section"},
|
||||
elem.Div(attrs.Props{attrs.Class: "container"},
|
||||
elem.Div(attrs.Props{attrs.Class: "features-inner section-inner has-bottom-divider"},
|
||||
elem.Div(attrs.Props{attrs.Class: "features-header text-center"},
|
||||
elem.Div(attrs.Props{attrs.Class: "container-sm"},
|
||||
elem.H2(attrs.Props{attrs.Class: "section-title"}, elem.Text("The Math Wizard")),
|
||||
elem.P(attrs.Props{attrs.Class: "section-paragraph"}, elem.Text("Ohne es zu bemerken lernst du das 1x1.")),
|
||||
),
|
||||
),
|
||||
|
||||
elem.Div(attrs.Props{attrs.Class: "features-wrap"},
|
||||
elem.Div(attrs.Props{attrs.Class: "feature is-revealing"},
|
||||
elem.Div(attrs.Props{attrs.Class: "feature-inner"},
|
||||
elem.Div(attrs.Props{attrs.Class: "feature-icon"},
|
||||
elem.Img(attrs.Props{attrs.Src: "/static/images/weapon_sword_ruby.png", attrs.Alt: "Feature 01"})),
|
||||
elem.Div(attrs.Props{attrs.Class: "feature-content"},
|
||||
elem.H3(attrs.Props{attrs.Class: "feature-title"}, elem.Text("Immer neue Level")),
|
||||
elem.P(attrs.Props{attrs.Class: "text-sm mb-0"}, elem.Text("Spannende, zufallsgeneriete Level im Dungeon-Crawler-Stil.")),
|
||||
),
|
||||
),
|
||||
),
|
||||
elem.Div(attrs.Props{attrs.Class: "feature is-revealing"},
|
||||
elem.Div(attrs.Props{attrs.Class: "feature-inner"},
|
||||
elem.Div(attrs.Props{attrs.Class: "feature-icon"},
|
||||
elem.Img(attrs.Props{attrs.Src: "/static/images/monster_imp.png", attrs.Alt: "Feature 02"})),
|
||||
elem.Div(attrs.Props{attrs.Class: "feature-content"},
|
||||
elem.H3(attrs.Props{attrs.Class: "feature-title"}, elem.Text("Angepasste Schwierigkeit")),
|
||||
elem.P(attrs.Props{attrs.Class: "text-sm mb-0"}, elem.Text("Die Aufgaben passen sich deinen aktuellen Fähigkeiten an.")),
|
||||
),
|
||||
),
|
||||
),
|
||||
elem.Div(attrs.Props{attrs.Class: "feature is-revealing"},
|
||||
elem.Div(attrs.Props{attrs.Class: "feature-inner"},
|
||||
elem.Div(attrs.Props{attrs.Class: "feature-icon"},
|
||||
elem.Img(attrs.Props{attrs.Src: "/static/images/npc_knight_green.png", attrs.Alt: "Feature 03"})),
|
||||
elem.Div(attrs.Props{attrs.Class: "feature-content"},
|
||||
elem.H3(attrs.Props{attrs.Class: "feature-title"}, elem.Text("Fokus auf das was zählt")),
|
||||
elem.P(attrs.Props{attrs.Class: "text-sm mb-0"}, elem.Text("Fokus auf das Automatisieren der Multiplikation im Zahlenraum von 1 bis 10.")),
|
||||
),
|
||||
),
|
||||
),
|
||||
elem.Div(attrs.Props{attrs.Class: "feature is-revealing"},
|
||||
elem.Div(attrs.Props{attrs.Class: "feature-inner"},
|
||||
elem.Div(attrs.Props{attrs.Class: "feature-icon"},
|
||||
elem.Img(attrs.Props{attrs.Src: "/static/images/monster_necromancer.png", attrs.Alt: "Feature 04"})),
|
||||
elem.Div(attrs.Props{attrs.Class: "feature-content"},
|
||||
elem.H3(attrs.Props{attrs.Class: "feature-title"}, elem.Text("Lernfortschritt immer im Blick")),
|
||||
elem.P(attrs.Props{attrs.Class: "text-sm mb-0"}, elem.Text("Lernziel und Fortschrittskontrolle, um deinen Fortschritt zu verfolgen.")),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
elem.Section(attrs.Props{attrs.Class: "cta section"},
|
||||
elem.Div(attrs.Props{attrs.Class: "container-sm"},
|
||||
elem.Div(attrs.Props{attrs.Class: "cta-inner section-inner"},
|
||||
elem.Div(attrs.Props{attrs.Class: "cta-header text-center"},
|
||||
elem.H2(attrs.Props{attrs.Class: "section-title"}, elem.Text("Bereit los zu legen?")),
|
||||
elem.P(attrs.Props{attrs.Class: "section-paragraph"}, elem.Text("Fange noch heute an zu lernen.")),
|
||||
elem.Div(attrs.Props{attrs.Class: "cta-cta"},
|
||||
elem.A(attrs.Props{attrs.Class: "nes-btn is-primary", attrs.Href: "/login"},
|
||||
elem.Text("Los geht's")),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
return mainContent
|
||||
}
|
||||
19
views/nav.templ.go
Normal file
19
views/nav.templ.go
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
package views
|
||||
|
||||
import (
|
||||
"github.com/chasefleming/elem-go"
|
||||
"github.com/chasefleming/elem-go/attrs"
|
||||
)
|
||||
|
||||
func RenderNav() elem.Node {
|
||||
navContent := elem.Header(attrs.Props{attrs.Class: "site-header"},
|
||||
elem.Div(attrs.Props{attrs.Class: "container"},
|
||||
elem.Nav(nil,
|
||||
elem.Div(attrs.Props{attrs.Class: "site-header-inner"},
|
||||
elem.A(attrs.Props{attrs.Class: "", attrs.Href: "/"}),
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
return navContent
|
||||
}
|
||||
46
views/profile.templ.go
Normal file
46
views/profile.templ.go
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
package views
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/chasefleming/elem-go"
|
||||
"github.com/chasefleming/elem-go/attrs"
|
||||
)
|
||||
|
||||
type Stats struct {
|
||||
Username string
|
||||
}
|
||||
|
||||
func RenderProfile() elem.Node {
|
||||
stats := Stats{
|
||||
Username: "TestUser",
|
||||
}
|
||||
page := elem.Div(attrs.Props{attrs.Class: "profile"},
|
||||
elem.Div(attrs.Props{attrs.Style: "padding: 20px; border-radius: 5px; box-shadow: 0 0 4px #433e4c; margin-top: 20px; margin-bottom: 20px; background-color: #2e1e26;"},
|
||||
elem.Div(attrs.Props{attrs.Class: "container3"},
|
||||
elem.Section(attrs.Props{attrs.Class: "message-list"},
|
||||
elem.Section(attrs.Props{attrs.Class: "message -left"},
|
||||
elem.I(attrs.Props{attrs.Class: "nes-bcrikko"}),
|
||||
elem.Div(attrs.Props{attrs.Class: "nes-balloon from-left"},
|
||||
elem.P(nil, elem.Text(fmt.Sprintf("Hallo %s zurück. Wie kann ich dir helfen?", stats.Username))),
|
||||
),
|
||||
),
|
||||
),
|
||||
elem.Div(attrs.Props{attrs.Class: "container3"},
|
||||
elem.Div(attrs.Props{attrs.Class: "text-center"},
|
||||
elem.H3(nil, elem.Text("Was möchtest du tun?"))),
|
||||
),
|
||||
elem.Div(nil,
|
||||
elem.A(attrs.Props{attrs.Class: "nes-btn", attrs.Href: "/learn"}, elem.Text("Lernen")),
|
||||
elem.A(attrs.Props{attrs.Class: "nes-btn", attrs.Href: "/play"}, elem.Text("Spielen")),
|
||||
),
|
||||
),
|
||||
elem.Div(attrs.Props{attrs.Class: "container3"},
|
||||
elem.Span(attrs.Props{attrs.Class: "title"}, elem.Text("Dein Fortschritt")),
|
||||
elem.Span(nil, elem.Text("Du bist aktuell Leven: ")),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
return page
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue