1diff --git a/.gitignore b/.gitignore
2index 8c71f011f1739d776207da84cad9867627fbdf79..4b42cf2fd34fd7d4927c4e97337add32d6df0d3f 100644
3--- a/.gitignore
4+++ b/.gitignore
5@@ -1,5 +1,5 @@
6 vendor/
7-static/
8+static/main.css
9 bin/
10 media_cache/
11 templates/*.qtpl.go
12diff --git a/cmd/server/main.go b/cmd/server/main.go
13index 8f163dfd6e4f2471f99d51b530cd816a0f184ebf..1591102b51c5ac723daf3b980f721f078b4f954c 100644
14--- a/cmd/server/main.go
15+++ b/cmd/server/main.go
16@@ -16,7 +16,6 @@ "gorm.io/driver/postgres"
17 "gorm.io/driver/sqlite"
18 "gorm.io/gorm"
19
20- "git.sr.ht/~gabrielgio/img"
21 "git.sr.ht/~gabrielgio/img/pkg/database/localfs"
22 "git.sr.ht/~gabrielgio/img/pkg/database/repository"
23 "git.sr.ht/~gabrielgio/img/pkg/database/sql"
24@@ -25,6 +24,7 @@ "git.sr.ht/~gabrielgio/img/pkg/service"
25 "git.sr.ht/~gabrielgio/img/pkg/view"
26 "git.sr.ht/~gabrielgio/img/pkg/worker"
27 "git.sr.ht/~gabrielgio/img/pkg/worker/scanner"
28+ "git.sr.ht/~gabrielgio/img/static"
29 )
30
31 func main() {
32@@ -72,7 +72,7 @@ panic("failed to decode key database: " + err.Error())
33 }
34
35 r := router.New()
36- r.GET("/static/{filepath:*}", ext.FileServer(img.StaticFS, "static/"))
37+ r.GET("/static/{filepath:*}", ext.FileServer(static.Static, "static/"))
38
39 // repository
40 var (
41diff --git a/static.go b/static.go
42deleted file mode 100644
43index 06f1459520097997f642ad087301207e4892f2db..0000000000000000000000000000000000000000
44--- a/static.go
45+++ /dev/null
46@@ -1,10 +0,0 @@
47-package img
48-
49-import (
50- "embed"
51-)
52-
53-var (
54- //go:embed static/*
55- StaticFS embed.FS
56-)
57diff --git a/static/square.svg b/static/square.svg
58new file mode 100644
59index 0000000000000000000000000000000000000000..31c56cc0ff7db1e176fb266212bbf22af204de21
60--- /dev/null
61+++ b/static/square.svg
62@@ -0,0 +1,199 @@
63+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
64+
65+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
66+
67+<svg fill="#000000" width="800px" height="800px" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
68+
69+<rect id="Icons" x="-1152" y="-64" width="1280" height="800" style="fill:none;"/>
70+
71+<g id="Icons1" serif:id="Icons">
72+
73+<g id="Strike">
74+
75+</g>
76+
77+<g id="H1">
78+
79+</g>
80+
81+<g id="H2">
82+
83+</g>
84+
85+<g id="H3">
86+
87+</g>
88+
89+<g id="list-ul">
90+
91+</g>
92+
93+<g id="hamburger-1">
94+
95+</g>
96+
97+<g id="hamburger-2">
98+
99+</g>
100+
101+<g id="list-ol">
102+
103+</g>
104+
105+<g id="list-task">
106+
107+</g>
108+
109+<g id="trash">
110+
111+</g>
112+
113+<g id="vertical-menu">
114+
115+</g>
116+
117+<g id="horizontal-menu">
118+
119+</g>
120+
121+<g id="sidebar-2">
122+
123+</g>
124+
125+<g id="Pen">
126+
127+</g>
128+
129+<g id="Pen1" serif:id="Pen">
130+
131+</g>
132+
133+<g id="clock">
134+
135+</g>
136+
137+<g id="external-link">
138+
139+</g>
140+
141+<g id="hr">
142+
143+</g>
144+
145+<g id="info">
146+
147+</g>
148+
149+<g id="warning">
150+
151+</g>
152+
153+<g id="plus-circle">
154+
155+</g>
156+
157+<g id="minus-circle">
158+
159+</g>
160+
161+<g id="vue">
162+
163+</g>
164+
165+<g id="cog">
166+
167+</g>
168+
169+<g id="logo">
170+
171+</g>
172+
173+<g id="radio-check">
174+
175+</g>
176+
177+<g id="eye-slash">
178+
179+</g>
180+
181+<g id="eye">
182+
183+</g>
184+
185+<g id="toggle-off">
186+
187+</g>
188+
189+<path id="square" d="M50.005,56l-35.989,0c-3.309,0 -5.995,-2.686 -5.995,-5.995l0,-36.011c0,-3.308 2.686,-5.995 5.995,-5.995l35.989,0c3.309,0 5.995,2.687 5.995,5.995l0,36.011c0,3.309 -2.686,5.995 -5.995,5.995Zm-0.993,-4.001c1.65,0 2.989,-1.339 2.989,-2.989l0,-34.021c0,-1.649 -1.339,-2.989 -2.989,-2.989l-34.003,0c-1.65,0 -2.989,1.34 -2.989,2.989l0,34.021c0,1.65 1.339,2.989 2.989,2.989l34.003,0Z"/>
190+
191+<g id="shredder">
192+
193+</g>
194+
195+<g id="spinner--loading--dots-" serif:id="spinner [loading, dots]">
196+
197+</g>
198+
199+<g id="react">
200+
201+</g>
202+
203+<g id="check-selected">
204+
205+</g>
206+
207+<g id="turn-off">
208+
209+</g>
210+
211+<g id="code-block">
212+
213+</g>
214+
215+<g id="user">
216+
217+</g>
218+
219+<g id="coffee-bean">
220+
221+</g>
222+
223+<g id="coffee-beans">
224+
225+<g id="coffee-bean1" serif:id="coffee-bean">
226+
227+</g>
228+
229+</g>
230+
231+<g id="coffee-bean-filled">
232+
233+</g>
234+
235+<g id="coffee-beans-filled">
236+
237+<g id="coffee-bean2" serif:id="coffee-bean">
238+
239+</g>
240+
241+</g>
242+
243+<g id="clipboard">
244+
245+</g>
246+
247+<g id="clipboard-paste">
248+
249+</g>
250+
251+<g id="clipboard-copy">
252+
253+</g>
254+
255+<g id="Layer1">
256+
257+</g>
258+
259+</g>
260+
261+</svg>
262diff --git a/static/static.go b/static/static.go
263new file mode 100644
264index 0000000000000000000000000000000000000000..ada043472dff4bf3bb13f74d3e2bdb5fdbc10763
265--- /dev/null
266+++ b/static/static.go
267@@ -0,0 +1,6 @@
268+package static
269+
270+import "embed"
271+
272+//go:embed *
273+var Static embed.FS