diff --git a/.gitignore b/.gitignore index e8489bd..7e0dca6 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ node_modules/ tijl.dev static/js/interactive.js static/css/styles.css +config.yaml diff --git a/cmd/server/main.go b/cmd/server/main.go index fd82f02..da751f6 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -2,21 +2,27 @@ package main import ( "html/template" - "log" "net/http" "git.tijl.dev/tijl/tijl.dev/internal/assets" + "git.tijl.dev/tijl/tijl.dev/internal/config" "git.tijl.dev/tijl/tijl.dev/internal/i18n" "git.tijl.dev/tijl/tijl.dev/static" "git.tijl.dev/tijl/tijl.dev/views" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/filesystem" "github.com/gofiber/template/html/v2" + "github.com/mikhail-bigun/fiberlogrus" + log "github.com/sirupsen/logrus" ) func main() { - assets.LoadSVGs() - i18n.LoadTranslations() + log.SetLevel(log.DebugLevel) + + config.Load() + + assets.Load() + i18n.Load() engine := html.NewFileSystem(http.FS(views.Embed), ".html") @@ -32,11 +38,23 @@ func main() { }) app := fiber.New(fiber.Config{ - Views: engine, + Views: engine, + DisableStartupMessage: true, }) + app.Use(fiberlogrus.New()) + app.Get("/", func(c *fiber.Ctx) error { - return c.Render("index", fiber.Map{}) + return c.Render("index", getCommon(c)) + }) + app.Get("/blog", func(c *fiber.Ctx) error { + return c.Render("blog", getCommon(c)) + }) + app.Get("/projects", func(c *fiber.Ctx) error { + return c.Render("projects", getCommon(c)) + }) + app.Get("/about", func(c *fiber.Ctx) error { + return c.Render("about", getCommon(c)) }) app.Use("/static", filesystem.New(filesystem.Config{ @@ -45,3 +63,9 @@ func main() { log.Fatal(app.Listen(":3000")) } + +func getCommon(c *fiber.Ctx) fiber.Map { + return fiber.Map{ + "Path": c.Path(), + } +} diff --git a/go.mod b/go.mod index 46de472..a9c687f 100644 --- a/go.mod +++ b/go.mod @@ -3,27 +3,29 @@ module git.tijl.dev/tijl/tijl.dev go 1.22.5 require ( - github.com/gofiber/embed v0.1.2 + github.com/coreos/go-oidc/v3 v3.11.0 github.com/gofiber/fiber/v2 v2.52.5 - github.com/gofiber/fiber/v3 v3.0.0-beta.3 github.com/gofiber/template/html/v2 v2.1.2 + github.com/mikhail-bigun/fiberlogrus v0.1.3 + github.com/sirupsen/logrus v1.9.3 + gopkg.in/yaml.v3 v3.0.1 ) require ( github.com/andybalholm/brotli v1.1.0 // indirect - github.com/gofiber/fiber v1.13.3 // indirect + github.com/go-jose/go-jose/v4 v4.0.2 // indirect github.com/gofiber/template v1.8.3 // indirect github.com/gofiber/utils v1.1.0 // indirect - github.com/gofiber/utils/v2 v2.0.0-beta.4 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/gorilla/schema v1.1.0 // indirect github.com/klauspost/compress v1.17.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect - github.com/rivo/uniseg v0.2.0 // indirect + github.com/rivo/uniseg v0.4.4 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasthttp v1.55.0 // indirect github.com/valyala/tcplisten v1.0.0 // indirect - golang.org/x/sys v0.21.0 // indirect + golang.org/x/crypto v0.25.0 // indirect + golang.org/x/oauth2 v0.21.0 // indirect + golang.org/x/sys v0.22.0 // indirect ) diff --git a/go.sum b/go.sum index b1139a0..04c1a89 100644 --- a/go.sum +++ b/go.sum @@ -1,66 +1,63 @@ -github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= +github.com/coreos/go-oidc/v3 v3.11.0 h1:Ia3MxdwpSw702YW0xgfmP1GVCMA9aEFWu12XUZ3/OtI= +github.com/coreos/go-oidc/v3 v3.11.0/go.mod h1:gE3LgjOgFoHi9a4ce4/tJczr0Ai2/BoDhf0r5lltWI0= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/gofiber/embed v0.1.2 h1:nWzY3j37ACXfxo1SAYQ6X2yn20wAi/H6fU2ppAQQpZk= -github.com/gofiber/embed v0.1.2/go.mod h1:TLJmk/4uU1+rqtrqln6gMM4dJSvDd0D7RyqHkeEdxIc= -github.com/gofiber/fiber v1.13.3 h1:14kBTW1+n5mNIJZqibsbIdb+yQdC5argcbe9vE7Nz+o= -github.com/gofiber/fiber v1.13.3/go.mod h1:KxRvVkqzfZOO6A7mBu+j7ncX2AcT6Sm6F7oeGR3Kgmw= +github.com/go-jose/go-jose/v4 v4.0.2 h1:R3l3kkBds16bO7ZFAEEcofK0MkrAJt3jlJznWZG0nvk= +github.com/go-jose/go-jose/v4 v4.0.2/go.mod h1:WVf9LFMHh/QVrmqrOfqun0C45tMe3RoiKJMPvgWwLfY= github.com/gofiber/fiber/v2 v2.52.5 h1:tWoP1MJQjGEe4GB5TUGOi7P2E0ZMMRx5ZTG4rT+yGMo= github.com/gofiber/fiber/v2 v2.52.5/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ= -github.com/gofiber/fiber/v3 v3.0.0-beta.3 h1:7Q2I+HsIqnIEEDB+9oe7Gadpakh6ZLhXpTYz/L20vrg= -github.com/gofiber/fiber/v3 v3.0.0-beta.3/go.mod h1:kcMur0Dxqk91R7p4vxEpJfDWZ9u5IfvrtQc8Bvv/JmY= github.com/gofiber/template v1.8.3 h1:hzHdvMwMo/T2kouz2pPCA0zGiLCeMnoGsQZBTSYgZxc= github.com/gofiber/template v1.8.3/go.mod h1:bs/2n0pSNPOkRa5VJ8zTIvedcI/lEYxzV3+YPXdBvq8= github.com/gofiber/template/html/v2 v2.1.2 h1:wkK/mYJ3nIhongTkG3t0QgV4ADdgOYJYVSAF2AHnh8Y= github.com/gofiber/template/html/v2 v2.1.2/go.mod h1:E98Z/FzvpaSib06aWEgYk6GXNf3ctoyaJH8yW5ay5ak= -github.com/gofiber/utils v0.0.9/go.mod h1:9J5aHFUIjq0XfknT4+hdSMG6/jzfaAgCu4HEbWDeBlo= github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM= github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= -github.com/gofiber/utils/v2 v2.0.0-beta.4 h1:1gjbVFFwVwUb9arPcqiB6iEjHBwo7cHsyS41NeIW3co= -github.com/gofiber/utils/v2 v2.0.0-beta.4/go.mod h1:sdRsPU1FXX6YiDGGxd+q2aPJRMzpsxdzCXo9dz+xtOY= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gorilla/schema v1.1.0 h1:CamqUDOFUBqzrvxuz2vEwo8+SUdwsluFh7IlzJh30LY= -github.com/gorilla/schema v1.1.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= -github.com/klauspost/compress v1.10.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mikhail-bigun/fiberlogrus v0.1.3 h1:2aVtFSfMr/T8J2p4228TwV6txvUEOQxKlu5LpcKyym0= +github.com/mikhail-bigun/fiberlogrus v0.1.3/go.mod h1:Tt0FrmLd2maF8VSHsx1pfiWNRTrjyBrKfDA2JW5hvmY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= +github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.15.1/go.mod h1:YOKImeEosDdBPnxc0gy7INqi3m1zK6A+xl6TwOBhHCA= github.com/valyala/fasthttp v1.55.0 h1:Zkefzgt6a7+bVKHnu/YaYSOPfNYNisSVBo/unVCf8k8= github.com/valyala/fasthttp v1.55.0/go.mod h1:NkY9JtkrpPKmgwV3HTaS2HWaJss9RSIsRVfcxxoHiOM= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/assets/assets.go b/internal/assets/assets.go new file mode 100644 index 0000000..5c0ad00 --- /dev/null +++ b/internal/assets/assets.go @@ -0,0 +1,5 @@ +package assets + +func Load() { + loadSVGs() +} diff --git a/internal/assets/svg.go b/internal/assets/svg.go index ae53a85..03435b6 100644 --- a/internal/assets/svg.go +++ b/internal/assets/svg.go @@ -2,15 +2,16 @@ package assets import ( "html/template" - "log" "os" "path/filepath" "strings" + + log "github.com/sirupsen/logrus" ) var SVGData map[string]string -func LoadSVGs() { +func loadSVGs() { SVGData = make(map[string]string) dir := "static/assets" @@ -23,13 +24,15 @@ func LoadSVGs() { for _, file := range files { data, err := os.ReadFile(file) if err != nil { - log.Printf("Error reading SVG file %s: %v", file, err) + log.Warnf("Error reading SVG file %s: %v", file, err) continue } filename := filepath.Base(file) key := strings.TrimSuffix(filename, filepath.Ext(filename)) SVGData[key] = string(data) } + + log.Debug("Loaded SVG files") } func Svg(name string) template.HTML { diff --git a/internal/config/config.go b/internal/config/config.go index d912156..2e97b4e 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -1 +1,51 @@ package config + +import ( + "os" + + log "github.com/sirupsen/logrus" + "gopkg.in/yaml.v3" +) + +var Config *ConfigType + +func Load() { + configPath := os.Getenv("TIJLDEV_CONFIG_LOCATION") + if configPath == "" { + configPath = "./config.yaml" + } + + indexFile, err := os.ReadFile(configPath) + if err != nil { + log.Fatal(err) + } + + err = yaml.Unmarshal(indexFile, &Config) + if err != nil { + log.Fatal(err) + } + + log.Debug("loaded config") +} + +type ConfigType struct { + UrlBase string `yaml:"url_base"` + DB `yaml:"database"` + Oidc `yaml:"oidc"` +} + +type DB struct { + User string `yaml:"user"` + Passsword string `yaml:"password"` + Database string `yaml:"database"` + Host string `yaml:"host"` + Port int `yaml:"port"` + + UrlExtention string `yaml:"connection_url_extention"` +} + +type Oidc struct { + ClientID string `yaml:"client_id"` + ClientSecret string `yaml:"client_secret"` + Issuer string `yaml:"issuer"` +} diff --git a/internal/i18n/i18n.go b/internal/i18n/i18n.go index b9604a6..b6d512d 100644 --- a/internal/i18n/i18n.go +++ b/internal/i18n/i18n.go @@ -3,16 +3,17 @@ package i18n import ( "encoding/json" "github.com/gofiber/fiber/v2" - "log" "os" "path/filepath" + + log "github.com/sirupsen/logrus" ) var translations map[string]map[string]string const DefaultLang = "en" -func LoadTranslations() { +func Load() { translations = make(map[string]map[string]string) dir := "locales" @@ -27,18 +28,20 @@ func LoadTranslations() { file, err := os.Open(file) if err != nil { - log.Printf("Error opening translation file %s: %v", file, err) + log.Errorf("Error opening translation file %s: %v", file, err) continue } defer file.Close() var messages map[string]string if err := json.NewDecoder(file).Decode(&messages); err != nil { - log.Printf("Error decoding translation file %s: %v", file, err) + log.Errorf("Error decoding translation file %s: %v", file, err) continue } translations[lang] = messages } + + log.Debug("Loaded translations") } func Translate(c *fiber.Ctx, key string) string { diff --git a/internal/oidc/oidc.go b/internal/oidc/oidc.go index 1df929b..9d19b3d 100644 --- a/internal/oidc/oidc.go +++ b/internal/oidc/oidc.go @@ -1 +1,10 @@ package oidc + +import "github.com/coreos/go-oidc/v3/oidc" + +func Setup() { +} + +func Login() { + +} diff --git a/locales/en.json b/locales/en.json index ea2032a..522795b 100644 --- a/locales/en.json +++ b/locales/en.json @@ -4,5 +4,7 @@ "language": "Language", "login": "Login", "english": "English", - "dutch": "Dutch" + "dutch": "Dutch", + "about": "About", + "projects": "projects" } diff --git a/locales/nl.json b/locales/nl.json index bd3bdcc..4c31f5c 100644 --- a/locales/nl.json +++ b/locales/nl.json @@ -4,5 +4,7 @@ "language": "Taal", "login": "Login", "english": "Engels", - "dutch": "Nederlands" + "dutch": "Nederlands", + "about": "Over", + "projects": "Projecten" } diff --git a/static/assets/about.svg b/static/assets/about.svg new file mode 100644 index 0000000..315a48a --- /dev/null +++ b/static/assets/about.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/assets/blog.svg b/static/assets/blog.svg index b48f0d3..9c4fd77 100644 --- a/static/assets/blog.svg +++ b/static/assets/blog.svg @@ -1,6 +1,3 @@ - - - - + + + diff --git a/static/assets/home.svg b/static/assets/home.svg index 9c82eda..5d8dde0 100644 --- a/static/assets/home.svg +++ b/static/assets/home.svg @@ -1,5 +1,3 @@ - - - + + + diff --git a/static/assets/language.svg b/static/assets/language.svg index 671ee0b..fdc9570 100644 --- a/static/assets/language.svg +++ b/static/assets/language.svg @@ -1,6 +1,3 @@ - - - - + + + diff --git a/static/assets/login.svg b/static/assets/login.svg index 51c83a2..ca94a0c 100644 --- a/static/assets/login.svg +++ b/static/assets/login.svg @@ -1,6 +1,3 @@ - - - - + + + diff --git a/static/assets/projects.svg b/static/assets/projects.svg new file mode 100644 index 0000000..7bab8b6 --- /dev/null +++ b/static/assets/projects.svg @@ -0,0 +1,3 @@ + + + diff --git a/views/about.html b/views/about.html new file mode 100644 index 0000000..eddc429 --- /dev/null +++ b/views/about.html @@ -0,0 +1,11 @@ +{{ template "layouts/base" . }} + +{{define "title"}}{{translate "about"}}{{end}} + +{{define "header"}} +{{template "partials/menu" .}} +{{end}} + +{{ define "content" }} +
TODO About
+{{ end }} diff --git a/views/blog.html b/views/blog.html new file mode 100644 index 0000000..94592e1 --- /dev/null +++ b/views/blog.html @@ -0,0 +1,11 @@ +{{ template "layouts/base" . }} + +{{define "title"}}{{translate "blog"}}{{end}} + +{{define "header"}} +{{template "partials/menu" .}} +{{end}} + +{{ define "content" }} +
TODO Blog
+{{ end }} diff --git a/views/partials/menu.html b/views/partials/menu.html index 3fd048e..4380888 100644 --- a/views/partials/menu.html +++ b/views/partials/menu.html @@ -13,23 +13,39 @@ diff --git a/views/projects.html b/views/projects.html new file mode 100644 index 0000000..8f70221 --- /dev/null +++ b/views/projects.html @@ -0,0 +1,11 @@ +{{ template "layouts/base" . }} + +{{define "title"}}{{translate "projects"}}{{end}} + +{{define "header"}} +{{template "partials/menu" .}} +{{end}} + +{{ define "content" }} +
TODO Projects
+{{ end }}