From bd415c9af97cc36e48c66e1fbd96440c02cf751c Mon Sep 17 00:00:00 2001
From: Pedro Costa <550684+pnmcosta@users.noreply.github.com>
Date: Thu, 4 Apr 2024 23:15:35 +0100
Subject: [PATCH 1/4] static build and deploy
---
.github/workflows/gh-pages.yml | 24 +++++-
.gitignore | 4 +-
Makefile | 42 ++++++++++
{src => assets}/favicon.png | Bin
{src => assets}/ogimg.png | Bin
go.mod | 15 ++++
go.sum | 16 ++++
internal/posts/posts.go | 121 +++++++++++++++++++++++++++
internal/templates/index/view.templ | 50 +++++++++++
internal/templates/layout/base.templ | 66 +++++++++++++++
internal/templates/post/unsafe.templ | 11 +++
internal/templates/post/view.templ | 14 ++++
main.go | 80 ++++++++++++++++++
package.json | 2 +-
src/index.html | 75 -----------------
src/input.css | 41 ---------
style.css | 113 +++++++++++++++++++++++++
tailwind.config.js | 2 +-
18 files changed, 555 insertions(+), 121 deletions(-)
create mode 100644 Makefile
rename {src => assets}/favicon.png (100%)
rename {src => assets}/ogimg.png (100%)
create mode 100644 go.mod
create mode 100644 go.sum
create mode 100644 internal/posts/posts.go
create mode 100644 internal/templates/index/view.templ
create mode 100644 internal/templates/layout/base.templ
create mode 100644 internal/templates/post/unsafe.templ
create mode 100644 internal/templates/post/view.templ
create mode 100644 main.go
delete mode 100644 src/index.html
delete mode 100644 src/input.css
create mode 100644 style.css
diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml
index 13547c1..8c8f4c4 100644
--- a/.github/workflows/gh-pages.yml
+++ b/.github/workflows/gh-pages.yml
@@ -31,17 +31,37 @@ jobs:
cache-dependency-path: |
package-lock.json
- - run: npx tailwindcss -i ./src/input.css -o ./src/output.css
+ - uses: actions/setup-go@v5
+ with:
+ check-latest: true
+ cache-dependency-path: go.sum
+ go-version-file: go.mod
+ cache: true
+
+ - name: build
+ run: make build-deps \
+ go mod download && go mod verify \
+ make build
+
+ - uses: actions/upload-artifact@v4
+ if: github.ref != 'refs/heads/main'
+ with:
+ if-no-files-found: error
+ name: 'public-${{ steps.vars.outputs.sha_short }}'
+ path: ./public
+ retention-days: 1
- name: Upload artifact
+ if: github.ref == 'refs/heads/main'
uses: actions/upload-pages-artifact@v3
with:
- path: ./src
+ path: ./public
# Deploy job
deploy:
# Add a dependency to the build job
needs: build
+ if: github.ref == 'refs/heads/main'
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
permissions:
diff --git a/.gitignore b/.gitignore
index d65bbed..7b8ef8b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
node_modules
-output.css
\ No newline at end of file
+/public
+
+*_templ.go
\ No newline at end of file
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..09962d6
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,42 @@
+GOOS=linux
+GOARCH=amd64
+CGO_ENABLED=0
+
+install: test-deps build-deps ## install from the current working tree
+ @npm i
+ @go install -v .
+
+clean: ## remove build artifacts from the working tree
+ @rm -rf public
+
+test-deps: ## install test dependencies
+ @go install github.com/bokwoon95/wgo@latest
+ @go get -v ./...
+ @go mod tidy
+
+build-deps: ## install build dependencies
+ @go install github.com/a-h/templ/cmd/templ@latest
+
+deps: build-deps test-deps ## install build and test dependencies
+
+assets: clean
+ @cp -a assets/. ./public/
+
+generate: ## Go and Templ generate
+ @npx tailwindcss -i style.css -o ./public/style.css
+ @templ generate
+
+run: ## run and watch
+ @wgo -file=.go -file=.templ -file=.css -file=.md -xfile=_templ.go make generate :: go run main.go --dev
+
+build: assets generate ## build public static
+ @go run main.go
+
+update: ## update dependencies
+ @go get -u
+ @go mod tidy
+ @make install
+ @go mod tidy
+
+help: ## Show this help.
+ @grep -F -h "##" $(MAKEFILE_LIST) | grep -F -v grep | sed -e 's/\\$$//' | sed -e 's/:.\+##/\n\t/'
diff --git a/src/favicon.png b/assets/favicon.png
similarity index 100%
rename from src/favicon.png
rename to assets/favicon.png
diff --git a/src/ogimg.png b/assets/ogimg.png
similarity index 100%
rename from src/ogimg.png
rename to assets/ogimg.png
diff --git a/go.mod b/go.mod
new file mode 100644
index 0000000..888697d
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,15 @@
+module github.com/pnmcosta/csta.dev
+
+go 1.22
+
+require (
+ github.com/a-h/templ v0.2.648
+ github.com/gosimple/slug v1.14.0
+ github.com/yuin/goldmark v1.7.1
+ github.com/yuin/goldmark-meta v1.1.0
+)
+
+require (
+ github.com/gosimple/unidecode v1.0.1 // indirect
+ gopkg.in/yaml.v2 v2.4.0 // indirect
+)
diff --git a/go.sum b/go.sum
new file mode 100644
index 0000000..486346d
--- /dev/null
+++ b/go.sum
@@ -0,0 +1,16 @@
+github.com/a-h/templ v0.2.648 h1:A1ggHGIE7AONOHrFaDTM8SrqgqHL6fWgWCijQ21Zy9I=
+github.com/a-h/templ v0.2.648/go.mod h1:SA7mtYwVEajbIXFRh3vKdYm/4FYyLQAtPH1+KxzGPA8=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/gosimple/slug v1.14.0 h1:RtTL/71mJNDfpUbCOmnf/XFkzKRtD6wL6Uy+3akm4Es=
+github.com/gosimple/slug v1.14.0/go.mod h1:UiRaFH+GEilHstLUmcBgWcI42viBN7mAb818JrYOeFQ=
+github.com/gosimple/unidecode v1.0.1 h1:hZzFTMMqSswvf0LBJZCZgThIZrpDHFXux9KeGmn6T/o=
+github.com/gosimple/unidecode v1.0.1/go.mod h1:CP0Cr1Y1kogOtx0bJblKzsVWrqYaqfNOnHzpgWw4Awc=
+github.com/yuin/goldmark v1.7.1 h1:3bajkSilaCbjdKVsKdZjZCLBNPL9pYzrCakKaf4U49U=
+github.com/yuin/goldmark v1.7.1/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=
+github.com/yuin/goldmark-meta v1.1.0 h1:pWw+JLHGZe8Rk0EGsMVssiNb/AaPMHfSRszZeUeiOUc=
+github.com/yuin/goldmark-meta v1.1.0/go.mod h1:U4spWENafuA7Zyg+Lj5RqK/MF+ovMYtBvXi1lBb2VP0=
+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.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
diff --git a/internal/posts/posts.go b/internal/posts/posts.go
new file mode 100644
index 0000000..294601d
--- /dev/null
+++ b/internal/posts/posts.go
@@ -0,0 +1,121 @@
+package posts
+
+import (
+ "bytes"
+ "io/fs"
+ "log"
+ "os"
+ "path/filepath"
+ "sort"
+ "strings"
+ "time"
+
+ "github.com/yuin/goldmark"
+ meta "github.com/yuin/goldmark-meta"
+ "github.com/yuin/goldmark/parser"
+)
+
+type Post struct {
+ Title string
+ Summary string
+ Tags []string
+ Date time.Time
+ Content []byte
+}
+
+type walker struct {
+ posts []Post
+}
+
+func ParsePosts() []Post {
+ w := walker{}
+ filepath.WalkDir("./posts", w.walk)
+ // stort by latest
+ sort.Slice(w.posts, func(i, j int) bool { return w.posts[i].Date.After(w.posts[j].Date) })
+ return w.posts
+}
+
+func (w *walker) walk(s string, d fs.DirEntry, err error) error {
+ if err != nil {
+ return err
+ }
+
+ if !d.IsDir() {
+ if !strings.HasSuffix(s, ".md") {
+ return nil
+ }
+
+ content, err := os.ReadFile(s)
+ if err != nil {
+ log.Printf("%s: could not read\n", s)
+ return err
+ }
+
+ markdown := goldmark.New(
+ goldmark.WithExtensions(
+ meta.Meta,
+ ),
+ )
+
+ var buf bytes.Buffer
+ context := parser.NewContext()
+ if err := markdown.Convert(content, &buf, parser.WithContext(context)); err != nil {
+ log.Printf("%s: invalid markdown\n", s)
+ return err
+ }
+
+ parsed := buf.Bytes()
+ if len(parsed) == 0 {
+ log.Printf("%s: empty\n", s)
+ return nil
+ }
+
+ post := Post{
+ Content: parsed,
+ }
+
+ metaData := meta.Get(context)
+ if value, ok := metaData["Title"].(string); ok && len(value) > 0 {
+ post.Title = value
+ } else {
+ log.Printf("%s: title required\n", s)
+ return nil
+ }
+
+ if value, ok := metaData["Summary"].(string); ok && len(value) > 0 {
+ post.Summary = value
+ }
+
+ if value, ok := metaData["Tags"].([]interface{}); ok && len(value) > 0 {
+ var strValue []string = make([]string, len(value))
+ for i, d := range value {
+ if v, ok := d.(string); ok {
+ strValue[i] = v
+ }
+ }
+ post.Tags = strValue
+ }
+
+ if value, ok := metaData["Date"].(string); ok && len(value) > 0 {
+ if dt, err := time.Parse("2006/01/02", value); err == nil {
+ post.Date = dt
+ }
+ }
+
+ if post.Date.IsZero() {
+ fi, err := os.Stat(s)
+ if err != nil {
+ log.Printf("%s: err stating: %s\n", s, err)
+ }
+ post.Date = fi.ModTime().UTC()
+ }
+
+ if post.Date.IsZero() {
+ post.Date = time.Now().UTC()
+ }
+
+ log.Printf("%s: post parsed\n", s)
+ w.posts = append(w.posts, post)
+ }
+ return nil
+}
diff --git a/internal/templates/index/view.templ b/internal/templates/index/view.templ
new file mode 100644
index 0000000..49fe841
--- /dev/null
+++ b/internal/templates/index/view.templ
@@ -0,0 +1,50 @@
+package index
+
+import "github.com/pnmcosta/csta.dev/internal/posts"
+import "github.com/pnmcosta/csta.dev/internal/templates/layout"
+import "path"
+import "github.com/gosimple/slug"
+
+templ View(posts []posts.Post) {
+ @layout.Base() {
+
+ Olá, I'm Pedro Maia Costa a product
+ software
+ engineer based in Braga, Portugal.
+
+
+ Currently working on/with SocialClique developing
+ Shopify Apps.
+
+
+ Having previously worked at/with Juni, The SimGrid,
+
+ JPMorgan
+ Chase & Co.
+ and All human.
+
+ if len(posts) > 0 {
+ I've also recently started sharing my experience and know-how on these blog articles:
+
+ for i, post := range posts {
+ if i >0 {
+ ;
+ }
+ { post.Title } ({ post.Date.Format("2006/01/02") })
+ }
+
+ }
+
+ Drop me a comment to pedro@csta.dev
+
+ All the best
+ }
+}
diff --git a/internal/templates/layout/base.templ b/internal/templates/layout/base.templ
new file mode 100644
index 0000000..583e79b
--- /dev/null
+++ b/internal/templates/layout/base.templ
@@ -0,0 +1,66 @@
+package layout
+
+templ Base() {
+
+
+
+
+
+
+ csta.dev
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
diff --git a/internal/templates/post/unsafe.templ b/internal/templates/post/unsafe.templ
new file mode 100644
index 0000000..8903806
--- /dev/null
+++ b/internal/templates/post/unsafe.templ
@@ -0,0 +1,11 @@
+package post
+
+import "context"
+import "io"
+
+func Unsafe(html string) templ.Component {
+ return templ.ComponentFunc(func(ctx context.Context, w io.Writer) (err error) {
+ _, err = io.WriteString(w, html)
+ return
+ })
+}
\ No newline at end of file
diff --git a/internal/templates/post/view.templ b/internal/templates/post/view.templ
new file mode 100644
index 0000000..c0b6cc2
--- /dev/null
+++ b/internal/templates/post/view.templ
@@ -0,0 +1,14 @@
+package post
+
+import "github.com/pnmcosta/csta.dev/internal/posts"
+import "github.com/pnmcosta/csta.dev/internal/templates/layout"
+
+templ View(post posts.Post, content templ.Component) {
+ @layout.Base() {
+
+ @content
+
+ }
+ // { post.Summary }
+ // { strings.Join(post.Tags, ", ") }
+}
diff --git a/main.go b/main.go
new file mode 100644
index 0000000..4176963
--- /dev/null
+++ b/main.go
@@ -0,0 +1,80 @@
+package main
+
+import (
+ "context"
+ "flag"
+ "log"
+ "net/http"
+ "os"
+ "path"
+
+ "github.com/gosimple/slug"
+ "github.com/pnmcosta/csta.dev/internal/posts"
+ "github.com/pnmcosta/csta.dev/internal/templates/index"
+ templates "github.com/pnmcosta/csta.dev/internal/templates/post"
+)
+
+var devFlag = flag.Bool("dev", false, "if true public folder will be served")
+
+func main() {
+ flag.Parse()
+
+ posts := posts.ParsePosts()
+
+ // Output path.
+ rootPath := "public"
+ if err := os.Mkdir(rootPath, 0755); err != nil {
+ if !os.IsExist(err) {
+ log.Fatalf("failed to create output directory: %v", err)
+ }
+ }
+
+ // Create an index page.
+ name := path.Join(rootPath, "index.html")
+ f, err := os.Create(name)
+ if err != nil {
+ log.Fatalf("failed to create output file: %v", err)
+ }
+
+ // Write it out.
+ err = index.View(posts).Render(context.Background(), f)
+ if err != nil {
+ log.Fatalf("failed to write index page: %v", err)
+ }
+
+ // Create a page for each post.
+ for _, post := range posts {
+ // Create the output directory.
+ dir := path.Join(rootPath, post.Date.Format("2006/01/02"), slug.Make(post.Title))
+ if err := os.MkdirAll(dir, 0755); err != nil && err != os.ErrExist {
+ log.Fatalf("failed to create dir %q: %v", dir, err)
+ }
+
+ // Create the output file.
+ name := path.Join(dir, "index.html")
+ f, err := os.Create(name)
+ if err != nil {
+ log.Fatalf("failed to create output file: %v", err)
+ }
+
+ // Create an unsafe component containing raw HTML.
+ content := templates.Unsafe(string(post.Content))
+
+ // Use templ to render the template containing the raw HTML.
+ err = templates.View(post, content).Render(context.Background(), f)
+ if err != nil {
+ log.Fatalf("failed to write output file: %v", err)
+ }
+ }
+
+ if !*devFlag {
+ return
+ }
+
+ http.Handle("/", http.FileServer(http.Dir("./public")))
+ log.Print("Listening on 127.0.0.1:3000...")
+ err = http.ListenAndServe("127.0.0.1:3000", nil)
+ if err != nil {
+ log.Fatal(err)
+ }
+}
diff --git a/package.json b/package.json
index f14fba9..132b50d 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"scripts": {
- "dev": "npx tailwindcss -i ./src/input.css -o ./src/output.css --watch"
+ "dev": "npx tailwindcss -i style.css -o ./public/style.css --watch"
},
"devDependencies": {
"tailwindcss": "^3.4.3"
diff --git a/src/index.html b/src/index.html
deleted file mode 100644
index 333e14b..0000000
--- a/src/index.html
+++ /dev/null
@@ -1,75 +0,0 @@
-
-
-
-
-
-
-
- csta.dev
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/input.css b/src/input.css
deleted file mode 100644
index 0f18357..0000000
--- a/src/input.css
+++ /dev/null
@@ -1,41 +0,0 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
-
-@layer base {
- html {
- font-size: 24px
- }
-
- h1,
- a {
- @apply text-white;
- }
-
- a:hover {
- @apply text-zinc-400;
- }
-
- h1 {
- overflow: hidden;
- padding-bottom: 2px;
- }
-
- #title {
- margin-left: -6px;
- }
-
- #title span {
- transition: all .5s ease-in-out 0s;
- opacity: 0;
- width: 0;
- height: 0;
- display: block;
- }
-
- #title span.visible {
- opacity: 1;
- width: auto;
- height: auto;
- }
-}
\ No newline at end of file
diff --git a/style.css b/style.css
new file mode 100644
index 0000000..93b9878
--- /dev/null
+++ b/style.css
@@ -0,0 +1,113 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+@layer base {
+
+ html {
+ height: 100%;
+ position:relative;
+ }
+
+ body {
+ background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzExMTExMSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
+ background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #000000), color-stop(100%, #111111));
+ background: -moz-linear-gradient(#000000, #111111);
+ background: -webkit-linear-gradient(#000000, #111111);
+ background: linear-gradient(#000000, #111111);
+ }
+
+ h1,
+ a {
+ @apply text-white;
+ transition: color .2s ease-in-out 0s;
+ }
+
+ a:hover {
+ @apply text-zinc-400;
+ }
+
+ h1 {
+ overflow: hidden;
+ padding-bottom: 2px;
+ }
+
+ #title {
+ margin-left: -6px;
+ }
+
+ #title span {
+ transition: opacity .5s ease-in-out .5s;
+ opacity: 0;
+ width: 0;
+ height: 0;
+ display: block;
+ }
+
+ #title span.visible {
+ opacity: 1;
+ width: auto;
+ height: auto;
+ }
+
+
+ /*** https://codepen.io/vavik96/pen/vEdMXM ***/
+ @keyframes clouds-loop-1 {
+ to {
+ background-position: -1000px 0;
+ }
+ }
+
+ .clouds-1 {
+ background-image: url("https://s.cdpn.io/15514/clouds_2.png");
+ animation: clouds-loop-1 1500s infinite linear;
+ }
+
+ @keyframes clouds-loop-2 {
+ to {
+ background-position: -1000px 0;
+ }
+ }
+
+ .clouds-2 {
+ background-image: url("https://s.cdpn.io/15514/clouds_1.png");
+ animation: clouds-loop-2 750s infinite linear;
+ }
+
+ @keyframes clouds-loop-3 {
+ to {
+ background-position: -1579px 0;
+ }
+ }
+
+ .clouds-3 {
+ background-image: url("https://s.cdpn.io/15514/clouds_3.png");
+ animation: clouds-loop-3 900s infinite linear;
+ }
+
+ .clouds {
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
+ opacity: 0.4;
+ pointer-events: none;
+ position: absolute;
+ overflow: hidden;
+ top: 0;
+ left: 0;
+ right: 0;
+ height: 100%;
+ z-index: -1;
+ }
+
+ .clouds-1,
+ .clouds-2,
+ .clouds-3 {
+ background-repeat: repeat-x;
+ position: absolute;
+ bottom: -250px;
+ right: 0;
+ left: 0;
+ height: 500px;
+ transform: scale(1, -1);
+ }
+
+}
\ No newline at end of file
diff --git a/tailwind.config.js b/tailwind.config.js
index 5b072de..d044e21 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -1,6 +1,6 @@
/** @type {import('tailwindcss').Config} */
module.exports = {
- content: ["./src/**/*.{html,js}"],
+ content: ["./internal/templates/**/*.templ"],
theme: {
extend: {},
},
From 85597121d4636322afae6d0ba6174783791e540f Mon Sep 17 00:00:00 2001
From: Pedro Costa <550684+pnmcosta@users.noreply.github.com>
Date: Thu, 4 Apr 2024 23:18:44 +0100
Subject: [PATCH 2/4] troubleshot build step
---
.github/workflows/gh-pages.yml | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml
index 8c8f4c4..e953899 100644
--- a/.github/workflows/gh-pages.yml
+++ b/.github/workflows/gh-pages.yml
@@ -38,10 +38,13 @@ jobs:
go-version-file: go.mod
cache: true
- - name: build
- run: make build-deps \
- go mod download && go mod verify \
- make build
+ - run: make build-deps
+
+ - run: go mod download
+
+ - run: go mod verify
+
+ - run: make build
- uses: actions/upload-artifact@v4
if: github.ref != 'refs/heads/main'
From b68f524a9ff51c14e7d0c810a779c5d53adb07c1 Mon Sep 17 00:00:00 2001
From: Pedro Costa <550684+pnmcosta@users.noreply.github.com>
Date: Thu, 4 Apr 2024 23:25:24 +0100
Subject: [PATCH 3/4] artifact upload with sha_short
---
.github/workflows/gh-pages.yml | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml
index e953899..7f5b4bb 100644
--- a/.github/workflows/gh-pages.yml
+++ b/.github/workflows/gh-pages.yml
@@ -23,6 +23,10 @@ jobs:
steps:
- uses: actions/checkout@v4
+ - id: vars
+ run: |
+ echo "sha_short=$(git rev-parse --short "$GITHUB_SHA")" >> "$GITHUB_OUTPUT"
+
- uses: actions/setup-node@v4
with:
check-latest: true
From 74635318e5ace1784aa14afeedd7ae72d6753c43 Mon Sep 17 00:00:00 2001
From: Pedro Costa <550684+pnmcosta@users.noreply.github.com>
Date: Thu, 4 Apr 2024 23:36:50 +0100
Subject: [PATCH 4/4] cloud assets and positioning
---
assets/clouds_1.webp | Bin 0 -> 198318 bytes
assets/clouds_2.webp | Bin 0 -> 187482 bytes
assets/clouds_3.png | Bin 0 -> 58056 bytes
assets/favicon.png | Bin 13140 -> 3809 bytes
style.css | 9 +++++----
5 files changed, 5 insertions(+), 4 deletions(-)
create mode 100644 assets/clouds_1.webp
create mode 100644 assets/clouds_2.webp
create mode 100644 assets/clouds_3.png
diff --git a/assets/clouds_1.webp b/assets/clouds_1.webp
new file mode 100644
index 0000000000000000000000000000000000000000..b67ece0cc9eee007fb4289054929e4bcff06326f
GIT binary patch
literal 198318
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