detached f6c3de2

Update README & gif demo

Fix README
commit
f6c3de2f8cd0d63abef425425297e507412f54a1
author
bamen · · 2024-09-17 13:51 UTC
committer
bamen · · 2024-09-17 13:54 UTC
parent
2fa9aef
signature
unsigned
5 files · +93 -15
M README.md +14 -13
@@ -13,16 +13,22 @@ Gordon is a tool written in Go that aims to simplify the deployment of your cont
1313
1414 ## **Key Features**
1515
16-- **Ease of use**: Deploy container images effortlessly using the command **`gordon deploy`**.
17-- **Self-Hosted**: Operates within your existing self-hosted environment and don't interfere with your setup.
16+- **Ease of use**:
17+ - Push your container images effortlessly using the **`gordon push`** command. A container creation URL is generated upon successful push.
18+
19+ ![Demo Push](assets/vhs/demo_push.gif?raw=true)
20+
21+ - Deploy your web applications quickly with **`gordon deploy`**.
22+
23+ ![Demo Deploy](assets/vhs/demo_deploy.gif?raw=true)
24+
25+- **Self-Hosted**: Operates within your existing self-hosted environment without interfering with your setup.
1826 - **Self-Updated**: The client can update itself to the latest version with `gordon update`. The backend is updated by pulling the latest image from ghcr.io.
1927 - **Minimal WebUI**: Provides a simple web UI to manage your deployments, domains, exposed ports. Using a very minimal stack (sqlite3, Go templates, HTMX and Tailwind CSS).
2028 - **Simple authentication**: Use GitHub OAuth for the web UI and OAuth 2.0 device authorization grant (device flow) for the CLI client.
2129 - **Automated Routing**: Collaborates with Traefik to automatically route your application to your desired domain or subdomain.
2230 - **One binary**: Gordon follows the Golang philosophy of keeping things simple, offering a single binary for all functionalities.
2331
24-![Demo Deploy](assets/vhs/demo_deploy.gif?raw=true)
25-
2632 ## **Why ?**
2733
2834 I needed a simple tool that would automate the process of quickly spin up my web apps and preferably not on someone else's computer. And since I wanted to learn Go, I decided to build it myself.
@@ -44,15 +50,10 @@ I also want to emphasize that I am far from being a Go expert yet. Hence, if you
4450
4551 ## **Roadmap beyond 0.1**
4652
47-- Bug fixes (obviously)
48-- Add tests
49-- Better error handling and logging
50-- Sexier WebUI with more features while keeping it simple (spa)
51-- Sexier CLI (💕 [Charm](https://github.com/charmbracelet))
52-- Refined CLI to backend authentication process (utilizing GitHub OAuth Device flow)
53-- `deploy` command with no params
54-- `push` command
55-- Templates for databases (mysql, postgresql, redis, etc.)
53+- [ ] Bug fixes
54+- [x] Refined CLI to backend authentication process (utilizing GitHub OAuth Device flow)
55+- [x] `push` command
56+- [ ] Templates for databases (mysql, postgresql, redis, etc.)
5657
5758 Have suggestions? Feel free to open an issue!
5859
@@ -13,16 +13,22 @@ Gordon is a tool written in Go that aims to simplify the deployment of your cont
13 13
14 ## **Key Features**14 ## **Key Features**
15 15
16-- **Ease of use**: Deploy container images effortlessly using the command **`gordon deploy`**.16+- **Ease of use**:
17-- **Self-Hosted**: Operates within your existing self-hosted environment and don't interfere with your setup.17+ - Push your container images effortlessly using the **`gordon push`** command. A container creation URL is generated upon successful push.
18+
19+ ![Demo Push](assets/vhs/demo_push.gif?raw=true)
20+
21+ - Deploy your web applications quickly with **`gordon deploy`**.
22+
23+ ![Demo Deploy](assets/vhs/demo_deploy.gif?raw=true)
24+
25+- **Self-Hosted**: Operates within your existing self-hosted environment without interfering with your setup.
18 - **Self-Updated**: The client can update itself to the latest version with `gordon update`. The backend is updated by pulling the latest image from ghcr.io.26 - **Self-Updated**: The client can update itself to the latest version with `gordon update`. The backend is updated by pulling the latest image from ghcr.io.
19 - **Minimal WebUI**: Provides a simple web UI to manage your deployments, domains, exposed ports. Using a very minimal stack (sqlite3, Go templates, HTMX and Tailwind CSS).27 - **Minimal WebUI**: Provides a simple web UI to manage your deployments, domains, exposed ports. Using a very minimal stack (sqlite3, Go templates, HTMX and Tailwind CSS).
20 - **Simple authentication**: Use GitHub OAuth for the web UI and OAuth 2.0 device authorization grant (device flow) for the CLI client.28 - **Simple authentication**: Use GitHub OAuth for the web UI and OAuth 2.0 device authorization grant (device flow) for the CLI client.
21 - **Automated Routing**: Collaborates with Traefik to automatically route your application to your desired domain or subdomain.29 - **Automated Routing**: Collaborates with Traefik to automatically route your application to your desired domain or subdomain.
22 - **One binary**: Gordon follows the Golang philosophy of keeping things simple, offering a single binary for all functionalities.30 - **One binary**: Gordon follows the Golang philosophy of keeping things simple, offering a single binary for all functionalities.
23 31
24-![Demo Deploy](assets/vhs/demo_deploy.gif?raw=true)
25-
26 ## **Why ?**32 ## **Why ?**
27 33
28 I needed a simple tool that would automate the process of quickly spin up my web apps and preferably not on someone else's computer. And since I wanted to learn Go, I decided to build it myself.34 I needed a simple tool that would automate the process of quickly spin up my web apps and preferably not on someone else's computer. And since I wanted to learn Go, I decided to build it myself.
@@ -44,15 +50,10 @@ I also want to emphasize that I am far from being a Go expert yet. Hence, if you
44 50
45 ## **Roadmap beyond 0.1**51 ## **Roadmap beyond 0.1**
46 52
47-- Bug fixes (obviously)53+- [ ] Bug fixes
48-- Add tests54+- [x] Refined CLI to backend authentication process (utilizing GitHub OAuth Device flow)
49-- Better error handling and logging55+- [x] `push` command
50-- Sexier WebUI with more features while keeping it simple (spa)56+- [ ] Templates for databases (mysql, postgresql, redis, etc.)
51-- Sexier CLI (💕 [Charm](https://github.com/charmbracelet))
52-- Refined CLI to backend authentication process (utilizing GitHub OAuth Device flow)
53-- `deploy` command with no params
54-- `push` command
55-- Templates for databases (mysql, postgresql, redis, etc.)
56 57
57 Have suggestions? Feel free to open an issue!58 Have suggestions? Feel free to open an issue!
58 59
M assets/vhs/demo_deploy.gif +0 -0 binary file: no text diff

binary file: no text diff

R assets/vhs/demo.tape → assets/vhs/demo_deploy.tape +2 -2 renamed, 99% similar
@@ -60,10 +60,10 @@ Require curl
6060
6161 Set TypingSpeed 75ms
6262 Set Shell "bash"
63-Set FontSize 19
63+Set FontSize 17
6464 Set FontFamily "FiraCode Nerd Font"
6565 Set Width 1200
66-Set Height 500
66+Set Height 300
6767
6868 Type "gordon"
6969 Sleep 1
@@ -60,10 +60,10 @@ Require curl
60 60
61 Set TypingSpeed 75ms61 Set TypingSpeed 75ms
62 Set Shell "bash"62 Set Shell "bash"
63-Set FontSize 1963+Set FontSize 17
64 Set FontFamily "FiraCode Nerd Font"64 Set FontFamily "FiraCode Nerd Font"
65 Set Width 120065 Set Width 1200
66-Set Height 50066+Set Height 300
67 67
68 Type "gordon"68 Type "gordon"
69 Sleep 169 Sleep 1
A assets/vhs/demo_push.gif +0 -0 binary file: no text diff

binary file: no text diff

A assets/vhs/demo_push.tape +77 -0
@@ -0,0 +1,77 @@
1+# VHS documentation
2+#
3+# Output:
4+# Output <path>.gif Create a GIF output at the given <path>
5+# Output <path>.mp4 Create an MP4 output at the given <path>
6+# Output <path>.webm Create a WebM output at the given <path>
7+#
8+# Require:
9+# Require <string> Ensure a program is on the $PATH to proceed
10+#
11+# Settings:
12+# Set FontSize <number> Set the font size of the terminal
13+# Set FontFamily <string> Set the font family of the terminal
14+# Set Height <number> Set the height of the terminal
15+# Set Width <number> Set the width of the terminal
16+# Set LetterSpacing <float> Set the font letter spacing (tracking)
17+# Set LineHeight <float> Set the font line height
18+# Set LoopOffset <float>% Set the starting frame offset for the GIF loop
19+# Set Theme <json|string> Set the theme of the terminal
20+# Set Padding <number> Set the padding of the terminal
21+# Set Framerate <number> Set the framerate of the recording
22+# Set PlaybackSpeed <float> Set the playback speed of the recording
23+# Set MarginFill <file|#000000> Set the file or color the margin will be filled with.
24+# Set Margin <number> Set the size of the margin. Has no effect if MarginFill isn't set.
25+# Set BorderRadius <number> Set terminal border radius, in pixels.
26+# Set WindowBar <string> Set window bar type. (one of: Rings, RingsRight, Colorful, ColorfulRight)
27+# Set WindowBarSize <number> Set window bar size, in pixels. Default is 40.
28+# Set TypingSpeed <time> Set the typing speed of the terminal. Default is 50ms.
29+#
30+# Sleep:
31+# Sleep <time> Sleep for a set amount of <time> in seconds
32+#
33+# Type:
34+# Type[@<time>] "<characters>" Type <characters> into the terminal with a
35+# <time> delay between each character
36+#
37+# Keys:
38+# Backspace[@<time>] [number] Press the Backspace key
39+# Down[@<time>] [number] Press the Down key
40+# Enter[@<time>] [number] Press the Enter key
41+# Space[@<time>] [number] Press the Space key
42+# Tab[@<time>] [number] Press the Tab key
43+# Left[@<time>] [number] Press the Left Arrow key
44+# Right[@<time>] [number] Press the Right Arrow key
45+# Up[@<time>] [number] Press the Up Arrow key
46+# Down[@<time>] [number] Press the Down Arrow key
47+# PageUp[@<time>] [number] Press the Page Up key
48+# PageDown[@<time>] [number] Press the Page Down key
49+# Ctrl+<key> Press the Control key + <key> (e.g. Ctrl+C)
50+#
51+# Display:
52+# Hide Hide the subsequent commands from the output
53+# Show Show the subsequent commands in the output
54+
55+Output demo_push.gif
56+
57+Require echo
58+Require gordon
59+Require curl
60+
61+Set TypingSpeed 75ms
62+Set Shell "bash"
63+Set FontSize 17
64+Set FontFamily "FiraCode Nerd Font"
65+Set Width 1200
66+Set Height 300
67+
68+Type "gordon"
69+Sleep 1
70+Space
71+Type "push"
72+Sleep 1
73+Space
74+Type "bnema/go-helloworld:latest"
75+Enter
76+
77+Sleep 15
@@ -0,0 +1,77 @@
1+# VHS documentation
2+#
3+# Output:
4+# Output <path>.gif Create a GIF output at the given <path>
5+# Output <path>.mp4 Create an MP4 output at the given <path>
6+# Output <path>.webm Create a WebM output at the given <path>
7+#
8+# Require:
9+# Require <string> Ensure a program is on the $PATH to proceed
10+#
11+# Settings:
12+# Set FontSize <number> Set the font size of the terminal
13+# Set FontFamily <string> Set the font family of the terminal
14+# Set Height <number> Set the height of the terminal
15+# Set Width <number> Set the width of the terminal
16+# Set LetterSpacing <float> Set the font letter spacing (tracking)
17+# Set LineHeight <float> Set the font line height
18+# Set LoopOffset <float>% Set the starting frame offset for the GIF loop
19+# Set Theme <json|string> Set the theme of the terminal
20+# Set Padding <number> Set the padding of the terminal
21+# Set Framerate <number> Set the framerate of the recording
22+# Set PlaybackSpeed <float> Set the playback speed of the recording
23+# Set MarginFill <file|#000000> Set the file or color the margin will be filled with.
24+# Set Margin <number> Set the size of the margin. Has no effect if MarginFill isn't set.
25+# Set BorderRadius <number> Set terminal border radius, in pixels.
26+# Set WindowBar <string> Set window bar type. (one of: Rings, RingsRight, Colorful, ColorfulRight)
27+# Set WindowBarSize <number> Set window bar size, in pixels. Default is 40.
28+# Set TypingSpeed <time> Set the typing speed of the terminal. Default is 50ms.
29+#
30+# Sleep:
31+# Sleep <time> Sleep for a set amount of <time> in seconds
32+#
33+# Type:
34+# Type[@<time>] "<characters>" Type <characters> into the terminal with a
35+# <time> delay between each character
36+#
37+# Keys:
38+# Backspace[@<time>] [number] Press the Backspace key
39+# Down[@<time>] [number] Press the Down key
40+# Enter[@<time>] [number] Press the Enter key
41+# Space[@<time>] [number] Press the Space key
42+# Tab[@<time>] [number] Press the Tab key
43+# Left[@<time>] [number] Press the Left Arrow key
44+# Right[@<time>] [number] Press the Right Arrow key
45+# Up[@<time>] [number] Press the Up Arrow key
46+# Down[@<time>] [number] Press the Down Arrow key
47+# PageUp[@<time>] [number] Press the Page Up key
48+# PageDown[@<time>] [number] Press the Page Down key
49+# Ctrl+<key> Press the Control key + <key> (e.g. Ctrl+C)
50+#
51+# Display:
52+# Hide Hide the subsequent commands from the output
53+# Show Show the subsequent commands in the output
54+
55+Output demo_push.gif
56+
57+Require echo
58+Require gordon
59+Require curl
60+
61+Set TypingSpeed 75ms
62+Set Shell "bash"
63+Set FontSize 17
64+Set FontFamily "FiraCode Nerd Font"
65+Set Width 1200
66+Set Height 300
67+
68+Type "gordon"
69+Sleep 1
70+Space
71+Type "push"
72+Sleep 1
73+Space
74+Type "bnema/go-helloworld:latest"
75+Enter
76+
77+Sleep 15

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 7

Tags 106

↑↓ moveenter openesc close