Compare commits

...

124 commits

Author SHA1 Message Date
2321c5e5ab
Checkbox fix 2
All checks were successful
Linting and checking code / get-version (push) Successful in 2s
Build and deploy preview site / check-tag (push) Successful in 2s
Linting and checking code / astro-check (push) Successful in 12s
Build and deploy preview site / checking (push) Successful in 13s
Build and deploy preview site / build-site (push) Successful in 1m4s
Build and deploy preview site / run-unlighthouse (push) Successful in 0s
Build and deploy preview site / create-release (push) Successful in 6s
Build and deploy preview site / auto-deploy-dockge (push) Successful in 8s
2024-10-30 21:41:38 +01:00
6ff1e5ec1c
JS version
All checks were successful
Linting and checking code / get-version (push) Successful in 2s
Build and deploy preview site / check-tag (push) Successful in 2s
Linting and checking code / astro-check (push) Successful in 14s
Build and deploy preview site / checking (push) Successful in 14s
Build and deploy preview site / build-site (push) Successful in 1m5s
Build and deploy preview site / run-unlighthouse (push) Successful in 0s
Build and deploy preview site / create-release (push) Successful in 6s
Build and deploy preview site / auto-deploy-dockge (push) Successful in 5s
2024-10-30 21:24:21 +01:00
7a3c4f14ae
Checkbox lag fix
All checks were successful
Linting and checking code / get-version (push) Successful in 2s
Build and deploy preview site / check-tag (push) Successful in 2s
Linting and checking code / astro-check (push) Successful in 25s
Build and deploy preview site / checking (push) Successful in 21s
Build and deploy preview site / build-site (push) Successful in 1m16s
Build and deploy preview site / run-unlighthouse (push) Successful in 0s
Build and deploy preview site / create-release (push) Successful in 6s
Build and deploy preview site / auto-deploy-dockge (push) Successful in 23s
2024-10-30 20:51:09 +01:00
f9fb025622
Menu Fix 2
Some checks failed
Linting and checking code / get-version (push) Successful in 2s
Build and deploy preview site / check-tag (push) Successful in 2s
Linting and checking code / astro-check (push) Successful in 17s
Build and deploy preview site / checking (push) Successful in 21s
Build and deploy preview site / build-site (push) Successful in 1m3s
Build and deploy preview site / run-unlighthouse (push) Successful in 0s
Build and deploy preview site / create-release (push) Successful in 6s
Build and deploy preview site / auto-deploy-dockge (push) Failing after 31s
2024-10-30 20:45:41 +01:00
cc885e7740
Menu Fix
All checks were successful
Linting and checking code / get-version (push) Successful in 2s
Build and deploy preview site / check-tag (push) Successful in 2s
Linting and checking code / astro-check (push) Successful in 18s
Build and deploy preview site / checking (push) Successful in 16s
Build and deploy preview site / build-site (push) Successful in 1m9s
Build and deploy preview site / run-unlighthouse (push) Successful in 0s
Build and deploy preview site / create-release (push) Successful in 6s
Build and deploy preview site / auto-deploy-dockge (push) Successful in 26s
2024-10-30 20:41:11 +01:00
7be69a0ce5
Accessibility
All checks were successful
Linting and checking code / get-version (push) Successful in 2s
Build and deploy preview site / check-tag (push) Successful in 2s
Linting and checking code / astro-check (push) Successful in 18s
Build and deploy preview site / checking (push) Successful in 18s
Build and deploy preview site / build-site (push) Successful in 1m6s
Build and deploy preview site / run-unlighthouse (push) Successful in 0s
Build and deploy preview site / create-release (push) Successful in 6s
Build and deploy preview site / auto-deploy-dockge (push) Successful in 17s
2024-10-30 20:36:42 +01:00
99fe35aa23
Dropdown change on mobile
All checks were successful
Linting and checking code / get-version (push) Successful in 3s
Build and deploy preview site / check-tag (push) Successful in 2s
Linting and checking code / astro-check (push) Successful in 20s
Build and deploy preview site / checking (push) Successful in 18s
Build and deploy preview site / build-site (push) Successful in 1m5s
Build and deploy preview site / run-unlighthouse (push) Successful in 0s
Build and deploy preview site / create-release (push) Successful in 6s
Build and deploy preview site / auto-deploy-dockge (push) Successful in 7s
2024-10-30 20:28:45 +01:00
d2dddbeb2a
Satisfying
All checks were successful
Linting and checking code / get-version (push) Successful in 2s
Linting and checking code / astro-check (push) Successful in 11s
Build and deploy preview site / check-tag (push) Successful in 2s
Build and deploy preview site / checking (push) Successful in 12s
Build and deploy preview site / build-site (push) Successful in 58s
Build and deploy preview site / run-unlighthouse (push) Successful in 0s
Build and deploy preview site / create-release (push) Successful in 6s
Build and deploy preview site / auto-deploy-dockge (push) Successful in 5s
2024-10-29 22:17:38 +01:00
7222d1c58b
Ver Bump
All checks were successful
Linting and checking code / get-version (push) Successful in 2s
Linting and checking code / astro-check (push) Successful in 17s
Build and deploy preview site / check-tag (push) Successful in 2s
Build and deploy preview site / checking (push) Successful in 15s
Build and deploy preview site / build-site (push) Successful in 1m7s
Build and deploy preview site / run-unlighthouse (push) Successful in 0s
Build and deploy preview site / create-release (push) Successful in 6s
Build and deploy preview site / auto-deploy-dockge (push) Successful in 22s
2024-10-29 21:03:12 +01:00
d9e4f5b5f9
Social restructure 2024-10-29 21:02:37 +01:00
19e7d02520
Birthday and small fix
All checks were successful
Linting and checking code / get-version (push) Successful in 2s
Linting and checking code / astro-check (push) Successful in 13s
Build and deploy preview site / check-tag (push) Successful in 2s
Build and deploy preview site / checking (push) Successful in 14s
Build and deploy preview site / build-site (push) Successful in 1m22s
Build and deploy preview site / run-unlighthouse (push) Successful in 0s
Build and deploy preview site / auto-deploy-dockge (push) Successful in 3s
Build and deploy preview site / create-release (push) Successful in 7s
2024-10-27 14:58:32 +01:00
fa88fede29
Subpixel fix
All checks were successful
Linting and checking code / get-version (push) Successful in 2s
Linting and checking code / astro-check (push) Successful in 12s
Build and deploy preview site / check-tag (push) Successful in 3s
Build and deploy preview site / checking (push) Successful in 12s
Build and deploy preview site / build-site (push) Successful in 1m8s
Build and deploy preview site / run-unlighthouse (push) Successful in 0s
Build and deploy preview site / create-release (push) Successful in 6s
Build and deploy preview site / auto-deploy-dockge (push) Successful in 19s
2024-10-26 22:51:03 +02:00
a77312c17c
Restructure and extra stuff
All checks were successful
Linting and checking code / get-version (push) Successful in 2s
Linting and checking code / astro-check (push) Successful in 13s
Build and deploy preview site / check-tag (push) Successful in 2s
Build and deploy preview site / checking (push) Successful in 12s
Build and deploy preview site / build-site (push) Successful in 1m12s
Build and deploy preview site / run-unlighthouse (push) Successful in 0s
Build and deploy preview site / create-release (push) Successful in 6s
Build and deploy preview site / auto-deploy-dockge (push) Successful in 21s
2024-10-26 22:41:24 +02:00
b0fc3a05c5
First about version and rescaling
All checks were successful
Linting and checking code / get-version (push) Successful in 2s
Linting and checking code / astro-check (push) Successful in 12s
Build and deploy preview site / check-tag (push) Successful in 2s
Build and deploy preview site / checking (push) Successful in 12s
Build and deploy preview site / build-site (push) Successful in 1m11s
Build and deploy preview site / run-unlighthouse (push) Successful in 0s
Build and deploy preview site / auto-deploy-dockge (push) Successful in 3s
Build and deploy preview site / create-release (push) Successful in 5s
2024-10-26 17:37:35 +02:00
e717b4b8dd
Vari in name
All checks were successful
Linting and checking code / get-version (push) Successful in 2s
Build and deploy preview site / check-tag (push) Successful in 2s
Linting and checking code / astro-check (push) Successful in 14s
Build and deploy preview site / checking (push) Successful in 12s
Build and deploy preview site / build-site (push) Successful in 1m8s
Build and deploy preview site / run-unlighthouse (push) Successful in 0s
Build and deploy preview site / create-release (push) Successful in 6s
Build and deploy preview site / auto-deploy-dockge (push) Successful in 24s
2024-10-26 14:29:24 +02:00
86b6263ec1
Fixed spaces
All checks were successful
Linting and checking code / get-version (push) Successful in 2s
Build and deploy preview site / check-tag (push) Successful in 2s
Linting and checking code / astro-check (push) Successful in 12s
Build and deploy preview site / checking (push) Successful in 12s
Build and deploy preview site / build-site (push) Successful in 1m6s
Build and deploy preview site / run-unlighthouse (push) Successful in 0s
Build and deploy preview site / create-release (push) Successful in 5s
Build and deploy preview site / auto-deploy-dockge (push) Successful in 21s
2024-10-26 14:24:59 +02:00
49f270974f
runname?
All checks were successful
Linting and checking code / get-version (push) Successful in 2s
Linting and checking code / astro-check (push) Successful in 13s
2024-10-26 14:16:28 +02:00
c3dc83ff1d
Test run name
All checks were successful
Linting and checking code / get-version (push) Successful in 2s
Linting and checking code / astro-check (push) Successful in 11s
Build and deploy preview site / check-tag (push) Successful in 2s
Build and deploy preview site / checking (push) Successful in 13s
Build and deploy preview site / build-site (push) Successful in 1m11s
Build and deploy preview site / run-unlighthouse (push) Successful in 0s
Build and deploy preview site / create-release (push) Successful in 5s
Build and deploy preview site / auto-deploy-dockge (push) Successful in 26s
2024-10-26 14:14:10 +02:00
1945b41b4b
Link markdown, robots and contact vars
All checks were successful
/ get-version (push) Successful in 3s
/ astro-check (push) Successful in 12s
2024-10-26 13:51:37 +02:00
b32fa9e4ad
Further redesign 2
All checks were successful
/ get-version (push) Successful in 3s
/ astro-check (push) Successful in 12s
/ check-tag (push) Successful in 2s
/ checking (push) Successful in 11s
/ create-release (push) Successful in 6s
/ auto-deploy-dockge (push) Successful in 19s
/ run-unlighthouse (push) Successful in 0s
/ build-site (push) Successful in 1m13s
2024-10-26 00:22:08 +02:00
afe18e37b6
Further redesign
All checks were successful
/ get-version (push) Successful in 3s
/ astro-check (push) Successful in 12s
/ checking (push) Successful in 14s
/ build-site (push) Successful in 1m20s
/ check-tag (push) Successful in 2s
/ run-unlighthouse (push) Successful in 0s
/ create-release (push) Successful in 7s
/ auto-deploy-dockge (push) Successful in 28s
2024-10-25 15:26:25 +02:00
4eb390d0b1
unlighthouse change + accessibility
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 14s
/ check-tag (push) Successful in 2s
/ checking (push) Successful in 14s
/ build-site (push) Successful in 1m11s
/ create-release (push) Successful in 6s
/ auto-deploy-dockge (push) Successful in 23s
/ run-unlighthouse (push) Successful in 0s
2024-10-24 20:07:39 +02:00
7a0863d9a2
Find more pages and stuff
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 13s
/ build-site (push) Successful in 1m0s
/ create-release (push) Successful in 5s
/ run-unlighthouse (push) Successful in 0s
/ check-tag (push) Successful in 2s
/ checking (push) Successful in 12s
/ auto-deploy-dockge (push) Successful in 18s
2024-10-24 19:12:56 +02:00
20c6753ee1
Ficked package-lock.json
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 13s
/ checking (push) Successful in 13s
/ check-tag (push) Successful in 2s
/ create-release (push) Successful in 6s
/ build-site (push) Successful in 1m8s
/ run-unlighthouse (push) Successful in 0s
/ auto-deploy-dockge (push) Successful in 6s
2024-10-24 19:03:11 +02:00
cdda005d47
Fixed package-lock
Some checks failed
/ astro-check (push) Failing after 8s
/ get-version (push) Successful in 2s
/ check-tag (push) Successful in 2s
/ checking (push) Failing after 8s
/ build-site (push) Has been skipped
/ create-release (push) Has been skipped
/ auto-deploy-dockge (push) Has been skipped
/ run-unlighthouse (push) Has been skipped
2024-10-24 18:58:35 +02:00
34e24346d1
Colors and other stuff
Some checks failed
/ get-version (push) Successful in 3s
/ astro-check (push) Failing after 9s
/ checking (push) Failing after 8s
/ create-release (push) Has been skipped
/ check-tag (push) Successful in 2s
/ build-site (push) Has been skipped
/ auto-deploy-dockge (push) Has been skipped
/ run-unlighthouse (push) Has been skipped
2024-10-24 18:52:33 +02:00
aab26e63b2
Fixed TA site part
Some checks failed
/ get-version (push) Successful in 3s
/ astro-check (push) Successful in 13s
/ check-tag (push) Failing after 2s
/ checking (push) Has been skipped
/ build-site (push) Successful in 1m10s
/ create-release (push) Successful in 6s
/ run-unlighthouse (push) Successful in 0s
/ auto-deploy-dockge (push) Successful in 27s
2024-10-23 17:28:06 +02:00
5dfbd2cccd
PageSpeed Insights config
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 11s
/ check-tag (push) Successful in 2s
/ checking (push) Successful in 11s
/ build-site (push) Successful in 1m8s
/ run-unlighthouse (push) Successful in 0s
/ create-release (push) Successful in 5s
/ auto-deploy-dockge (push) Successful in 16s
2024-10-23 00:20:44 +02:00
8c425d8690
More samples
All checks were successful
/ astro-check (push) Successful in 12s
/ get-version (push) Successful in 2s
/ check-tag (push) Successful in 3s
/ checking (push) Successful in 11s
/ create-release (push) Successful in 6s
/ auto-deploy-dockge (push) Successful in 15s
/ build-site (push) Successful in 1m7s
/ run-unlighthouse (push) Successful in 0s
2024-10-23 00:01:07 +02:00
4a4d5434f5
try to cheat LCP
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 13s
/ run-unlighthouse (push) Successful in 0s
/ check-tag (push) Successful in 2s
/ checking (push) Successful in 12s
/ build-site (push) Successful in 1m3s
/ auto-deploy-dockge (push) Successful in 3s
/ create-release (push) Successful in 5s
2024-10-22 23:55:30 +02:00
d6fb3bccbe
Re-enable prefetch because
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ check-tag (push) Successful in 2s
/ checking (push) Successful in 11s
/ auto-deploy-dockge (push) Successful in 24s
/ build-site (push) Successful in 1m7s
/ run-unlighthouse (push) Successful in 0s
/ create-release (push) Successful in 6s
2024-10-22 23:38:26 +02:00
0e637384b6
Eager load less
All checks were successful
/ astro-check (push) Successful in 11s
/ get-version (push) Successful in 2s
/ auto-deploy-dockge (push) Successful in 21s
/ check-tag (push) Successful in 2s
/ checking (push) Successful in 12s
/ build-site (push) Successful in 1m12s
/ run-unlighthouse (push) Successful in 0s
/ create-release (push) Successful in 5s
2024-10-22 23:29:08 +02:00
f4e8a39c08
Made favicon smaller, removed prefetch
All checks were successful
/ astro-check (push) Successful in 11s
/ get-version (push) Successful in 2s
/ check-tag (push) Successful in 2s
/ checking (push) Successful in 12s
/ run-unlighthouse (push) Successful in 0s
/ create-release (push) Successful in 6s
/ auto-deploy-dockge (push) Successful in 17s
/ build-site (push) Successful in 1m12s
2024-10-22 23:18:30 +02:00
cf84c65beb
Made favicon smaller, removed prefetch 2024-10-22 23:18:17 +02:00
90ac6d527c
Test prefetch
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ check-tag (push) Successful in 2s
/ checking (push) Successful in 11s
/ build-site (push) Successful in 1m0s
/ create-release (push) Successful in 5s
/ run-unlighthouse (push) Successful in 0s
/ auto-deploy-dockge (push) Successful in 3s
2024-10-22 23:07:34 +02:00
da582980b9
Curl index for availability
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 11s
/ check-tag (push) Successful in 2s
/ checking (push) Successful in 11s
/ run-unlighthouse (push) Successful in 0s
/ create-release (push) Successful in 5s
/ auto-deploy-dockge (push) Successful in 18s
/ build-site (push) Successful in 1m11s
2024-10-22 22:58:43 +02:00
c0588ee760
Finding the best font solution
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ check-tag (push) Successful in 2s
/ checking (push) Successful in 12s
/ build-site (push) Successful in 1m6s
/ create-release (push) Successful in 5s
/ run-unlighthouse (push) Successful in 0s
/ auto-deploy-dockge (push) Successful in 15s
2024-10-22 22:54:02 +02:00
e11130ce1a
mobile and images
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 11s
/ checking (push) Successful in 25s
/ build-site (push) Successful in 1m13s
/ run-unlighthouse (push) Successful in 0s
/ create-release (push) Successful in 5s
/ auto-deploy-dockge (push) Successful in 22s
/ check-tag (push) Successful in 2s
2024-10-22 22:18:33 +02:00
500080be9f
sed and desktop
All checks were successful
/ astro-check (push) Successful in 13s
/ get-version (push) Successful in 2s
/ check-tag (push) Successful in 3s
/ checking (push) Successful in 11s
/ build-site (push) Successful in 1m10s
/ run-unlighthouse (push) Successful in 0s
/ create-release (push) Successful in 7s
/ auto-deploy-dockge (push) Successful in 24s
2024-10-22 22:12:02 +02:00
9922507975
fixed deps
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 21s
/ auto-deploy-dockge (push) Successful in 19s
/ check-tag (push) Successful in 3s
/ checking (push) Successful in 17s
/ build-site (push) Successful in 1m10s
/ create-release (push) Successful in 6s
/ run-unlighthouse (push) Successful in 0s
2024-10-22 21:58:06 +02:00
e4252aa6dc
Not preloading fonts
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 37s
/ run-unlighthouse (push) Has been skipped
/ checking (push) Successful in 40s
/ build-site (push) Failing after 46s
/ create-release (push) Has been skipped
/ auto-deploy-dockge (push) Has been skipped
/ check-tag (push) Successful in 2s
2024-10-22 21:54:18 +02:00
4cb0f2db10
Image sizes 2
All checks were successful
/ astro-check (push) Successful in 13s
/ get-version (push) Successful in 2s
/ check-tag (push) Successful in 2s
/ build-site (push) Successful in 1m12s
/ run-unlighthouse (push) Successful in 0s
/ auto-deploy-dockge (push) Successful in 19s
/ checking (push) Successful in 13s
/ create-release (push) Successful in 56s
2024-10-22 21:34:18 +02:00
031d057811
Image sizes
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 18s
/ build-site (push) Successful in 1m9s
/ auto-deploy-dockge (push) Successful in 27s
/ check-tag (push) Successful in 2s
/ checking (push) Successful in 18s
/ create-release (push) Successful in 30s
/ run-unlighthouse (push) Successful in 0s
2024-10-22 21:15:24 +02:00
aaa9611b1c
Version bump
All checks were successful
/ astro-check (push) Successful in 17s
/ get-version (push) Successful in 2s
/ checking (push) Successful in 16s
/ check-tag (push) Successful in 2s
/ run-unlighthouse (push) Successful in 0s
/ build-site (push) Successful in 1m18s
/ create-release (push) Successful in 6s
/ auto-deploy-dockge (push) Successful in 22s
2024-10-22 20:53:09 +02:00
8e6be5ae82
Revert "Source Sets"
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 14s
This reverts commit d93d0416e5.
2024-10-22 20:51:48 +02:00
d93d0416e5
Source Sets
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 15s
/ check-tag (push) Successful in 2s
/ build-site (push) Successful in 1m11s
/ create-release (push) Successful in 6s
/ checking (push) Successful in 15s
/ run-unlighthouse (push) Successful in 0s
/ auto-deploy-dockge (push) Successful in 15s
2024-10-22 20:45:39 +02:00
564e902b69
Test with tag
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 17s
/ build-site (push) Successful in 1m8s
/ create-release (push) Successful in 5s
/ auto-deploy-dockge (push) Successful in 27s
/ run-unlighthouse (push) Successful in 0s
/ check-tag (push) Successful in 3s
/ checking (push) Successful in 18s
2024-10-22 20:00:14 +02:00
ed91be36d7
Test with tag
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 14s
2024-10-22 19:59:19 +02:00
3d729731a5
fix input
All checks were successful
/ get-version (push) Successful in 2s
/ run-unlighthouse (push) Successful in 0s
/ astro-check (push) Successful in 14s
2024-10-22 19:54:26 +02:00
2bd68c106c
fix input
All checks were successful
/ get-version (push) Successful in 2s
/ run-unlighthouse (push) Successful in 0s
/ astro-check (push) Successful in 13s
2024-10-22 19:53:51 +02:00
34421fdb76
fix payload
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 15s
/ run-unlighthouse (push) Successful in 0s
2024-10-22 19:52:16 +02:00
d906df3fec
trace2
All checks were successful
/ astro-check (push) Successful in 18s
/ get-version (push) Successful in 2s
/ run-unlighthouse (push) Successful in 0s
2024-10-22 19:50:35 +02:00
8a84de8807
trace
All checks were successful
/ run-unlighthouse (push) Successful in 0s
/ astro-check (push) Successful in 14s
/ get-version (push) Successful in 2s
2024-10-22 19:48:57 +02:00
014ea40dce
WHHAT THE ACTUAL FUCK IS WRONG WITH THOSE *******************
All checks were successful
/ get-version (push) Successful in 2s
/ run-unlighthouse (push) Successful in 0s
/ astro-check (push) Successful in 13s
2024-10-22 19:46:48 +02:00
0473c836d7
auth6
All checks were successful
/ get-version (push) Successful in 2s
/ run-unlighthouse (push) Successful in 0s
/ astro-check (push) Successful in 13s
2024-10-22 19:44:24 +02:00
3587ee38a7
auth4
All checks were successful
/ astro-check (push) Successful in 13s
/ get-version (push) Successful in 2s
/ run-unlighthouse (push) Successful in 0s
2024-10-22 19:38:09 +02:00
c0d6d8a516
auth4
Some checks failed
/ get-version (push) Successful in 2s
/ run-unlighthouse (push) Failing after 0s
/ astro-check (push) Successful in 13s
2024-10-22 19:36:56 +02:00
4387207c14
auth3
Some checks failed
/ run-unlighthouse (push) Failing after 0s
/ astro-check (push) Successful in 13s
/ get-version (push) Successful in 2s
2024-10-22 19:36:04 +02:00
f26fdbe579
auth2
All checks were successful
/ get-version (push) Successful in 2s
/ run-unlighthouse (push) Successful in 0s
/ astro-check (push) Successful in 15s
2024-10-22 19:35:02 +02:00
2696d0e146
auth
All checks were successful
/ astro-check (push) Successful in 13s
/ get-version (push) Successful in 3s
/ run-unlighthouse (push) Successful in 0s
2024-10-22 19:34:29 +02:00
0b7b7fa071
fixed ref
All checks were successful
/ run-unlighthouse (push) Successful in 0s
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 13s
2024-10-22 19:32:22 +02:00
2d07dbbbdb
Test dispatch
All checks were successful
/ get-version (push) Successful in 2s
/ run-unlighthouse (push) Successful in 0s
/ astro-check (push) Successful in 14s
2024-10-22 19:29:01 +02:00
6e3d23e8f7
work?
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ deploy-unlighthouse-files (push) Successful in 6s
/ unlighthouse (push) Successful in 1m54s
/ deploy-unlighthouse-site (push) Successful in 5s
2024-10-22 18:58:09 +02:00
86ee37e441
test stupid
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ deploy-unlighthouse-files (push) Has been cancelled
/ deploy-unlighthouse-site (push) Has been cancelled
/ unlighthouse (push) Has been cancelled
2024-10-22 18:56:16 +02:00
9f225b0708
test again
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ deploy-unlighthouse-files (push) Has been cancelled
/ deploy-unlighthouse-site (push) Has been cancelled
/ unlighthouse (push) Has been cancelled
2024-10-22 18:50:23 +02:00
4f16151149
test again
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 13s
/ deploy-unlighthouse-files (push) Has been cancelled
/ deploy-unlighthouse-site (push) Has been cancelled
/ unlighthouse (push) Has been cancelled
2024-10-22 18:45:12 +02:00
9718bc07b6
test with network setting
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 13s
/ deploy-unlighthouse-files (push) Has been cancelled
/ deploy-unlighthouse-site (push) Has been cancelled
/ unlighthouse (push) Has been cancelled
2024-10-22 18:37:13 +02:00
f82341135c
reduce
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ deploy-unlighthouse-files (push) Has been cancelled
/ deploy-unlighthouse-site (push) Has been cancelled
/ unlighthouse (push) Has been cancelled
2024-10-22 18:31:59 +02:00
acbb7489e5
Fixed url
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ deploy-unlighthouse-files (push) Has been skipped
/ unlighthouse (push) Failing after 46s
/ deploy-unlighthouse-site (push) Has been skipped
2024-10-22 18:29:59 +02:00
ab2b69aff3
Seq
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ unlighthouse (push) Failing after 46s
/ deploy-unlighthouse-files (push) Has been skipped
/ deploy-unlighthouse-site (push) Has been skipped
2024-10-22 18:28:57 +02:00
ee6c695d33
modified wait
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ deploy-unlighthouse-files (push) Has been cancelled
/ deploy-unlighthouse-site (push) Has been cancelled
/ unlighthouse (push) Has been cancelled
2024-10-22 18:26:49 +02:00
974f259804
Modified for network
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 13s
/ unlighthouse (push) Failing after 1s
/ deploy-unlighthouse-files (push) Has been skipped
/ deploy-unlighthouse-site (push) Has been skipped
2024-10-22 18:19:24 +02:00
f3ff40b6f1
localhost bind
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ deploy-unlighthouse-files (push) Has been cancelled
/ deploy-unlighthouse-site (push) Has been cancelled
/ unlighthouse (push) Has been cancelled
2024-10-22 18:14:36 +02:00
58ae955f66
workdir issue
Some checks failed
/ deploy-unlighthouse-files (push) Has been skipped
/ unlighthouse (push) Failing after 3s
/ deploy-unlighthouse-site (push) Has been skipped
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 14s
2024-10-22 18:09:50 +02:00
7948fac47a
more curl
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ deploy-unlighthouse-files (push) Has been skipped
/ unlighthouse (push) Failing after 3s
/ deploy-unlighthouse-site (push) Has been skipped
2024-10-22 18:07:29 +02:00
7ad7efe0e2
try with docker
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ unlighthouse (push) Failing after 3s
/ deploy-unlighthouse-files (push) Has been skipped
/ deploy-unlighthouse-site (push) Has been skipped
2024-10-22 17:55:25 +02:00
37a7e99e78
healthcheck + logs
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ deploy-unlighthouse-files (push) Has been skipped
/ unlighthouse (push) Failing after 3s
/ deploy-unlighthouse-site (push) Has been skipped
2024-10-22 17:54:37 +02:00
d91e9c4af5
dind
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ deploy-unlighthouse-files (push) Has been cancelled
/ deploy-unlighthouse-site (push) Has been cancelled
/ unlighthouse (push) Has been cancelled
2024-10-22 17:47:22 +02:00
45f8b2bfd8
curl v
Some checks failed
/ astro-check (push) Successful in 12s
/ get-version (push) Successful in 2s
/ deploy-unlighthouse-files (push) Has been cancelled
/ deploy-unlighthouse-site (push) Has been cancelled
/ unlighthouse (push) Has been cancelled
2024-10-22 17:42:13 +02:00
52923ad819
curl
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 11s
/ unlighthouse (push) Failing after 3s
/ deploy-unlighthouse-files (push) Has been skipped
/ deploy-unlighthouse-site (push) Has been skipped
2024-10-22 17:40:29 +02:00
e020bb1c18
healh check
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ deploy-unlighthouse-files (push) Has been cancelled
/ deploy-unlighthouse-site (push) Has been cancelled
/ unlighthouse (push) Has been cancelled
2024-10-22 17:38:05 +02:00
aad69a3e77
test localhost
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ deploy-unlighthouse-files (push) Has been cancelled
/ deploy-unlighthouse-site (push) Has been cancelled
/ unlighthouse (push) Has been cancelled
2024-10-22 17:35:31 +02:00
93ea52b3a6
Updated url
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ deploy-unlighthouse-files (push) Has been cancelled
/ deploy-unlighthouse-site (push) Has been cancelled
/ unlighthouse (push) Has been cancelled
2024-10-22 17:33:08 +02:00
4d4271a5da
Updated url
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ deploy-unlighthouse-files (push) Has been cancelled
/ deploy-unlighthouse-site (push) Has been cancelled
/ unlighthouse (push) Has been cancelled
2024-10-22 17:20:22 +02:00
1575997c4d
Updated url
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 13s
/ deploy-unlighthouse-files (push) Has been cancelled
/ deploy-unlighthouse-site (push) Has been cancelled
/ unlighthouse (push) Has been cancelled
2024-10-22 17:19:04 +02:00
3fbb0d0196
Testing ulh with service container
Some checks failed
/ get-version (push) Successful in 3s
/ astro-check (push) Successful in 13s
/ deploy-unlighthouse-files (push) Has been cancelled
/ deploy-unlighthouse-site (push) Has been cancelled
/ unlighthouse (push) Has been cancelled
2024-10-22 17:15:09 +02:00
e859576215
Revert "Dektop"
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ unlighthouse (push) Successful in 53s
/ deploy-unlighthouse-files (push) Successful in 6s
/ deploy-unlighthouse-site (push) Successful in 5s
This reverts commit 8ab6361b6d.
2024-10-21 23:05:57 +02:00
8ab6361b6d
Dektop
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 11s
/ unlighthouse (push) Successful in 53s
/ deploy-unlighthouse-files (push) Successful in 6s
/ deploy-unlighthouse-site (push) Successful in 4s
2024-10-21 23:00:29 +02:00
950eb1d9f3
Reduces Puppeteer concurrency
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 11s
/ unlighthouse (push) Successful in 52s
/ deploy-unlighthouse-files (push) Successful in 6s
/ deploy-unlighthouse-site (push) Successful in 5s
2024-10-21 22:58:02 +02:00
61ce9f8575
Test mobild
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ unlighthouse (push) Successful in 17s
/ deploy-unlighthouse-files (push) Successful in 6s
/ deploy-unlighthouse-site (push) Successful in 4s
2024-10-21 22:54:35 +02:00
3b307e48c7
Unlighthouse bump
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ unlighthouse (push) Successful in 30s
/ deploy-unlighthouse-files (push) Successful in 6s
/ deploy-unlighthouse-site (push) Successful in 5s
2024-10-21 22:48:04 +02:00
96a9c2593c
Updated for Lighthouse
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ check-tag (push) Successful in 2s
/ checking (push) Successful in 11s
/ build-site (push) Successful in 1m11s
/ create-release (push) Successful in 5s
/ auto-deploy-dockge (push) Successful in 24s
/ unlighthouse (push) Successful in 37s
/ deploy-unlighthouse-files (push) Successful in 6s
/ deploy-unlighthouse-site (push) Successful in 5s
2024-10-21 22:36:12 +02:00
1f7709031c
Continuing the redesign
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 11s
/ create-release (push) Successful in 5s
/ check-tag (push) Successful in 2s
/ checking (push) Successful in 12s
/ build-site (push) Successful in 1m13s
/ auto-deploy-dockge (push) Successful in 5s
/ unlighthouse (push) Successful in 19s
/ deploy-unlighthouse-files (push) Successful in 7s
/ deploy-unlighthouse-site (push) Successful in 4s
2024-10-21 22:23:25 +02:00
9d8493273d
Another attempt at a major redesign, but for real this time, i swear
All checks were successful
/ get-version (push) Successful in 3s
/ astro-check (push) Successful in 12s
/ check-tag (push) Successful in 2s
/ checking (push) Successful in 12s
/ build-site (push) Successful in 1m9s
/ create-release (push) Successful in 6s
/ auto-deploy-dockge (push) Successful in 21s
2024-10-21 16:57:02 +02:00
676e5e2b00
Updated dockge version
All checks were successful
/ astro-check (push) Successful in 12s
/ get-version (push) Successful in 2s
2024-10-01 23:27:27 +02:00
ab5630602d
forgejo fixes
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 13s
/ auto-deploy-dockge (push) Failing after 1s
/ create-release (push) Successful in 2m33s
/ checking (push) Successful in 13s
/ build-site (push) Successful in 1m11s
/ check-tag (push) Successful in 3s
/ unlighthouse (push) Successful in 19s
/ deploy-unlighthouse-files (push) Successful in 1m29s
/ deploy-unlighthouse-site (push) Successful in 4s
2024-10-01 22:14:27 +02:00
6b1b3ab6f3
final prerelease
Some checks failed
/ get-version (push) Successful in 3s
/ astro-check (push) Successful in 15s
/ check-tag (push) Successful in 3s
/ checking (push) Successful in 13s
/ auto-deploy-dockge (push) Successful in 6s
/ create-release (push) Failing after 1m53s
/ build-site (push) Successful in 56s
2024-10-01 22:12:04 +02:00
d75fd91634
Bumped astro
All checks were successful
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ check-tag (push) Successful in 2s
/ checking (push) Successful in 12s
/ create-release (push) Successful in 6s
/ auto-deploy-dockge (push) Successful in 11s
/ build-site (push) Successful in 1m8s
2024-08-01 18:07:42 +02:00
a7bb38b89a
Updated with summer skadi
All checks were successful
/ get-version (push) Successful in 3s
/ astro-check (push) Successful in 13s
/ checking (push) Successful in 14s
/ check-tag (push) Successful in 3s
/ build-site (push) Successful in 1m13s
/ create-release (push) Successful in 7s
/ auto-deploy-dockge (push) Successful in 7s
2024-07-25 14:49:36 +02:00
c72ffef3fc
Testing dockge cli container
All checks were successful
/ astro-check (push) Successful in 15s
/ get-version (push) Successful in 3s
/ check-tag (push) Successful in 3s
/ checking (push) Successful in 26s
/ build-site (push) Successful in 1m8s
/ create-release (push) Successful in 7s
/ auto-deploy-dockge (push) Successful in 10s
2024-07-22 17:51:58 +02:00
5007af517b
Extended dockge test with custom container
All checks were successful
/ get-version (push) Successful in 3s
/ astro-check (push) Successful in 14s
/ check-tag (push) Successful in 3s
/ checking (push) Successful in 13s
/ build-site (push) Successful in 1m7s
/ create-release (push) Successful in 9s
/ auto-deploy-dockge (push) Successful in 23s
2024-07-22 12:46:57 +02:00
a9568375c1
Unpinned Dockge 2024-07-20 18:02:44 +02:00
de68104603
Re-integrate Dockge into preview workflow
All checks were successful
/ get-version (push) Successful in 3s
/ astro-check (push) Successful in 28s
2024-07-20 18:02:22 +02:00
245cac7d87
Dockge Test 3
All checks were successful
/ get-version (push) Successful in 3s
/ astro-check (push) Successful in 13s
/ auto-deploy-dockge (push) Successful in 8s
2024-07-20 18:00:28 +02:00
60330800f9
Dockge Test 2
Some checks failed
/ auto-deploy-dockge (push) Failing after 9s
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
2024-07-20 17:56:13 +02:00
7a425c4fda
Dockge Test
Some checks failed
/ auto-deploy-dockge (push) Failing after 10s
/ astro-check (push) Successful in 12s
/ get-version (push) Successful in 2s
2024-07-20 17:54:14 +02:00
186b797bb6
Removed Dockge again, switched to alpine images
All checks were successful
/ get-version (push) Successful in 3s
/ astro-check (push) Successful in 13s
/ check-tag (push) Successful in 2s
/ checking (push) Successful in 13s
/ build-site (push) Successful in 1m4s
/ create-release (push) Successful in 6s
2024-07-20 17:02:30 +02:00
bc5f43802f
Testing Dockge CLI in CI 2
Some checks failed
/ get-version (push) Successful in 3s
/ astro-check (push) Successful in 13s
/ checking (push) Successful in 12s
/ create-release (push) Successful in 6s
/ check-tag (push) Successful in 3s
/ build-site (push) Successful in 1m51s
/ auto-deploy-dockge (push) Failing after 8s
2024-07-20 16:56:29 +02:00
be1416a74a
Testing Dockge CLI in CI
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 12s
/ checking (push) Successful in 11s
/ check-tag (push) Successful in 2s
/ create-release (push) Successful in 6s
/ build-site (push) Successful in 2m58s
/ auto-deploy-dockge (push) Failing after 0s
2024-07-20 16:47:33 +02:00
1cee0efcad
Bumped version
All checks were successful
/ astro-check (push) Successful in 12s
/ get-version (push) Successful in 2s
/ create-release (push) Successful in 6s
/ check-tag (push) Successful in 2s
/ checking (push) Successful in 12s
/ build-site (push) Successful in 1m31s
2024-07-20 16:35:09 +02:00
45fd654ef1
Fixed weird hovering issues
Some checks failed
/ get-version (push) Successful in 2s
/ astro-check (push) Successful in 13s
/ checking (push) Has been skipped
/ build-site (push) Has been skipped
/ create-release (push) Has been skipped
/ check-tag (push) Failing after 3s
2024-07-20 16:34:21 +02:00
e4b0b87e9f
Fixed issue with version in CI
All checks were successful
/ get-version (push) Successful in 3s
/ astro-check (push) Successful in 12s
2024-07-20 15:59:15 +02:00
cc55ec3a87
Removed unnecessary files
All checks were successful
/ astro-check (push) Successful in 12s
2024-07-20 12:07:33 +02:00
08ae371dbf
Lint fix
All checks were successful
/ astro-check (push) Successful in 15s
2024-07-19 22:54:13 +02:00
a73afacf6c
Major redesign and rewrite
All checks were successful
/ astro-check (push) Successful in 13s
/ checking (push) Successful in 12s
/ check-tag (push) Successful in 2s
/ build-site (push) Successful in 2m6s
/ create-release (push) Successful in 7s
2024-07-19 22:52:35 +02:00
0dca43eb19
Major redesign and rewrite 2024-07-19 22:52:15 +02:00
9cb6ff6ed7
Fixed accessibility issues
All checks were successful
/ checking (push) Successful in 15s
/ build-site (push) Successful in 1m25s
/ publish (push) Successful in 6s
/ unlighthouse (push) Successful in 22s
/ deploy-unlighthouse-files (push) Successful in 6s
/ deploy-unlighthouse-site (push) Successful in 6s
2024-06-20 19:52:34 +02:00
700aa1d223
Bumped unlighthouse docker
All checks were successful
/ checking (push) Successful in 49s
/ unlighthouse (push) Successful in 44s
/ deploy-unlighthouse-files (push) Successful in 6s
/ deploy-unlighthouse-site (push) Successful in 4s
2024-06-20 19:36:16 +02:00
d06655296b
Updated README
Some checks failed
/ publish (push) Successful in 6s
/ build-site (push) Successful in 1m27s
/ checking (push) Successful in 24s
/ deploy-unlighthouse-files (push) Has been skipped
/ unlighthouse (push) Failing after 23s
/ deploy-unlighthouse-site (push) Has been skipped
2024-06-20 19:18:51 +02:00
beae91e5fd
Bumped version
Some checks failed
/ publish (push) Has been skipped
/ build-site (push) Failing after 9s
/ checking (push) Successful in 11s
/ deploy-unlighthouse-files (push) Has been cancelled
/ deploy-unlighthouse-site (push) Has been cancelled
/ unlighthouse (push) Has been cancelled
2024-06-20 18:58:55 +02:00
394e575ca6
Pinned docker images
All checks were successful
/ checking (push) Successful in 16s
2024-06-20 18:58:29 +02:00
1aa9753d8b
Fixed typo
All checks were successful
/ checking (push) Successful in 12s
/ publish (push) Successful in 6s
/ build-site (push) Successful in 1m32s
/ deploy-unlighthouse-files (push) Successful in 6s
/ unlighthouse (push) Successful in 31s
/ deploy-unlighthouse-site (push) Successful in 4s
2024-06-15 19:39:08 +02:00
c4d73c2f98
Fixed typo
All checks were successful
/ build-site (push) Successful in 1m45s
/ publish (push) Successful in 6s
/ checking (push) Successful in 12s
2024-06-15 19:30:25 +02:00
2decf6604b
Updated pipeline syntax to server
All checks were successful
/ checking (push) Successful in 14s
2024-06-15 19:27:54 +02:00
92 changed files with 4252 additions and 10031 deletions

View file

@ -1,41 +1,59 @@
name: Build and deploy preview site
run-name: Building and deploying preview for version ${{ github.ref_name }}
on: on:
push: push:
tags: tags:
- '[0-9]+\.[0-9]+\.[0-9]+pre[0-9]+' - '[0-9]+\.[0-9]+\.[0-9]+-pre\.[0-9]+'
jobs: jobs:
checking: check-tag:
runs-on: docker runs-on: docker
container: node:lts steps:
- name: Checking Out Repository Code
uses: https://code.forgejo.org/actions/checkout@v3
- name: Check if Version in package.json matches Tag
run: |
VERSION=$(npm pkg get version --workspaces=false | tr -d \")
if test $VERSION != "${{ github.ref_name }}"; then
echo "Expected Version is: '${{ github.ref_name }}' actual Version is: '$VERSION'";
exit 1
else
echo "Version is: '$VERSION'";
fi
checking:
needs: [ check-tag ]
runs-on: docker
container: forgejo.neshweb.net/ci-docker-images/node-alpine-git:latest
steps: steps:
- name: Checkout source code - name: Checkout source code
uses: https://code.forgejo.org/actions/checkout@v3 uses: https://code.forgejo.org/actions/checkout@v3
- name: Install packages - name: Install packages
run: npm install run: npm i
- name: Run astro check (linting + static analysis) - name: Run astro check (linting + static analysis)
run: npm run astro check run: npm run astro check
build-site: build-site:
needs: [checking] needs: [ checking ]
if: success() if: success()
runs-on: dind runs-on: dind
steps: steps:
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub - name: Log into Docker Package Registry
uses: docker/login-action@v3 uses: docker/login-action@v3
with: with:
registry: forgejo.neshweb.net registry: forgejo.neshweb.net
username: ${{ secrets.FORGEJO_USERNAME }} username: ${{ secrets.FORGEJO_USERNAME }}
password: ${{ secrets.FORGEJO_TOKEN }} password: ${{ secrets.FORGEJO_TOKEN }}
- name: Push to Package Registry - name: Build and push to Docker Package Registry
uses: docker/build-push-action@v5 uses: docker/build-push-action@v5
with: with:
push: true push: true
tags: forgejo.neshweb.net/firq/firq-dev-website:${{ github.ref_name }}, forgejo.neshweb.net/firq/firq-dev-website:preview tags: forgejo.neshweb.net/firq/firq-dev-website:${{ github.ref_name }}, forgejo.neshweb.net/firq/firq-dev-website:preview
publish: create-release:
needs: [build-site] needs: [ build-site ]
if: success() if: success()
runs-on: docker runs-on: docker
steps: steps:
@ -49,22 +67,33 @@ jobs:
tag: ${{ github.ref_name }} tag: ${{ github.ref_name }}
prerelease: true prerelease: true
# doesn't work atm auto-deploy-dockge:
# unlighthouse: needs: [ build-site ]
# needs: [publish] if: success()
# if: success() runs-on: docker
# runs-on: docker container: forgejo.neshweb.net/firq/dockge-cli:0.1.2
# container: registry.gitlab.com/gitlab-ci-utils/lighthouse:latest steps:
# services: - name: Configure Dockge CLI
# website: run: |
# image: forgejo.neshweb.net/firq/firq-dev-website:preview dockge host '${{ vars.DOCKGE_HOST }}'
# steps: dockge login --user '${{ secrets.DOCKGE_USER }}' --password '${{ secrets.DOCKGE_CREDENTIAL }}'
# - name: Install Dependencies - name: Check status and redeploy
# run: npm install @unlighthouse/cli puppeteer run: |
# - name: Run unlighthouse dockge status firq-dev-preview
# run: node_modules/.bin/unlighthouse-ci dockge update firq-dev-preview
# - name: Upload reports dockge status firq-dev-preview
# uses: actions/upload-artifact@v3
# with: run-unlighthouse:
# name: unlighthouse-reports needs: [ build-site ]
# path: unlighthouse-reports/ if: success()
runs-on: docker
steps:
- name: Launch workflow
run: |
payload="{\"ref\": \"${GITHUB_REF_NAME}\", \"inputs\": { \"containertag\": \"${GITHUB_REF_NAME}\" }}"
curl -X "POST" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: token ${GITHUB_TOKEN}" \
-d "${payload}" \
"${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/actions/workflows/unlighthouse.yml/dispatches" -v

View file

@ -1,41 +1,90 @@
name: Build and deploy production site
run-name: Building and deploying release for version ${{ github.ref_name }}
on: on:
push: push:
tags: tags:
- '[0-9]+\.[0-9]+\.[0-9]+' - '[0-9]+\.[0-9]+\.[0-9]+'
jobs: jobs:
checking: check-tag:
runs-on: docker runs-on: docker
container: node:lts steps:
- name: Checking Out Repository Code
uses: https://code.forgejo.org/actions/checkout@v3
- name: Check if Version in package.json matches Tag
run: |
VERSION=$(npm pkg get version --workspaces=false | tr -d \")
if test $VERSION != "${{ github.ref_name }}"; then
echo "Expected Version is: '${{ github.ref_name }}' actual Version is: '$VERSION'";
exit 1
else
echo "Version is: '$VERSION'";
fi
checking:
needs: [ check-tag ]
runs-on: docker
container: forgejo.neshweb.net/ci-docker-images/node-alpine-git:latest
steps: steps:
- name: Checkout source code - name: Checkout source code
uses: https://code.forgejo.org/actions/checkout@v3 uses: https://code.forgejo.org/actions/checkout@v3
- name: Install packages - name: Install packages
run: npm install run: npm i
- name: Run astro check (linting + static analysis) - name: Run astro check (linting + static analysis)
run: npm run astro check run: npm run astro check
build-site: build-site:
needs: [checking] needs: [ checking ]
if: success() if: success()
runs-on: dind runs-on: dind
steps: steps:
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub - name: Log into Docker Package Registry
uses: docker/login-action@v3 uses: docker/login-action@v3
with: with:
registry: forgejo.neshweb.net registry: forgejo.neshweb.net
username: ${{ secrets.FORGEJO_USERNAME }} username: ${{ secrets.FORGEJO_USERNAME }}
password: ${{ secrets.FORGEJO_TOKEN }} password: ${{ secrets.FORGEJO_TOKEN }}
- name: Push to Package Registry - name: Build and push to Docker Package Registry
uses: docker/build-push-action@v5 uses: docker/build-push-action@v5
with: with:
push: true push: true
tags: forgejo.neshweb.net/firq/firq-dev-website:${{ github.ref_name }}, forgejo.neshweb.net/firq/firq-dev-website:latest tags: forgejo.neshweb.net/firq/firq-dev-website:${{ github.ref_name }}, forgejo.neshweb.net/firq/firq-dev-website:latest
release: auto-deploy-dockge:
needs: [build-site] needs: [ build-site ]
if: success()
runs-on: docker
container: forgejo.neshweb.net/firq/dockge-cli:0.1.2
steps:
- name: Configure Dockge CLI
run: |
dockge host '${{ vars.DOCKGE_HOST }}'
dockge login --user '${{ secrets.DOCKGE_USER }}' --password '${{ secrets.DOCKGE_CREDENTIAL }}'
- name: Check status and redeploy
run: |
dockge status firq-dev
dockge update firq-dev
dockge status firq-dev
run-unlighthouse:
needs: [ build-site ]
if: success()
runs-on: docker
steps:
- name: Launch workflow
run: |
payload="{\"ref\": \"${GITHUB_REF_NAME}\", \"inputs\": { \"containertag\": \"${GITHUB_REF_NAME}\" }}"
curl -X "POST" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: token ${GITHUB_TOKEN}" \
-d "${payload}" \
"${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/actions/workflows/unlighthouse.yml/dispatches" -v
create-release:
needs: [ build-site ]
if: success() if: success()
runs-on: docker runs-on: docker
steps: steps:

View file

@ -1,16 +1,27 @@
name: Linting and checking code
run-name: Linting and checking code
on: on:
push: push:
branches: branches:
- "**" - '**'
jobs: jobs:
checking: get-version:
runs-on: docker runs-on: docker
container: node:lts steps:
- name: Checking Out Repository Code
uses: https://code.forgejo.org/actions/checkout@v3
- name: Get version from package.json
run: |
VERSION=$(npm pkg get version --workspaces=false | tr -d \")
echo "Version is: '$VERSION'";
astro-check:
runs-on: docker
container: forgejo.neshweb.net/ci-docker-images/node-alpine-git:latest
steps: steps:
- name: Checkout source code - name: Checkout source code
uses: https://code.forgejo.org/actions/checkout@v3 uses: https://code.forgejo.org/actions/checkout@v3
- name: Install packages - name: Install packages
run: npm install run: npm i
- name: Run astro check (linting + static analysis) - name: Run astro check (linting + static analysis)
run: npm run astro check run: npm run astro check

View file

@ -1,18 +1,32 @@
name: Run unlighthouse-tests [Downstream pipeline]
run-name: Run unlighthouse-tests [Downstream pipeline] for version ${{ inputs.containertag }}
on: on:
push: workflow_dispatch:
tags: inputs:
- '[0-9]+\.[0-9]+\.[0-9]+unlighthouse[0-9]+' containertag:
- '[0-9]+\.[0-9]+\.[0-9]+ulh[0-9]+' description: "Tag of the container to test"
default: "preview"
type: "string"
jobs: jobs:
unlighthouse: unlighthouse:
runs-on: docker runs-on: docker
container: forgejo.neshweb.net/ci-docker-images/unlighthouse:latest container:
image: forgejo.neshweb.net/ci-docker-images/unlighthouse:0.3.0
services:
website:
image: forgejo.neshweb.net/firq/firq-dev-website:${{ inputs.containertag }}
options: >-
--workdir /
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: https://code.forgejo.org/actions/checkout@v3 uses: https://code.forgejo.org/actions/checkout@v3
- name: Check availability
run: curl "http://localhost:8081/"
- name: Run unlighthouse - name: Run unlighthouse
run: unlighthouse-ci --site "https://preview.firq.dev/" run: unlighthouse-ci --site "http://localhost:8081/"
- name: Replace URLs
run: find ./unlighthouse-reports -type f | xargs sed -i "s|http://localhost:8081|https://preview.firq.dev|g";
- name: Prepare artifacts - name: Prepare artifacts
run: cp serve.json unlighthouse-reports run: cp serve.json unlighthouse-reports
- name: Upload reports - name: Upload reports

14
.gitignore vendored
View file

@ -1,9 +1,14 @@
# build output # build output
dist/ dist/
.output/ .output/
public/
maintenance/ maintenance/
# astro stuff
.astro/
# config stuff
.vscode/
# Temp Scripts # Temp Scripts
scripts/ scripts/
@ -23,10 +28,3 @@ pnpm-debug.log*
# macOS-specific files # macOS-specific files
.DS_Store .DS_Store
# exclude default png images
static/**/*.png
!static/assets/embed.png
!static/assets/lurker.png
!static/assets/padoru.png
!static/assets/fedora.png

5
.markdownlint.json Normal file
View file

@ -0,0 +1,5 @@
{
"MD013":false,
"MD033": false,
"MD036": false
}

View file

@ -3,4 +3,5 @@
**/.vscode **/.vscode
**/public **/public
**/static **/static
**/scripts **/scripts
**/dist

View file

@ -1,4 +0,0 @@
{
"recommendations": ["astro-build.astro-vscode"],
"unwantedRecommendations": []
}

11
.vscode/launch.json vendored
View file

@ -1,11 +0,0 @@
{
"version": "0.2.0",
"configurations": [
{
"command": "./node_modules/.bin/astro dev",
"name": "Development server",
"request": "launch",
"type": "node-terminal"
}
]
}

12
.vscode/settings.json vendored
View file

@ -1,12 +0,0 @@
{
"files.exclude": {
"**/.git": true,
"**/.svn": true,
"**/.hg": true,
"**/CVS": true,
"**/.DS_Store": true,
"**/Thumbs.db": true,
"**/__pycache__": true
},
"hide-files.files": []
}

View file

@ -1,16 +1,15 @@
FROM node:lts AS build FROM node:22-alpine AS build
WORKDIR /app WORKDIR /app
COPY . . COPY . .
RUN npm i RUN npm i
RUN npm run astro telemetry disable
RUN npm run build RUN npm run build
FROM forgejo.neshweb.net/ci-docker-images/website-serve:latest AS runtime FROM forgejo.neshweb.net/ci-docker-images/website-serve:2 AS runtime
COPY --from=build /app/dist /public COPY --from=build /app/dist /public
COPY --from=build /app/serve.json /public/serve.json COPY --from=build /app/serve.json /public/serve.json
RUN rm -r /public/data/ RUN rm /public/.original.favicon.ico
ENV PORT 8081
EXPOSE 8081 EXPOSE 8081
CMD serve public/ -p 8081
CMD [ "serve", "public/", "-p", "8081" ]

View file

@ -2,43 +2,6 @@
This is build using [Astro](https://astro.build) This is build using [Astro](https://astro.build)
## 🚀 Project Structure
```
/
├── static/
│ ├── favicon.svg
│ └── other files ...
├── src/
│ ├── components/
│ │ ├── servantCard.astro
│ │ ├── ceCard.astro
│ │ ├── contactCard.astro
│ │ └── taCard.astro
│ │
│ ├── layouts/
│ │ ├── customFooter.astro
│ │ ├── baseSection.astro
│ │ ├── taSection.astro
│ │ ├── contactSection.astro
│ │ └── Layout.astro
│ │
│ └── pages/
│ └── index.astro
├── .gitlab-ci.yml
├── astro.config.mjs
└── package.json
```
Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name.
More routes will follow soon
Any static assets, like images, can be placed in the `static/` directory.
## 🧞 Astro-Specific Commands ## 🧞 Astro-Specific Commands
All commands are run from the root of the project, from a terminal: All commands are run from the root of the project, from a terminal:
@ -51,4 +14,3 @@ All commands are run from the root of the project, from a terminal:
| `npm run preview` | Preview your build locally, before deploying | | `npm run preview` | Preview your build locally, before deploying |
| `npm run astro ...` | Run CLI commands like `astro add`, `astro preview` | | `npm run astro ...` | Run CLI commands like `astro add`, `astro preview` |
| `npm run astro --help` | Get help using the Astro CLI | | `npm run astro --help` | Get help using the Astro CLI |

View file

@ -1,6 +1,7 @@
import { defineConfig } from 'astro/config'; import { defineConfig } from 'astro/config';
import sitemap from "@astrojs/sitemap"; import sitemap from "@astrojs/sitemap";
import astroMetaTags from "astro-meta-tags";
import mdx from "@astrojs/mdx"; import mdx from "@astrojs/mdx";
// https://astro.build/config // https://astro.build/config
@ -8,7 +9,7 @@ export default defineConfig({
sitemap: true, sitemap: true,
base: '/', base: '/',
outDir: 'dist', outDir: 'dist',
publicDir: 'static', publicDir: 'public',
site: 'https://firq.dev/', site: 'https://firq.dev/',
integrations: [sitemap(), mdx()] integrations: [sitemap(), mdx(), astroMetaTags()]
}); });

11490
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,7 @@
{ {
"name": "@firq/fgosite", "name": "@firq/fgosite",
"type": "module", "type": "module",
"version": "0.1.27", "version": "0.2.0-pre.52",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "astro dev", "dev": "astro dev",
@ -11,15 +11,17 @@
"astro": "astro" "astro": "astro"
}, },
"dependencies": { "dependencies": {
"@astro-community/astro-embed-youtube": "^0.4.3", "@astro-community/astro-embed-youtube": "^0.5.2",
"@astrojs/check": "^0.3.3", "@astrojs/check": "^0.9.4",
"@astrojs/mdx": "^2.0.3", "@astrojs/mdx": "^3.1.8",
"@astrojs/sitemap": "^3.0.3", "@astrojs/sitemap": "^3.2.1",
"astro": "^4.2.1", "@fontsource-variable/work-sans": "^5.1.0",
"autoprefixer": "^10.4.16", "astro": "^4.16.6",
"iconoir": "^7.2.0", "astro-meta-tags": "^0.3.1",
"postcss-preset-env": "^9.3.0", "autoprefixer": "^10.4.19",
"typescript": "^5.3.3" "iconoir": "^7.7.0",
"postcss-preset-env": "^9.6.0",
"typescript": "^5.5.3"
}, },
"browserslist": [ "browserslist": [
"last 2 versions", "last 2 versions",

View file

Before

Width:  |  Height:  |  Size: 123 KiB

After

Width:  |  Height:  |  Size: 123 KiB

8
public/robots.txt Normal file
View file

@ -0,0 +1,8 @@
User-agent: *
Disallow: /assets/data/
User-agent: GPTBot
User-agent: Bytespider
Disallow: /
Sitemap: https://firq.dev/sitemap-index.xml

View file

@ -17,6 +17,15 @@
"value" : "max-age=31536000" "value" : "max-age=31536000"
}] }]
}, },
{
"source": "**/*.woff2",
"headers": [
{
"key": "Cache-Control",
"value" : "max-age=31536000"
}
]
},
{ {
"source" : "**/*.@(jpg|jpeg|gif|png|webp|svg)", "source" : "**/*.@(jpg|jpeg|gif|png|webp|svg)",
"headers" : [{ "headers" : [{

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 127.14 96.36"><path fill="#fff" d="M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z"/></svg>

After

Width:  |  Height:  |  Size: 761 B

View file

@ -0,0 +1,37 @@
<svg viewBox="0 0 212 212" xmlns="http://www.w3.org/2000/svg">
<metadata
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
>
<rdf:RDF>
<cc:Work rdf:about="https://codeberg.org/forgejo/governance/src/branch/main/branding#logo">
<dc:title>Forgejo logo</dc:title>
<cc:creator rdf:resource="https://caesarschinas.com/"><cc:attributionName>Caesar Schinas</cc:attributionName></cc:creator>
<cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
</cc:Work>
</rdf:RDF>
</metadata>
<style type="text/css">
:root, svg {
color-scheme: dark light;
}
circle {
fill: none;
stroke: currentColor;
stroke-width: 15;
}
path {
fill: none;
stroke: currentColor;
stroke-width: 25;
}
</style>
<g transform="translate(6,6)">
<path d="M58 168 v-98 a50 50 0 0 1 50-50 h20" />
<path d="M58 168 v-30 a50 50 0 0 1 50-50 h20" />
<circle cx="142" cy="20" r="18" />
<circle cx="142" cy="88" r="18" />
<circle cx="58" cy="180" r="18" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="124.48" height="203.92" version="1.1" viewBox="0 0 124.48 203.92" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<rect x=".0051316" y="-.0039062" width="124.49" height="204" fill="none"/>
<path transform="translate(-58.01 -18.484)" d="m119.56 18.484-61.354 74.137 23.795 27.727-23.992 27.334 62.535 74.725 61.943-75.119-24.582-27.332 17.699-19.666-20.451-24.58-1.377-1.7695-0.01-2.3594 1.1894-4.3262 3.3438-4.3262-2.9512-2.5566-23.006 28.709-12.389-15.141-28.908 35.199-15.141-16.715 43.457-52.111 15.732 19.271 2.7539-3.5391-5.1133-5.5078-3.5391-5.7012-2.5566-5.3105 0.19532-4.5215 3.1465-4.918zm22.811 67.646 2.3613 0.19727 13.223 13.273-8.1113 9.7344-14.748-17.699zm-22.416 9.2422 21.236 24.975-20.844 24.385-21.041-24.777zm-29.105 35.789 29.105 35.594 29.889-35.396 14.158 16.322-43.852 52.896-43.852-52.109z" stroke="#000" stroke-width=".40441"/>
</svg>

After

Width:  |  Height:  |  Size: 1,002 B

View file

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
id="Layer_1"
data-name="Layer 1"
viewBox="0 0 204.89999 204.89999"
version="1.1"
sodipodi:docname="Reddit_Icon_2Color.svg"
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
width="204.89999"
height="204.89999"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview11"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="2.3837233"
inkscape:cx="42.999958"
inkscape:cy="93.131617"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" />
<defs
id="defs4">
<style
id="style2">
.cls-1 {
fill: #fff;
}
.cls-1, .cls-2 {
stroke-width: 0px;
}
.cls-2 {
fill: #ff4500;
}
</style>
</defs>
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="Layer 1"
style="fill:none;fill-opacity:1;stroke:none;stroke-opacity:1"
transform="translate(-25.54,-34.12)" />
<path
class="cls-1"
d="m 128.5,39.079997 c 2.22,9.41 10.67,16.42 20.76,16.42 11.78,0 21.33,-9.55 21.33,-21.33 0,-11.78 -9.55,-21.33 -21.33,-21.33 -10.3,0 -18.89,7.3 -20.89,17.01 -17.25,1.85 -30.720003,16.48 -30.720003,34.21 0,0.04 0,0.07 0,0.11 -18.76,0.79 -35.89,6.13 -49.49,14.56 -5.05,-3.91 -11.39,-6.24 -18.27,-6.24 -16.51,0 -29.8900000517578,13.38 -29.8900000517578,29.890003 0,11.98 7.0399999517578,22.3 17.2100000517578,27.07 0.99,34.7 38.8,62.61 85.310003,62.61 46.51,0 84.37,-27.94 85.31,-62.67 10.09,-4.8 17.07,-15.09 17.07,-27 0,-16.510003 -13.38,-29.890003 -29.89,-29.890003 -6.85,0 -13.16,2.31 -18.2,6.19 -13.72,-8.49 -31.04,-13.83 -49.99,-14.54 0,-0.03 0,-0.05 0,-0.08 0,-12.7 9.44,-23.24 21.68,-24.97 z M 46.959997,121.35 c 0.5,-10.84 7.7,-19.16 16.07,-19.16 8.37,0 14.77,8.79 14.27,19.63 -0.5,10.84 -6.75,14.78 -15.13,14.78 -8.38,0 -15.71,-4.41 -15.21,-15.25 z M 142.02,102.19 c 8.38,0 15.58,8.32 16.07,19.16 0.5,10.84 -6.84,15.25 -15.21,15.25 -8.37,0 -14.63,-3.93 -15.13,-14.78 -0.5,-10.84 5.89,-19.63 14.27,-19.63 z m -9.96,44.24 c 1.57,0.16 2.57,1.79 1.96,3.25 -5.15,12.31 -17.31,20.96 -31.5,20.96 -14.190003,0 -26.340003,-8.65 -31.500003,-20.96 -0.61,-1.46 0.39,-3.09 1.96,-3.25 9.2,-0.93 19.15,-1.44 29.540003,-1.44 10.39,0 20.33,0.51 29.54,1.44 z"
id="path8" />
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M2.149 0l-1.612 4.119v16.836h5.731v3.045h3.224l3.045-3.045h4.657l6.269-6.269v-14.686h-21.314zm19.164 13.612l-3.582 3.582h-5.731l-3.045 3.045v-3.045h-4.836v-15.045h17.194v11.463zm-3.582-7.343v6.262h-2.149v-6.262h2.149zm-5.731 0v6.262h-2.149v-6.262h2.149z" fill-rule="evenodd" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 394 B

BIN
src/assets/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 554 KiB

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 565 KiB

After

Width:  |  Height:  |  Size: 268 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

View file

@ -0,0 +1,53 @@
---
---
<div>
<p>
I'm a 24 year old software developer from Germany. Even if my roots are with Electrical Engineering,
I am currently pursuing a Masters Degree in Computer Science after starting to code more during my studies.
I am mostly programming in Python, but I'm also confident in writing Javascript.
</p>
<p>
I enjoy biking and hiking, as well as visiting different anime conventions.
I am a huge fan of the Fate franchise, specifically Fate/Grand Order, which I am playing since the end of 2019.
I also enjoy other games, mainly Honkai: Star Rail and theHunter: Call of the Wild.
</p>
</div>
<style>
div {
font-size: 16px;
font-weight: 400;
line-height: 24px;
font-family: 'Work Sans Variable', sans-serif;
max-width: min(87.5%, 360px);
background-color: var(--c-primary-background);
color: var(--c-primary-text);
border-radius: 1rem;
padding: 1rem 1rem;
margin-top: -0.75rem;
text-align: left;
}
div > p:first-of-type {
margin-top: 0px;
}
div > p:last-of-type {
margin-bottom: 0px;
}
@media (min-width: 512px) {
div {
max-width: 75%;
text-align: justify;
}
}
@media (min-width: 1000px) {
div {
max-width: 65%;
}
}
</style>

View file

@ -1,8 +1,9 @@
--- ---
export interface Props { export interface Props {
url: string | undefined url: string
slug: string
title: string title: string
pubdate: string pubdate: Date
description: string description: string
author: string author: string
} }
@ -12,11 +13,11 @@ const options_date: Intl.DateTimeFormatOptions = {
month: 'long', month: 'long',
day: '2-digit', day: '2-digit',
} }
const { author, description, pubdate, url, title } = Astro.props const { author, description, pubdate, url, title, slug } = Astro.props
const date = new Date(pubdate).toLocaleDateString('en-GB', options_date) const date = new Date(pubdate).toLocaleDateString('en-GB', options_date)
--- ---
<a href={url} rel="noopener noreferrer"> <a href={`${url}/${slug}`} rel="noopener noreferrer">
<div class="circle"></div> <div class="circle"></div>
<article> <article>
<h2>{title}</h2> <h2>{title}</h2>
@ -26,59 +27,38 @@ const date = new Date(pubdate).toLocaleDateString('en-GB', options_date)
</a> </a>
<style> <style>
* {
transition: all var(--a-time-default) var(--a-animation-1);
}
.circle { .circle {
display: none; display: none;
} }
@media (min-width: 900px) {
.circle {
margin: 1rem 1rem 1rem 0rem;
position: relative;
display: flex;
visibility: visible;
height: 1.5rem;
width: 1.5rem;
border-radius: 40%;
background-color: var(--c-darkpurple);
transition: transform var(--speed) var(--ease);
}
a:hover > .circle {
height: 1.75rem;
width: 1.75rem;
translate: -0.125rem;
margin-right: 0.825rem;
}
article {
margin-left: 0.5rem;
}
}
a { a {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
display: flex; display: flex;
text-decoration: none; text-decoration: none;
height: auto; height: fit-content;
margin: 0.5rem; margin: 0px 0.5rem;
width: 100%; width: 100%;
} }
p { p {
color: white; color: var(--c-primary-text);
text-align: left; text-align: left;
font-size: 1.1em; font-size: 1.1em;
margin: 0.5em; margin: 0.5em;
} }
article > h2 { article > h2 {
margin: 0.3rem 0.5rem; margin: 0.3rem 0.5rem;
color: var(--c-darkpurple); color: var(--c-accent-1);
font-size: 1.5rem; font-size: 1.5rem;
line-height: normal; line-height: normal;
text-decoration: none; text-decoration: none;
} }
article > h3 { article > h3 {
margin: 0.2em 0.5rem; margin: 0.2em 0.5rem;
color: white; color: var(--c-primary-text);
font-size: 1rem; font-size: 1rem;
line-height: normal; line-height: normal;
text-decoration: none; text-decoration: none;
@ -88,17 +68,49 @@ const date = new Date(pubdate).toLocaleDateString('en-GB', options_date)
flex: 1; flex: 1;
flex-wrap: wrap; flex-wrap: wrap;
flex-direction: column; flex-direction: column;
align-items: flex-start; align-items: center;
align-content: flex-start; align-content: center;
justify-content: center; justify-content: center;
background-color: var(--c-darkergray); background-color: var(--c-primary-background);
padding: 10px; padding: 10px;
text-align: center; text-align: center;
transition: transform var(--speed) var(--ease);
min-height: 100%; min-height: 100%;
border: 2px solid var(--c-primary-background);
border-radius: 1.25rem; border-radius: 1.25rem;
} }
a:hover > article {
transform: scaleY(102.5%) scaleX(101%); a:hover article {
border-color: var(--c-accent-1);
}
@media (min-width: 900px) {
.circle {
margin: 1rem 0.5rem 1rem 0.5rem;
position: relative;
display: flex;
visibility: visible;
height: 1rem;
width: 1rem;
background-color: var(--c-accent-1);
border-style: solid;
border-width: 0.25rem;
border-color: var(--c-secondary-background);
border-radius: 40%;
transition: all var(--a-time-short) var(--a-animation-1);
}
a:hover > .circle {
height: 1.25rem;
width: 1.25rem;
translate: -0.125rem;
margin-right: 4px;
}
article {
border: 2px solid var(--c-primary-background);
align-items: flex-start;
align-content: flex-start;
margin-left: 0.5rem;
}
} }
</style> </style>

View file

@ -1,8 +1,8 @@
--- ---
import { Image } from 'astro:assets' import { Image } from 'astro:assets'
import mlb_ce from '../assets/ce/mlb.webp' import mlb_ce from '@assets/ce/mlb.webp'
import type { GlobImage } from '../types/generic' import type { GlobImage } from '../../types/generic'
import { plsLoadImage } from '../utils/tools' import { plsLoadImage } from '../../utils/tools'
export interface Props { export interface Props {
name: string name: string
@ -35,14 +35,12 @@ const mlb_image = mlb ? 'mlbalign' : 'hidemlb'
article { article {
border-radius: 1.25rem; border-radius: 1.25rem;
background-color: var(--c-darkergray); border: 2px var(--c-primary-background) solid;
padding: 20px; background-color: var(--c-primary-background);
padding-top: 5px;
width: 35%; width: 35%;
height: auto; height: auto;
justify-content: center; justify-content: center;
text-align: center; text-align: center;
transition: transform var(--speed) var(--ease);
margin: 0px; margin: 0px;
display: grid; display: grid;
grid-template-columns: 100%; grid-template-columns: 100%;
@ -55,11 +53,11 @@ const mlb_image = mlb ? 'mlbalign' : 'hidemlb'
} }
article:hover { article:hover {
transform: scale(var(--hover-scale)); border: 2px var(--c-accent-1) solid;
} }
article div { article div {
margin: 0.5em auto; margin: auto;
} }
img { img {
@ -70,27 +68,17 @@ const mlb_image = mlb ? 'mlbalign' : 'hidemlb'
margin-right: auto; margin-right: auto;
} }
.heading-center {
display: flex;
height: 4rem;
width: 100%;
align-items: center;
justify-content: center;
font-size: 1.25em;
color: white;
font-weight: bold;
}
.ce-crop { .ce-crop {
width: 6em; width: min(85%, 85px);
height: 6em; height: auto;
} }
.mlb { .mlb {
width: 5.5rem; width: min(85%, 85px);
height: auto; height: auto;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
margin-top: 0px;
} }
.mlbalign { .mlbalign {
@ -101,18 +89,18 @@ const mlb_image = mlb ? 'mlbalign' : 'hidemlb'
@media (min-width: 512px) { @media (min-width: 512px) {
.ce-crop { .ce-crop {
width: 7.5em; width: 100px;
height: 7.5em; height: 100px;
} }
article { article {
width: 10em; width: 128px;
} }
.mlbalign { .mlbalign {
width: 7.5em; width: 85px;
} }
.mlb { .mlb {
width: 7rem; width: 85px;
} }
} }
</style> </style>

View file

@ -1,7 +1,7 @@
--- ---
import { Image } from 'astro:assets' import { Image } from 'astro:assets'
import type { GlobImage } from '../types/generic' import type { GlobImage } from '../../types/generic'
import { plsLoadImage } from '../utils/tools' import { plsLoadImage } from '../../utils/tools'
export interface Props { export interface Props {
site: string site: string
@ -10,7 +10,6 @@ export interface Props {
} }
const { imageFile, link, site } = Astro.props const { imageFile, link, site } = Astro.props
const logoAltText = `${site} Logo`
const imagePath = `/src/assets/social/${imageFile}` const imagePath = `/src/assets/social/${imageFile}`
const images_logos = import.meta.glob<GlobImage>( const images_logos = import.meta.glob<GlobImage>(
'/src/assets/social/*.{png,webp}' '/src/assets/social/*.{png,webp}'
@ -25,74 +24,67 @@ const loadedLogoImage = plsLoadImage(images_logos, imagePath)
aria-label=`${site} - new window` aria-label=`${site} - new window`
> >
<article class="contact do-hover"> <article class="contact do-hover">
<Image src={loadedLogoImage} alt={logoAltText} /> <Image src={loadedLogoImage} alt="" loading={'eager'} width={128} height={128} quality={100}/>
<div> <div>
<h2>{site}</h2> <h2>{site}</h2>
</div> </div>
</article> </article>
<span class="visually-hidden">{logoAltText}</span> <span class="visually-hidden">{site}</span>
</a> </a>
<style> <style>
a { a {
text-decoration: none; text-decoration: none;
--s-image: 80px;
} }
article { article {
--size-value: 6.25rem;
border-radius: 1.25rem;
display: flex; display: flex;
justify-content: center; position: relative;
align-items: center; align-items: center;
background-color: var(--c-darkergray); justify-content: center;
border-color: var(--c-darkgray);
padding: 10px;
text-align: center; text-align: center;
transition: transform var(--speed) var(--ease); background-color: var(--c-primary-background);
border: 2px solid var(--c-primary-background);
border-radius: 1.25rem;
padding: 6px;
height: auto; height: auto;
width: auto; width: auto;
position: relative;
} }
article img { article img {
border-radius: 1.25rem; border-radius: 1.25rem;
width: var(--size-value); width: var(--s-image);
height: var(--size-value); height: auto;
}
article:hover div {
border-radius: 1.25rem;
padding: 0 0.5rem;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
background-color: var(--c-darkgray);
height: calc(var(--size-value));
width: calc(var(--size-value) - 1rem);
opacity: 90%;
z-index: 100;
position: absolute;
}
article:hover h2 {
margin: 0;
display: inline-flex;
font-weight: bold;
color: white;
font-size: 18px;
}
article h2 {
position: absolute;
display: none;
} }
article div { article div {
display: none; display: none;
} }
a:hover { article:hover {
transform: scale(var(--hover-scale)); border-color: var(--c-accent-1);
}
article:hover div {
display: flex;
position: absolute;
margin: unset;
align-items: center;
justify-content: center;
text-align: center;
background-color: var(--c-primary-background);
border-radius: 1.25rem;
width: var(--s-image);
height: var(--s-image);
opacity: 90%;
z-index: 100;
}
article:hover h2 {
display: inline-flex;
font-size: 16px;
font-weight: 500;
color: var(--c-primary-text);
} }
</style> </style>

View file

@ -1,7 +1,7 @@
--- ---
import { Image } from 'astro:assets' import { Image } from 'astro:assets'
import type { GlobImage } from '../types/generic' import type { GlobImage } from '../../types/generic'
import { plsLoadImage } from '../utils/tools' import { plsLoadImage } from '../../utils/tools'
export interface Props { export interface Props {
name: string name: string
@ -25,21 +25,27 @@ const loadedImage = plsLoadImage(images, imagePath)
aria-label=`${name} - new window` aria-label=`${name} - new window`
> >
<div class="heading">{name}</div> <div class="heading">{name}</div>
<Image src={loadedImage} alt={name} /> <Image src={loadedImage} alt={name} loading={'eager'} width={128} height={128} quality={100}/>
<h2 class="subtext"> <h2 class="subtext">
{origin} {origin}
</h2> </h2>
</a> </a>
<style> <style>
* {
transition: all var(--a-time-default) var(--a-animation-1);
}
.heading { .heading {
display: flex; display: flex;
height: 4rem; height: fit-content;
min-height: 2.5rem;
line-height: 1.75rem;
font-size: 24px; font-size: 24px;
color: white; color: var(--c-primary-text);
max-width: 200px; max-width: 200px;
padding-bottom: 0.3rem; padding-bottom: 0.3rem;
font-weight: bold; font-weight: 500;
margin: 0px; margin: 0px;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
@ -50,25 +56,25 @@ const loadedImage = plsLoadImage(images, imagePath)
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
flex-direction: column; flex-direction: column;
background-color: var(--c-darkergray); background-color: var(--c-primary-background);
border-color: var(--c-darkgray); padding: 0em 0.25em;
padding: 0em 0.75em; width: max(40%, 128px);
width: 40%;
height: auto; height: auto;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
text-align: center; text-align: center;
transition: transform var(--speed) var(--ease);
text-decoration: none; text-decoration: none;
border: 2px var(--c-primary-background) solid;
&:hover { &:hover {
transform: scale(var(--hover-scale)); border: 2px var(--c-accent-1) solid;
} }
img { img {
padding: 0px 0.25em; width: min(90%, 100px);
width: 90%; margin: 0px 0.5rem;
height: auto; height: auto;
border-radius: 1rem;
} }
} }
@ -78,17 +84,16 @@ const loadedImage = plsLoadImage(images, imagePath)
width: auto; width: auto;
height: auto; height: auto;
img { img {
padding: 0px 1.5em; width: 128px;
width: 200px;
} }
} }
} }
.subtext { .subtext {
color: white; color: var(--c-primary-text);
font-size: 16px; font-size: 16px;
font-weight: 600; font-weight: 400;
margin: 5; margin: 0.5rem;
line-height: 20px; line-height: 20px;
} }
</style> </style>

View file

@ -1,7 +1,7 @@
--- ---
import { Image } from 'astro:assets'; import { Image } from 'astro:assets';
import type { GlobImage } from '../types/generic' import type { GlobImage } from '../../types/generic'
import { plsLoadImage } from '../utils/tools' import { plsLoadImage } from '../../utils/tools'
export interface Props { export interface Props {
name: string name: string
@ -12,9 +12,10 @@ export interface Props {
bondceImageFile: string bondceImageFile: string
ml: string ml: string
bond10: boolean bond10: boolean
index: number
} }
const { bond10, ml, bondceImageFile, servantImageFile, np, skills, level, name } = Astro.props const { bond10, ml, bondceImageFile, servantImageFile, np, skills, level, name, index } = Astro.props
const servantImagePath = `/src/assets/servant/${servantImageFile}` const servantImagePath = `/src/assets/servant/${servantImageFile}`
const bondceImagePath = `/src/assets/ce/bond-ce/${bondceImageFile}` const bondceImagePath = `/src/assets/ce/bond-ce/${bondceImageFile}`
const images_servants = import.meta.glob<GlobImage>('/src/assets/servant/*.{png,webp}') const images_servants = import.meta.glob<GlobImage>('/src/assets/servant/*.{png,webp}')
@ -27,10 +28,12 @@ let bondce_css: string = 'bond-ce'
if (bond10 === false) { if (bond10 === false) {
bondce_css += ' unobtained' bondce_css += ' unobtained'
} }
let loading: "eager" | "lazy" = index <= 3 ? "eager" : "lazy";
--- ---
<article> <article>
<Image src={loadedServantImage} alt={name} /> <Image src={loadedServantImage} width={128} height={128} alt={name} quality={100} loading={loading}/>
<h2 class="subtext"> <h2 class="subtext">
Level {level}<br /> Level {level}<br />
{skills}<br /> {skills}<br />
@ -43,54 +46,35 @@ if (bond10 === false) {
</article> </article>
<style> <style>
.heading {
display: flex;
height: 4rem;
width: 100%;
align-items: center;
justify-content: center;
font-size: 24px;
color: white;
max-width: 200px;
padding-bottom: 0.3rem;
font-weight: bold;
}
.servants-container {
row-gap: 1em;
column-gap: 1em;
justify-content: center;
align-self: center;
}
article:hover { article:hover {
transform: scale(var(--hover-scale)); transition: all var(--a-time-default) var(--a-animation-1);
transform: scale(1);
border-color: var(--c-accent-1);
} }
article { article {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
flex-direction: column; flex-direction: column;
background-color: var(--c-darkergray); background-color: var(--c-primary-background);
border-color: var(--c-darkgray); border: 2px var(--c-primary-background) solid;
padding: 0em 0.75em 0.5rem 0.75em; padding: 10px;
width: 40%; width: max(30%, 100px);
height: auto; height: auto;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
text-align: center; text-align: center;
transition: transform var(--speed) var(--ease);
border-radius: 1.25rem; border-radius: 1.25rem;
} }
article > img { article > img {
width: 7.5rem; width: 90%;
height: 7.5rem; height: auto;
border-radius: 2.5rem; border-radius: 2.5rem;
margin-top: 0.75rem; margin-top: 0.75rem;
} }
.subtext { .subtext {
color: white; color: var(--c-primary-text);
font-size: 16px; font-size: 16px;
font-weight: 600; font-weight: 600;
margin: 5; margin: 5;
@ -98,25 +82,26 @@ if (bond10 === false) {
} }
.expand-on-hover { .expand-on-hover {
background-color: var(--c-duskgray); background-color: var(--c-primary-background);
border: 2px var(--c-primary-background) solid;
border-top: 0px;
z-index: 99; z-index: 99;
transform: scaleY(0); transform: scaleY(0);
transform-origin: top; transform-origin: top;
position: absolute; position: absolute;
top: 92.5%; top: 92.5%;
left: 0px;
right: 0px;
border-radius: 0px 0px 1.25rem 1.25rem; border-radius: 0px 0px 1.25rem 1.25rem;
width: 100%;
} }
article:hover .expand-on-hover { article:hover .expand-on-hover {
transform: scaleY(1); transform: scaleY(1);
transition: transform 200ms ease-in-out; border-color: var(--c-accent-1);
background-color: var(--c-duskgray); transition: all var(--a-time-default) var(--a-animation-1);
} }
.bond-ce { .bond-ce {
padding-top: 0.75rem; padding-top: 0.25rem;
width: auto; width: auto;
height: 3rem; height: 3rem;
} }
@ -133,16 +118,12 @@ if (bond10 === false) {
} }
article > img { article > img {
width: 200px; width: 128px;
height: 200px; height: 128px;
} }
.bond-ce { .bond-ce {
height: 3.5rem; height: 3rem;
}
.expand-on-hover {
top: 95%;
} }
} }
</style> </style>

View file

@ -1,7 +1,7 @@
--- ---
import { Image } from 'astro:assets' import { Image } from 'astro:assets'
import type { GlobImage } from '../types/generic' import type { GlobImage } from '../../types/generic'
import { plsLoadImage } from '../utils/tools' import { plsLoadImage } from '../../utils/tools'
export interface Props { export interface Props {
date: string date: string
@ -36,153 +36,131 @@ const servant_images = import.meta.glob<GlobImage>(
const loadedServantImage = plsLoadImage(servant_images, servantImagePath) const loadedServantImage = plsLoadImage(servant_images, servantImagePath)
const loadedTargetImage = plsLoadImage(target_images, targetImagePath) const loadedTargetImage = plsLoadImage(target_images, targetImagePath)
let hasuser = '' const hasuser = user !== undefined ? 'display: flex' : 'display: none'
if (user !== undefined) {
hasuser = 'hasuser'
}
--- ---
<a href={link} target="_blank" rel="noopener noreferrer" aria-label={title}> <a href={link} target="_blank" rel="noopener noreferrer" aria-label={title}>
<article> <div class="imagecontainer">
<Image src={loadedTargetImage} alt={title} class="icon" /> <Image src={loadedTargetImage} alt={title} />
<div class="title"> <div class="title">
<h2>{title}</h2> <h2>{title}</h2>
</div> </div>
<p> </div>
<span class={hasuser}> <p>
By {user}<br /> • <span style={hasuser}>By {user}<br />•</span>
</span> {formatted_date}
{formatted_date} </p>
</p> <div class="expand-on-hover">
<div class="expand-on-hover"> <Image src={loadedServantImage} alt="" />
<Image src={loadedServantImage} alt="" /> <h2>{turns}</h2>
<h2>{turns}</h2> </div>
</div>
</article>
</a> </a>
<style> <style>
div { * {
display: none; transition: all var(--a-time-default) var(--a-animation-1);
} }
span {
display: none;
}
.hasuser {
display: flex;
}
a { a {
text-decoration: none; text-decoration: none;
} display: flex;
flex-direction: column;
article { flex-wrap: wrap;
background-color: var(--c-darkergray); background-color: var(--c-primary-background);
border-color: var(--c-darkgray); border: 2px var(--c-primary-background) solid;
padding: 10px; padding: 10px;
text-align: center; text-align: center;
transition: transform var(--speed) var(--ease); width: max(30%, 100px);
height: auto; height: auto;
width: auto;
max-width: 8rem;
border-radius: 1.25rem; border-radius: 1.25rem;
padding-bottom: 1.5rem;
--size-value: 7rem;
display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
flex-direction: column; z-index: 1;
} }
article:hover { a:hover {
transform: scale(var(--hover-scale)); transform: scale(1);
border-color: var(--c-accent-1);
z-index: 10;
} }
article > .icon { .imagecontainer {
display: flex;
width: 90%;
height: auto;
position: relative;
}
.imagecontainer > img {
width: 100%;
height: auto;
border-radius: 1.25rem; border-radius: 1.25rem;
width: var(--size-value);
height: var(--size-value);
margin: 0.5rem;
} }
article:hover .title { a:hover .title {
display: flex; display: flex;
position: absolute; position: absolute;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
text-align: center; text-align: center;
background-color: var(--c-darkgray); background-color: var(--c-primary-background);
height: calc(var(--size-value) + 0.1rem); width: 100%;
width: calc(var(--size-value) + 0.1rem); height: 100%;
opacity: 90%; opacity: 90%;
box-shadow: 0px 0px 0px 1px var(--c-primary-background);
border-radius: 1.25rem; border-radius: 1.25rem;
top: 1.1em;
} }
article:hover .title h2 { a:hover .title h2 {
margin: 0; margin: 4px;
display: inline-flex; display: inline-flex;
font-weight: bold; font-weight: 500;
color: white; color: var(--c-primary-text);
font-size: 18px; font-size: 1rem;
line-height: 150%; line-height: 150%;
padding: 0.5rem;
} }
article .title h2 { a .title {
display: none; display: none;
} }
article .title {
display: none;
}
.icon {
display: flex;
justify-content: center;
align-items: center;
}
p { p {
display: flex; display: flex;
flex-wrap: wrap;
flex-direction: column;
text-align: center; text-align: center;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
line-height: 100%; line-height: 100%;
text-decoration: none; text-decoration: none;
color: white; color: var(--c-primary-text);
font-size: 1rem; font-size: 1rem;
font-weight: bold; font-weight: 400;
padding-top: 0.5rem; margin: 0.5rem 0px 0.625rem 0px;
margin: 0.5rem 0px;
flex-wrap: wrap;
flex-direction: column;
} }
.expand-on-hover { .expand-on-hover {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
flex-wrap: wrap; flex-wrap: wrap;
align-items: center; align-items: top;
justify-content: space-evenly; justify-content: space-evenly;
background-color: var(--c-duskgray); background-color: var(--c-primary-background);
border: 2px var(--c-primary-background) solid;
border-top: 0px;
z-index: 99; z-index: 99;
transform: scaleY(0); transform: scaleY(0);
transform-origin: top; transform-origin: top;
position: absolute; position: absolute;
top: 90%; top: 87.5%;
left: 0px; padding-top: 0.5rem;
right: 0px; margin-top: 0.2rem;
color: white; color: var(--c-primary-text);
border-radius: 0px 0px 1.25rem 1.25rem; border-radius: 0px 0px 1.25rem 1.25rem;
width: 100%;
} }
.expand-on-hover img { .expand-on-hover img {
width: 3rem; width: 2.5rem;
height: 3rem; height: auto;
margin-top: 0.5rem;
margin-bottom: 0.5rem; margin-bottom: 0.5rem;
border-radius: 0.5rem; border-radius: 0.5rem;
} }
@ -191,9 +169,23 @@ if (user !== undefined) {
margin: 0.5rem; margin: 0.5rem;
} }
article:hover .expand-on-hover { a:hover .expand-on-hover {
transform: scaleY(1); transform: scaleY(1);
transition: transform 200ms ease-in-out; transition: all var(--a-time-default) var(--a-animation-1);
background-color: var(--c-duskgray); background-color: var(--c-primary-background);
border-color: var(--c-accent-1);
}
@media (min-width: 512px) {
a {
padding: 10px;
width: auto;
height: auto;
}
a > .imagecontainer {
width: 112px;
height: 112px;
}
} }
</style> </style>

View file

@ -1,7 +1,7 @@
--- ---
import { Image } from 'astro:assets' import { Image } from 'astro:assets'
import type { GlobImage } from '../types/generic' import type { GlobImage } from '../../types/generic'
import { plsLoadImage } from '../utils/tools' import { plsLoadImage } from '../../utils/tools'
export interface Props { export interface Props {
title: string title: string
@ -10,7 +10,6 @@ export interface Props {
} }
const { imageFile, link, title } = Astro.props const { imageFile, link, title } = Astro.props
const logoAltText = `${title} Logo`
const imagePath = `/src/assets/technologies/${imageFile}` const imagePath = `/src/assets/technologies/${imageFile}`
const images_logos = import.meta.glob<GlobImage>( const images_logos = import.meta.glob<GlobImage>(
'/src/assets/technologies/*.{png,webp}' '/src/assets/technologies/*.{png,webp}'
@ -20,73 +19,70 @@ const loadedImage = plsLoadImage(images_logos, imagePath)
<a href={link} target="_blank" rel="noopener noreferrer" aria-label={title}> <a href={link} target="_blank" rel="noopener noreferrer" aria-label={title}>
<article> <article>
<Image src={loadedImage} alt={logoAltText} /> <Image src={loadedImage} alt="" loading={'eager'} width={150} height={150} quality={100}/>
<div> <div>
<h2>{title}</h2> <h2>{title}</h2>
</div> </div>
</article> </article>
<span class="visually-hidden">{logoAltText}</span> <span class="visually-hidden">{title}</span>
</a> </a>
<style> <style>
* {
transition: all var(--a-time-default) var(--a-animation-1);
}
a { a {
text-decoration: none; text-decoration: none;
} }
article { article {
--size-value: 6.25rem;
background-color: var(--c-darkergray);
border-color: var(--c-darkgray);
padding: 10px;
display: flex; display: flex;
justify-content: center; position: relative;
align-items: center; align-items: center;
justify-content: center;
text-align: center; text-align: center;
transition: transform var(--speed) var(--ease); background-color: var(--c-primary-background);
border: 2px solid var(--c-primary-background);
border-radius: 1.25rem;
padding: 6px;
height: auto; height: auto;
width: auto; width: auto;
line-height: 100px;
border-radius: 1.25rem;
position: relative;
}
article:hover {
transform: scale(var(--hover-scale));
}
article > img {
border-radius: 1.25rem;
width: var(--size-value);
height: var(--size-value);
} }
article:hover div { article img {
border-radius: 1.25rem; border-radius: 1.25rem;
padding: 0 0.5rem; width: 80px;
display: flex; height: auto;
align-items: center;
justify-content: center;
text-align: center;
background-color: var(--c-darkgray);
height: calc(var(--size-value));
width: calc(var(--size-value) - 1rem);
opacity: 90%;
z-index: 100;
position: absolute;
}
article:hover h2 {
margin: 0;
position: absolute;
display: inline-flex;
font-weight: bold;
color: white;
font-size: 18px;
line-height: 150%;
}
article h2 {
display: none;
} }
article div { article div {
display: none; display: none;
} }
article:hover {
border-color: var(--c-accent-1);
}
article:hover div {
display: flex;
position: absolute;
margin: unset;
align-items: center;
justify-content: center;
text-align: center;
background-color: var(--c-primary-background);
border-radius: 1.25rem;
width: 80px;
height: 80px;
opacity: 90%;
z-index: 100;
}
article:hover h2 {
display: inline-flex;
font-size: 16px;
font-weight: 500;
color: var(--c-primary-text);
}
</style> </style>

View file

@ -1,27 +1,74 @@
--- ---
export interface Props {
fadeout?: boolean
}
const { fadeout } = Astro.props
const display = fadeout ? "": "display: none"
--- ---
<div> <div>
<span> <span>
I am currently working on a site to catalogue past and future TAs.<br/> I am currently creating a site to catalogue past and future TAs for the whole community.
Check it out at <a href="https://fgo-ta.com">fgo-ta.com</a>
</span> </span>
<a href=`https://fgo-ta.com/` target="_blank" rel="noopener noreferrer"><span class="fancy">Visit fgo-ta.com &gt;&gt;</span></a>
<div class="fade" style={display}></div>
</div> </div>
<style> <style>
div { div {
display: flex; display: flex;
width: 100%; width: 100%;
height: 5em; flex-wrap: nowrap;
background-color: var(--c-gray); flex-flow: column;
background-color: var(--c-primary-background);
text-align: center; text-align: center;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
color: white; color: var(--c-primary-text);
font-size: 1.5em; font-size: 1.5em;
padding: 2rem 0rem 0rem 0rem;
font-weight: 400;
font-size: 1.3rem;
} }
a { a {
color: var(--c-darkpurple); font-weight: 500;
font-family: 'Work Sans Variable', sans-serif;
color: var(--c-primary-text);
margin: 1rem 0px 0px;
padding: 0.5rem 0.75rem;
text-decoration: none; text-decoration: none;
background: var(--c-primary-background);
border-radius: 10px;
border: 2px var(--c-accent-1) solid;
transition: all var(--a-time-default) var(--a-animation-1);
}
a:hover {
border-color: var(--c-accent-1-alt);
transition: all var(--a-time-default) var(--a-animation-1);
}
.fade {
margin-top: 3rem;
background: linear-gradient(to bottom, transparent, var(--c-secondary-background));
height: 2.5rem;
width: 100%;
}
span {
margin: 0 .5rem;
}
.fancy {
color: var(--c-accent-1);
}
@supports (background-clip: text) {
a:hover .fancy {
background: linear-gradient(125deg, var(--c-accent-1), var(--c-accent-1-alt), var(--c-accent-2) );
background-clip: text;
color: transparent;
}
} }
</style> </style>

View file

@ -12,11 +12,11 @@
display: flex; display: flex;
width: 100%; width: 100%;
height: 5em; height: 5em;
background-color: var(--c-gray); background-color: var(--c-secondary-background);
text-align: center; text-align: center;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
color: white; color: var(--c-primary-text);
font-size: 1.5em; font-size: 1.5em;
} }
</style> </style>

View file

@ -0,0 +1,50 @@
---
import type { ImageMetadata } from 'astro'
export interface Props {
text: string
icon: ImageMetadata
link: string
}
const { text, icon, link } = Astro.props
const icon_src_url = `url("${icon.src}")`
---
<a href={link} target="_blank" rel="noopener noreferrer">
<div class="icon"></div>
<span class="visually-hidden">{text}</span>
</a>
<style define:vars={{ icon_src_url }}>
* {
transition: all var(--a-time-default) var(--a-animation-1);
}
a {
display: flex;
align-items: center;
justify-content: center;
width: 2.25em;
height: 2.25em;
background-color: var(--c-primary-background);
border-radius: .35rem;
border: 2px solid var(--c-primary-text);
}
a:hover {
border-color: var(--c-accent-1);
& .icon {
background: var(--c-accent-1);
}
}
.icon {
mask: var(--icon_src_url) no-repeat center;
mask-size: contain;
background-color: var(--c-primary-text);
height: 1.5em;
width: 1.5em;
}
</style>

View file

@ -0,0 +1,29 @@
---
import LinkCard from './linkCard.astro'
import socialData from '@content/data/socials.json'
import { socials } from './socials'
---
<div>
{
socialData.map((item) => (
<LinkCard
{...{ icon: socials[item.icon], text: item.icon, link: item.link }}
/>
))
}
</div>
<style>
div {
margin-top: 0.75rem;
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
width: 95%;
height: auto;
column-gap: 0.5rem;
row-gap: 0.5rem;
}
</style>

View file

@ -0,0 +1,22 @@
import discord from '@assets/custom-svg/discord.svg'
import forgejo from '@assets/custom-svg/forgejo.svg'
import rayshift from '@assets/custom-svg/rayshift.svg'
import reddit from '@assets/custom-svg/reddit.svg'
import twitch from '@assets/custom-svg/twitch.svg'
import type { ImageMetadata } from 'astro'
import mastodon from 'iconoir/icons/mastodon.svg'
import twitter from 'iconoir/icons/twitter.svg'
import youtube from 'iconoir/icons/youtube.svg'
export const socials: Record<string, ImageMetadata> = {
forgejo,
rayshift,
reddit,
twitch,
discord,
mastodon,
twitter,
youtube,
}

View file

@ -1,137 +0,0 @@
---
import { Image } from 'astro:assets';
import logo from '../assets/logo.svg'
import hamburger from 'iconoir/icons/menu.svg'
const hamburger_src_url = `url("${hamburger.src}")`;
---
<header>
<a href="/" rel="noopener noreferrer" aria-label="Home" role="navigation">
<Image src={logo} alt="Firq Website Logo"/>
<span class="visually-hidden">Firq Website Logo</span>
</a>
<ul class="desktop">
<slot name="desktop"/>
</ul>
<button class="mobile" aria-label="Navigation Button" tabindex="0" onclick="this.focus()" role="navigation">
<ul>
<slot name="mobile"/>
</ul>
<div class="placeholder"></div>
<div class="hamburger-menu" role="navigation"></div>
</button>
</header>
<style define:vars={{ hamburger_src_url }}>
header {
z-index: 1000;
position: sticky;
top: 0px;
background-color: var(--c-darkgray);
display: flex;
height: auto;
width: 100%;
align-items: flex-start;
line-height: 1.5em;
}
header > a {
margin-left: 16px;
padding-top: 8px;
display: block;
height: 48px;
width: 48px;
}
a > img {
height: 100%;
width: 100%;
object-fit: contain;
}
.desktop {
align-items: center;
justify-content: space-around;
display: none;
flex-wrap: wrap;
flex-direction: row;
height: 64px;
width: 100%;
list-style-type: none;
row-gap: 0.5em;
column-gap: 0.5ch;
margin: 0px;
line-height: 1.5em;
}
.mobile > ul {
background-color: var(--c-darkgray);
align-items: center;
flex-wrap: wrap;
flex-direction: column;
display: flex;
width: 100%;
list-style-type: none;
line-height: 3em;
}
.placeholder {
display: flex;
width: 100%;
}
.mobile {
display: flex;
background-color: var(--c-darkgray);
border: 0px;
width: 100%;
height: 64px;
}
.mobile > ul {
display: none;
padding: 0px;
}
.mobile:focus-within > ul {
display: flex;
}
.mobile:focus-within > .placeholder {
display: none;
}
.mobile:focus-within {
justify-content: top;
height: auto;
}
header:focus-within > a {
display: flex;
justify-self: top;
}
.hamburger-menu {
mask: var(--hamburger_src_url) no-repeat center;
background-color: white;
width: 2rem;
height: 2rem;
position: static;
align-self: flex-start;
margin-right: 1rem;
margin-top: 1rem;
}
@media (min-width: 1140px) {
.mobile {
display: none;
}
.desktop {
display: flex;
}
header {
height: 64px;
align-items: center;
}
header > a {
padding-top: 0px;
}
}
</style>

View file

@ -0,0 +1,37 @@
---
import NavbarDesktop from './navbarDesktop.astro'
import NavbarLogo from './navbarLogo.astro'
import NavbarMobile from './navbarMobile.astro'
---
<header>
<NavbarLogo/>
<NavbarDesktop>
<slot name="desktop" />
</NavbarDesktop>
<NavbarMobile>
<slot name="mobile" />
</NavbarMobile>
</header>
<style>
header {
z-index: 1000;
position: sticky;
top: 0px;
background-color: var(--c-primary-background);
display: flex;
height: auto;
width: 100%;
align-items: flex-start;
line-height: 1.5em;
border-bottom: 2px solid var(--c-accent-1) ;
}
@media (min-width: 1140px) {
header {
height: 64px;
align-items: center;
}
}
</style>

View file

@ -0,0 +1,29 @@
---
---
<ul>
<slot />
</ul>
<style>
ul {
align-items: center;
justify-content: space-around;
display: none;
flex-wrap: wrap;
flex-direction: row;
height: 64px;
width: 100%;
list-style-type: none;
row-gap: 0.5em;
column-gap: 0.5ch;
margin: 0px;
line-height: 1.5em;
}
@media (min-width: 1140px) {
ul {
display: flex;
}
}
</style>

View file

@ -1,7 +1,7 @@
--- ---
export interface Props { export interface Props {
currentPage?: string currentPage?: string
navtype: "mobile" | "desktop" navtype: 'mobile' | 'desktop'
link: string link: string
text: string text: string
icon: ImageMetadata icon: ImageMetadata
@ -18,10 +18,10 @@ if (currentPage === slug) {
currPage = 'current' currPage = 'current'
} }
const icon_src_url = `url("${icon.src}")`; const icon_src_url = `url("${icon.src}")`
const fulllink = `/${slug}` const fulllink = `/${slug}`
let extraattributes = navtype === "mobile" ? { tabindex: "0"} : {} let extraattributes = navtype === 'mobile' ? { tabindex: '0' } : {}
--- ---
<li> <li>
@ -30,7 +30,7 @@ let extraattributes = navtype === "mobile" ? { tabindex: "0"} : {}
rel="noopener noreferrer" rel="noopener noreferrer"
aria-label={text} aria-label={text}
class={currPage} class={currPage}
role="navigation" role="button"
{...extraattributes} {...extraattributes}
> >
<div class="icon"></div> <div class="icon"></div>
@ -39,6 +39,9 @@ let extraattributes = navtype === "mobile" ? { tabindex: "0"} : {}
</li> </li>
<style define:vars={{ icon_src_url }}> <style define:vars={{ icon_src_url }}>
* {
transition: all var(--a-time-default) var(--a-animation-1);
}
li { li {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
@ -49,7 +52,7 @@ let extraattributes = navtype === "mobile" ? { tabindex: "0"} : {}
li > a { li > a {
display: inline-flex; display: inline-flex;
color: white; color: var(--c-primary-text);
text-decoration: none; text-decoration: none;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
@ -60,24 +63,24 @@ let extraattributes = navtype === "mobile" ? { tabindex: "0"} : {}
} }
li > a:hover { li > a:hover {
color: var(--c-purplepink); color: var(--c-accent-1-alt) !important;
} }
li > a:hover > .icon { li > a:hover > .icon {
background-color: var(--c-purplepink); background-color: var(--c-accent-1-alt) !important;
} }
.current { .current {
color: var(--c-darkpurple) !important; color: var(--c-accent-1) !important;
} }
.current > .icon { .current > .icon {
background-color: var(--c-darkpurple) !important; background-color: var(--c-accent-1) !important;
} }
.icon { .icon {
mask: var(--icon_src_url) no-repeat center; mask: var(--icon_src_url) no-repeat center;
background-color: white; background-color: var(--c-primary-text);
width: 1.4em; width: 1.4em;
height: 1.4em; height: 1.4em;
} }

View file

@ -0,0 +1,32 @@
---
import { Image } from 'astro:assets'
import logo from '@assets/logo.svg'
---
<a href="/" rel="noopener noreferrer" aria-label="Home" role="button">
<Image src={logo} alt="" loading="eager" />
<span class="visually-hidden">Logo</span>
</a>
<style>
a {
margin-left: 16px;
padding-top: 8px;
height: 48px;
width: 48px;
display: flex;
justify-self: top;
align-items: center;
}
a > img {
height: 42px;
width: 42px;
object-fit: contain;
}
@media (min-width: 1140px) {
a {
padding-top: 0px;
}
}
</style>

View file

@ -0,0 +1,85 @@
---
import hamburger from 'iconoir/icons/menu.svg'
const hamburger_src_url = `url("${hamburger.src}")`
---
<div class="dropdown">
<input type="checkbox" id="dropdown" />
<ul class="dropdown-content">
<slot />
</ul>
<label for="dropdown" class="dropdown-btn" aria-label="Menu Toggle">
<div class="hamburger-menu" role="navigation"></div>
</label>
</div>
<script>
const dropdownBtn = document.querySelector(".dropdown-btn")!;
const dropdownContent = document.querySelector(".dropdown-content")!;
dropdownBtn.addEventListener("click", () => {
dropdownContent.classList.toggle("menu-open");
});
</script>
<style define:vars={{ hamburger_src_url }}>
input[type="checkbox"] {
opacity: 0;
position: absolute;
touch-action: manipulation;
}
.dropdown-content.menu-open {
display: flex;
height: auto;
transform: translateY(0);
transition: transform var(--a-time-default) var(--a-animation-1);
}
.dropdown-content {
display: none;
flex-wrap: wrap;
flex-direction: column;
align-items: center;
justify-content: center;
background-color: var(--c-primary-background);
width: 100%;
list-style-type: none;
line-height: 3em;
margin: 0.5rem 0px 0px;
padding: 0;
transform: translateY(-1em);
transition: transform var(--a-time-default) var(--a-animation-1);
}
.dropdown-btn {
height: 64px;
display:flex;
align-items: center;
justify-content: center;
touch-action: manipulation;
}
.dropdown {
display: flex;
justify-content: flex-end;
background-color: var(--c-primary-background);
border: 0px;
width: 100%;
}
.hamburger-menu {
mask: var(--hamburger_src_url) no-repeat center;
mask-size: cover;
background-color: var(--c-primary-text);
width: 2.25rem;
height: 2.25rem;
margin-right: 10px;
}
@media (min-width: 1140px) {
.dropdown {
display: none;
}
}
</style>

View file

@ -0,0 +1,106 @@
---
export interface Props {
maintext: string
subtext: string
fadeout?: boolean
baseurl?: string
returnbutton?: boolean
}
const { maintext, subtext, fadeout, baseurl, returnbutton } = Astro.props
const displayFadeout = fadeout ? "": "display: none"
const displayBackButton = returnbutton ? "": "display: none"
---
<div class="wrap">
<div class="head">{maintext}</div>
<div class="sub">{subtext}</div>
<a href=`/${baseurl}` style={displayBackButton}>&lt;&lt; Back to {baseurl}</a>
<div class="fade" style={displayFadeout}></div>
</div>
<style>
a {
font-weight: 500;
font-family: 'Work Sans Variable', sans-serif;
color: var(--c-primary-text);
margin: 1rem 0px 0px;
padding: 0.5rem 0.75rem;
text-decoration: none;
background-color: var(--c-secondary-background);
border-radius: 10px;
border-style: solid;
border-width: 2px;
border-color: var(--c-secondary-background);
text-transform: capitalize;
}
a:hover {
border-color: var(--c-accent-1);
}
.wrap {
position: relative;
width: 100%;
display: flex;
text-align: center;
align-items: center;
flex-wrap: wrap;
flex-direction: column;
color: var(--c-primary-text);
background-color: var(--c-primary-background);
}
.fade {
margin-top: 2rem;
background: linear-gradient(to bottom, transparent, var(--c-secondary-background));
height: 2.5rem;
width: 100%;
}
.head {
margin: 0 .5rem;
hyphens: auto;
padding-top: 2rem;
font-size: 3.25rem;
font-weight: 700;
font-family: 'Work Sans Variable', sans-serif;
}
.sub {
margin: 0 .5rem;
font-size: 0.9rem;
font-weight: 500;
font-family: 'Work Sans Variable', sans-serif;
}
.head {
color: var(--c-accent-1);
}
@supports (background-clip: text) {
.head {
background: linear-gradient(125deg, var(--c-accent-1), var(--c-accent-1-alt), var(--c-accent-2) );
background-clip: text;
color: transparent;
}
}
@media (min-width: 620px) {
.head {
hyphens: none;
font-size: 3.75rem;
}
.sub {
font-size: 1rem;
}
}
@media (min-width: 1000px) {
.head {
font-size: 4rem;
}
.sub {
font-size: 1.2rem;
}
}
</style>

View file

@ -0,0 +1,76 @@
---
import LinkContainer from "../links/linkContainer.astro";
---
<div class="wrap">
<div class="head">Hi, I'm <span class="fancy">Firq</span></div>
<div class="sub">&lt;/ Software dev / Scathach enthusiast / Germany /&gt;</div>
<LinkContainer />
<div class="fade"></div>
</div>
<style>
.wrap {
position: relative;
width: 100%;
display: flex;
text-align: center;
align-items: center;
flex-wrap: wrap;
flex-direction: column;
color: var(--c-primary-text);
background-color: var(--c-primary-background);
}
.fade {
margin-top: 1.5rem;
background: linear-gradient(to bottom, transparent, var(--c-secondary-background));
height: 2.5rem;
width: 100%;
}
.head {
padding-top: 2rem;
font-size: 3rem;
font-weight: 700;
font-family: 'Work Sans Variable', sans-serif;
}
.sub {
font-size: 1rem;
font-weight: 400;
font-family: 'Work Sans Variable', sans-serif;
width: 97.5%;
}
.fancy {
color: var(--c-accent-1);
}
@supports (background-clip: text) {
.fancy {
background: linear-gradient(125deg, var(--c-accent-1), var(--c-accent-1-alt), var(--c-accent-2) );
background-clip: text;
color: transparent;
}
}
@media (min-width: 620px) {
.head {
font-size: 3rem;
}
.sub {
font-size: 1rem;
}
}
@media (min-width: 1000px) {
.head {
font-size: 4rem;
}
.sub {
font-size: 1.25rem;
}
}
</style>

View file

@ -44,7 +44,7 @@ const { id, thumbnail } = Astro.props
.warningtext { .warningtext {
display: flex; display: flex;
justify-content: center; justify-content: center;
background-color: var(--c-darkgray); background-color: var(--c-primary-background);
width: 640px; width: 640px;
height: 360px; height: 360px;
} }

View file

@ -75,7 +75,7 @@ allPosts.sort(
The `frontmatter` interface is a kind of header for the markdown files which provides astro with metadata like title, author and such. The `frontmatter` interface is a kind of header for the markdown files which provides astro with metadata like title, author and such.
It is structured like this: It is structured like this:
``` ```yaml
--- ---
layout: ../../layouts/blogPost.astro layout: ../../layouts/blogPost.astro
title: 'How Astro powers this site' title: 'How Astro powers this site'

View file

@ -74,7 +74,7 @@ As you can see, I am using a custom container for the runtime stage, which will
### Custom serve docker - My new goto for static site serving ### Custom serve docker - My new goto for static site serving
When starting out with the `Dockerfile`, I first used the standard `node:lts` image for the runtime. This meant I also had to install the `serve` package by `@warren-bank` each time I built the container. Since this takes extra time and resources each run, I decided to create a pre-configured docker container that can be used for this instead. When starting out with the `Dockerfile`, I first used the standard `node:lts` image for the runtime. This meant I also had to install the `serve` package by `@warren-bank` each time I built the container. Since this takes extra time and resources each run, I decided to create a pre-configured docker container that can be used for this instead.
The `Dockerfile` for that one is laughable simple: The `Dockerfile` for that one is laughable simple:
@ -89,7 +89,7 @@ The container is also published to the docker registry that the Forgejo instance
Since my website is now using a docker container instead of the previous `rsync` + `screen` approach, a new deployment solution was needed. Since my website is now using a docker container instead of the previous `rsync` + `screen` approach, a new deployment solution was needed.
In the end, Neshura proposed to use <a href="https://github.com/louislam/dockge" target="_blank" rel="noopener noreferrer" style="font-style: unset">Dockge</a>, a new, simple container management tool build by the developer of the beloved uptime-kuma. With that set up, getting the website only was really really easy: In the end, Neshura proposed to use <a href="https://github.com/louislam/dockge" target="_blank" rel="noopener noreferrer" >Dockge</a>, a new, simple container management tool build by the developer of the beloved uptime-kuma. With that set up, getting the website only was really really easy:
1. Create a new stack 1. Create a new stack
2. Add a container entry 2. Add a container entry
@ -161,4 +161,4 @@ In the end, I must say migrating was a lot more painless than expected. Sure, Fo
I also updated my about page to now reflect the migration, as the old technologies weren't up-to-date anymore. I also updated my about page to now reflect the migration, as the old technologies weren't up-to-date anymore.
If you want to check out the repository by yourself, feel free to do so. <a href="https://forgejo.neshweb.net/Firq/firq-dev-website" target="_blank" rel="noopener noreferrer" style="font-style: unset">It is available on Neshuras Forgejo instance</a> If you want to check out the repository by yourself, feel free to do so. <a href="https://forgejo.neshweb.net/Firq/firq-dev-website" target="_blank" rel="noopener noreferrer" >It is available on Neshuras Forgejo instance</a>

View file

@ -81,7 +81,7 @@ screen -S website-firq-npx -dm npx serve public/ -p 9000 -c serve.json"
With the following directory structure on the remote host, this can easily be explained: With the following directory structure on the remote host, this can easily be explained:
``` ```plain
/ /
├─ public/ ├─ public/
│ ├─ site content │ ├─ site content

View file

@ -2,7 +2,7 @@
layout: ../../layouts/blogPost.astro layout: ../../layouts/blogPost.astro
title: 'FGO Mechanics: Instant Death' title: 'FGO Mechanics: Instant Death'
pubDate: 2023-08-19 pubDate: 2023-08-19
description: 'Blog post talking about instant death in FGO, how you can take advantage of it and what its limits are.' description: 'Blog post talking about instant death in FGO and how you can take advantage.'
author: 'Firq' author: 'Firq'
tags: ['fgo', 'games'] tags: ['fgo', 'games']
--- ---
@ -18,10 +18,10 @@ it doesn't interact with the hitrate, but if you have proof that this is differe
Instant Kill & Instant Death: One of the most rejected systems to exist in FGO. Most players know of it, but discard it because of its unreliability and uselessness against stronger enemies. In this article, I want to dive a bit into the workings of Instant Kill and help you understand how you can, in specific scenarios, use it to your advantage. Instant Kill & Instant Death: One of the most rejected systems to exist in FGO. Most players know of it, but discard it because of its unreliability and uselessness against stronger enemies. In this article, I want to dive a bit into the workings of Instant Kill and help you understand how you can, in specific scenarios, use it to your advantage.
There are a multitude of servants that have access to instant-kill, but I will only highlight a few here (You can view the full list on <a href="https://gamepress.gg/grandorder/instant-death" target="_blank" rel="noopener noreferrer" style="font-style: unset">Gamepress</a>) There are a multitude of servants that have access to instant-kill, but I will only highlight a few here (You can view the full list on <a href="https://gamepress.gg/grandorder/instant-death" target="_blank" rel="noopener noreferrer" >Gamepress</a>)
- **Nitocris (Caster)**: The most prominent figure, as she has easy access to her instant-killing NP and a skill that increases her death hit rate - **Nitocris (Caster)**: The most prominent figure, as she has easy access to her instant-killing NP and a skill that increases her death hit rate
- **Void Shiki (Saber)**: Another Example of an AOE Instant-Kill servant who also has access to Death Resist debuffs. One quest in her release event even specifically used the Instant Kill mechanic (<a href="https://apps.atlasacademy.io/db/NA/quest/94021308/1" target="_blank" rel="noopener noreferrer" style="font-style: unset">Quest Link here</a>) - **Void Shiki (Saber)**: Another Example of an AOE Instant-Kill servant who also has access to Death Resist debuffs. One quest in her release event even specifically used the Instant Kill mechanic (<a href="https://apps.atlasacademy.io/db/NA/quest/94021308/1" target="_blank" rel="noopener noreferrer" >Quest Link here</a>)
- **King Hassan (Assassin)**: The only servant that can afflict enemies with instant death on normal attacks (Note: David can do this as well, but only if he has his Bond CE equipped) - **King Hassan (Assassin)**: The only servant that can afflict enemies with instant death on normal attacks (Note: David can do this as well, but only if he has his Bond CE equipped)
But since Instant Kill is based on probability, most players are relucatant to use it in their farming compositions. This thems from the different death rates enemies have: But since Instant Kill is based on probability, most players are relucatant to use it in their farming compositions. This thems from the different death rates enemies have:
@ -53,10 +53,10 @@ The parameters here are the following:
## Example ## Example
The main reason this came up was because of a farming comp used in <a href="https://apps.atlasacademy.io/db/NA/quest/94061820/1" target="_blank" rel="noopener noreferrer" style="font-style: unset">Hunting Quest XI - Day 5 - Pride+</a>. The node is structured The main reason this came up was because of a farming comp used in <a href="https://apps.atlasacademy.io/db/NA/quest/94061820/1" target="_blank" rel="noopener noreferrer" >Hunting Quest XI - Day 5 - Pride+</a>. The node is structured
into a 2 - 1 - 1 Layout, meaning using a dual-DPS setup would be the way to go. into a 2 - 1 - 1 Layout, meaning using a dual-DPS setup would be the way to go.
Looking at the stats for the first wave, it made sense to use Nitocris: Both Ghouls have a 100% Death Rate <a href="https://apps.atlasacademy.io/db/NA/enemy/9940700" target="_blank" rel="noopener noreferrer" style="font-style: unset">according to Atlas Academy</a>. Looking at the stats for the first wave, it made sense to use Nitocris: Both Ghouls have a 100% Death Rate <a href="https://apps.atlasacademy.io/db/NA/enemy/9940700" target="_blank" rel="noopener noreferrer" >according to Atlas Academy</a>.
I went with using Nitocris, since she has a 100% NP charge and a skill that increases her Instant Death rate by 100%. Not needing any additional charge meant that no other buffs or AOE charges needed to be used on turn 1. I went with using Nitocris, since she has a 100% NP charge and a skill that increases her Instant Death rate by 100%. Not needing any additional charge meant that no other buffs or AOE charges needed to be used on turn 1.

16
src/content/config.ts Normal file
View file

@ -0,0 +1,16 @@
import { z, defineCollection } from 'astro:content'
const blogCollection = defineCollection({
type: 'content', // v2.5.0 and later
schema: z.object({
title: z.string(),
tags: z.array(z.string()),
pubDate: z.date(),
description: z.string(),
author: z.string(),
}),
})
export const collections = {
blog: blogCollection,
}

View file

@ -37,7 +37,7 @@
{ {
"name": "Vessel of the Saint", "name": "Vessel of the Saint",
"imageFile": "vessel.png", "imageFile": "vessel.png",
"mlb": false "mlb": true
}, },
{ {
"name": "Devilish Bodhisattva", "name": "Devilish Bodhisattva",

View file

@ -10,5 +10,11 @@
"origin": "Fate/Grand Order", "origin": "Fate/Grand Order",
"imageFile": "skadi.png", "imageFile": "skadi.png",
"link": "https://twitter.com/firq_ow/status/1544321985995489280" "link": "https://twitter.com/firq_ow/status/1544321985995489280"
},
{
"name": "Summer Skadi",
"origin": "Fate/Grand Order",
"imageFile": "summerskadi.png",
"link": "https://twitter.com/firq_ow/status/1816355501216596073"
} }
] ]

View file

@ -9,6 +9,16 @@
"bondceImageFile": "scathach.png", "bondceImageFile": "scathach.png",
"bond10": true "bond10": true
}, },
{
"name": "Summer Skadi",
"level": "120",
"np": "5",
"skills": "10 / 10 / 10",
"ml": "10",
"servantImageFile": "summerskadi_03.png",
"bondceImageFile": "summerskadi.png",
"bond10": true
},
{ {
"name": "Skadi", "name": "Skadi",
"level": "120", "level": "120",
@ -19,6 +29,16 @@
"bondceImageFile": "skadi.png", "bondceImageFile": "skadi.png",
"bond10": true "bond10": true
}, },
{
"name": "Summer Skadi",
"level": "70",
"np": "1",
"skills": "10 / 10 / 10",
"ml": "1",
"servantImageFile": "summerskadi_02.png",
"bondceImageFile": "summerskadi.png",
"bond10": true
},
{ {
"name": "Skadi", "name": "Skadi",
"level": "70", "level": "70",
@ -49,6 +69,16 @@
"bondceImageFile": "koyanlight.png", "bondceImageFile": "koyanlight.png",
"bond10": true "bond10": true
}, },
{
"name": "Koyanskaya of Light",
"level": "70",
"np": "1",
"skills": "10 / 10 / 10",
"ml": "Not Unlocked",
"servantImageFile": "koyanlight_02.png",
"bondceImageFile": "koyanlight.png",
"bond10": true
},
{ {
"name": "Castoria", "name": "Castoria",
"level": "90", "level": "90",
@ -157,7 +187,7 @@
"ml": "10", "ml": "10",
"servantImageFile": "douman_01.png", "servantImageFile": "douman_01.png",
"bondceImageFile": "douman.png", "bondceImageFile": "douman.png",
"bond10": false "bond10": true
}, },
{ {
"name": "Himiko", "name": "Himiko",
@ -190,7 +220,7 @@
"bond10": false "bond10": false
}, },
{ {
"name": "Taigon Wang", "name": "Taigong Wang",
"level": "70", "level": "70",
"np": "1", "np": "1",
"skills": "10 / 9 / 10", "skills": "10 / 9 / 10",
@ -225,6 +255,16 @@
"np": "1", "np": "1",
"skills": "9 / 9 / X", "skills": "9 / 9 / X",
"ml": "Not Unlocked", "ml": "Not Unlocked",
"servantImageFile": "liz_02.png",
"bondceImageFile": "liz.png",
"bond10": false
},
{
"name": "Elisabeth Báthory",
"level": "1",
"np": "1",
"skills": "9 / X / X",
"ml": "Not Unlocked",
"servantImageFile": "liz_01.png", "servantImageFile": "liz_01.png",
"bondceImageFile": "liz.png", "bondceImageFile": "liz.png",
"bond10": false "bond10": false

View file

@ -0,0 +1,42 @@
[
{
"link": "https://www.youtube.com/@Firq_",
"icon": "youtube",
"text": "Youtube"
},
{
"link": "https://mastodon.neshweb.net/@Firq",
"icon": "mastodon",
"text": "Mastodon"
},
{
"link": "https://twitter.com/firq_ow",
"icon": "twitter",
"text": "Twitter"
},
{
"link": "https://twitch.tv/Firq",
"icon": "twitch",
"text": "Twitch"
},
{
"link": "https://discord.com/users/186014064835690496",
"icon": "discord",
"text": "Discord"
},
{
"link": "https://www.reddit.com/user/Firq_ow/",
"icon": "reddit",
"text": "Reddit"
},
{
"link": "https://forgejo.neshweb.net/Firq",
"icon": "forgejo",
"text": "Forgejo"
},
{
"link": "https://rayshift.io/na/firq",
"icon": "rayshift",
"text": "Rayshift"
}
]

1
src/env.d.ts vendored
View file

@ -1 +1,2 @@
/// <reference path="../.astro/types.d.ts" />
/// <reference types="astro/client" /> /// <reference types="astro/client" />

View file

@ -1,8 +1,12 @@
--- ---
import Navbar from '../components/navbar.astro' import '@fontsource-variable/work-sans'
import NavbarEntry from '../components/navbarEntry.astro' import workSans from '@fontsource-variable/work-sans/files/work-sans-latin-wght-normal.woff2'
import navdata from '../../static/data/_navdata.json'
import embed from '../assets/embed.png' import Navbar from '@components/navbar/navbar.astro'
import NavbarEntry from '@components/navbar/navbarEntry.astro'
import navdata from '@content/data/navdata.json'
import embed from '@assets/embed.png'
import favicon from '@assets/favicon.ico'
import home from 'iconoir/icons/home.svg' import home from 'iconoir/icons/home.svg'
import servants from 'iconoir/icons/task-list.svg' import servants from 'iconoir/icons/task-list.svg'
@ -68,8 +72,17 @@ const mapped_navdata = navdata.map((item) => ({
name="google-site-verification" name="google-site-verification"
content="SmcWcewh7DCANcLeTe3ntU0R-LESbo_bsolICJnmulE" content="SmcWcewh7DCANcLeTe3ntU0R-LESbo_bsolICJnmulE"
/> />
<!-- Disable DarkReader, as site is already in dark mode -->
<meta name="darkreader-lock" content="this site only has darkmode" />
<!-- Links --> <!-- Links -->
<link rel="icon" type="image/ico" href="/favicon.ico" /> <link
rel="preload"
as="font"
crossorigin="anonymous"
href={workSans}
type="font/woff2"
/>
<link rel="icon" type="image/ico" href={favicon} />
<link rel="sitemap" href="/sitemap-index.xml" /> <link rel="sitemap" href="/sitemap-index.xml" />
<link href="https://mastodon.neshweb.net/@Firq" rel="me" /> <link href="https://mastodon.neshweb.net/@Firq" rel="me" />
</head> </head>
@ -77,34 +90,60 @@ const mapped_navdata = navdata.map((item) => ({
<Navbar> <Navbar>
{ {
mapped_navdata.map((item) => ( mapped_navdata.map((item) => (
<NavbarEntry currentPage={currentpage} navtype="desktop" {...item} slot="desktop"/> <NavbarEntry
currentPage={currentpage}
navtype="desktop"
{...item}
slot="desktop"
/>
)) ))
} }
{ {
mapped_navdata.map((item) => ( mapped_navdata.map((item) => (
<NavbarEntry currentPage={currentpage} navtype="mobile" {...item} slot="mobile"/> <NavbarEntry
currentPage={currentpage}
navtype="mobile"
{...item}
slot="mobile"
/>
)) ))
} }
</Navbar> </Navbar>
<slot /> <slot />
</body> </body>
</html> </html>
<style is:global> <style is:global>
:root { :root {
--hover-scale: 1.05; /* Animations */
--speed: 50%; --a-time-default: 200ms;
--ease: 50%; --a-time-short: 100ms;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; --a-time-slow: 1000ms;
--c-darkgray: #1e1e1e; --a-animation-1: ease-in-out;
--c-duskgray: #242424;
--c-gray: #2e2e2e; /* Fonts */
--c-lightgray: #3e3e3e; --f-default: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
--c-darkpurple: #b86cff; --f-title: 'Work Sans Variable', sans-serif;
--c-purplepink: #c105ff;
--c-darkergray: #1b1b1b; font-family: var(--f-default);
/* Colors */
--c-primary-background: #1b1b1b;
--c-secondary-background: #333;
--c-primary-text: #eee;
--c-accent-1: #b86cff;
--c-accent-1-alt: #c105ff;
--c-accent-2: #ff0077;
--c-rgb-primary-background: 27, 27, 27;
--c-rgb-secondary-background: 51, 51, 51;
--c-rgb-primary-text: 238, 238, 238;
--c-rgb-accent-1: 184, 108, 255;
--c-rgb-accent-1-alt: 193, 5, 255;
--c-rgb-accent-2: 255, 0, 119;
} }
body { body {
background: var(--c-lightgray); background: var(--c-secondary-background);
margin: 0px; margin: 0px;
} }
@ -117,5 +156,5 @@ const mapped_navdata = navdata.map((item) => ({
padding: 0; padding: 0;
position: absolute; position: absolute;
width: 1px; width: 1px;
} }
</style> </style>

View file

@ -1,74 +0,0 @@
---
export interface Props {
title: string
}
const { title } = Astro.props
---
<section class="base">
<h1>{title}</h1>
<div>
<slot />
</div>
</section>
<style>
h1 {
font-size: 40px;
line-height: 48px;
letter-spacing: -1px;
color: white;
font-size: 2.25rem;
margin-top: 1rem;
margin-bottom: 0;
margin-left: auto;
margin-right: auto;
padding: 0.25rem 0.75rem;
max-width: max-content;
background-color: var(--c-darkgray);
padding: 0.25rem 1.5rem;
border-radius: 0.5rem;
padding-bottom: 0.5rem;
}
div {
row-gap: 1em;
column-gap: 1em;
justify-content: center;
align-self: center;
display: flex;
flex-flow: row wrap;
padding: 1em;
color: white;
font-size: 1em;
}
.base {
margin-left: 1rem;
margin-right: 1rem;
}
@media (min-width: 400px) {
.base {
margin-left: 3rem;
margin-right: 3rem;
}
}
@media (min-width: 1500px) {
.base {
margin-left: 10%;
margin-right: 10%;
}
}
@media (min-width: 512px) {
div {
justify-content: left;
}
}
@media (min-width: 520px) {
h1 {
margin: 0.5rem 0.75rem 0.5rem 0.75rem;
}
}
</style>

View file

@ -30,33 +30,23 @@ const { title } = Astro.props
padding: 1em; padding: 1em;
position: relative; position: relative;
} }
div h1 { h1 {
font-size: 40px; font-size: 40px;
line-height: 48px;
letter-spacing: -1px; letter-spacing: -1px;
color: white; color: var(--c-primary-text);
margin-top: 2rem; margin: 0 auto 0px;
margin-bottom: 0px; padding: 0.25rem 1.5rem 0.5rem;
margin-left: auto;
margin-right: auto;
padding: 0.25rem 1.5rem;
border-radius: 0.5rem;
max-width: max-content; max-width: max-content;
background-color: var(--c-darkgray); &:after {
padding-bottom: 0.5rem; content:' ';
} display: block;
@media (min-width: 512px) { width: 65%;
div { height: 3px;
row-gap: 1.5em; margin: auto;
column-gap: 1.5em; background-color: var(--c-accent-1);
} }
} }
.base {
margin-left: 1rem;
margin-right: 1rem;
}
@media (min-width: 1000px) { @media (min-width: 1000px) {
.base { .base {
margin-left: 3rem; margin-left: 3rem;

View file

@ -1,4 +1,5 @@
--- ---
import SmallTitle from '@components/titles/smallTitle.astro'
import Layout from './Layout.astro' import Layout from './Layout.astro'
const { frontmatter } = Astro.props const { frontmatter } = Astro.props
@ -13,108 +14,90 @@ const date = new Date(frontmatter.pubDate).toLocaleDateString(
'en-GB', 'en-GB',
options_date options_date
) )
const subtext = `Written by ${frontmatter.author} • Published on ${date}`
--- ---
<Layout title={title} currentpage="blog" descriptionOverride={description}> <Layout title={title} currentpage="blog" descriptionOverride={description}>
<a href="/blog"><i class="iconoir-fast-arrow-left"></i>Back to all posts</a> <SmallTitle maintext={frontmatter.title} subtext={subtext} fadeout={true} returnbutton={true} baseurl='blog'/>
<div> <article>
<h1> <slot />
{frontmatter.title} </article>
</h1>
<p>by {frontmatter.author} • Published on {date}</p>
<article>
<slot />
</article>
</div>
</Layout> </Layout>
<style> <style>
a { article {
display: flex; color: var(--c-primary-text);
align-items: center;
justify-content: center;
width: 100%;
text-align: center;
color: white;
background-color: var(--c-gray);
padding: 0.5rem 0px;
margin-bottom: 2rem;
text-decoration: none;
}
h1 {
font-size: 34px;
line-height: 40px;
letter-spacing: -1px;
color: white;
margin: 0.5rem 3rem 0.5rem 3rem; margin: 0.5rem 3rem 0.5rem 3rem;
padding: 0.25rem 0.75rem; font-size: 1.1em;
max-width: max-content; text-align: justify;
background-color: var(--c-darkgray); padding-bottom: 5rem;
padding: 0.25rem 1rem;
border-radius: 0.5rem;
padding-bottom: 0.5rem;
}
p {
color: white;
margin: 0.5rem 3rem 0.5rem 3rem;
padding: 0.25rem 0.75rem;
max-width: max-content;
background-color: var(--c-gray);
border-radius: 0.5rem;
padding-bottom: 0.5rem;
} }
article :global(h2) { article :global(h2) {
margin-right: 3rem; font-size: 32px;
word-wrap: normal; word-wrap: normal;
color: white; color: var(--c-primary-text);
padding: 0.25rem 0.75rem;
max-width: max-content; max-width: max-content;
background-color: var(--c-darkgray);
padding: 0.25rem 1rem;
border-radius: 0.5rem;
padding-bottom: 0.5rem; padding-bottom: 0.5rem;
text-align: left;
line-height: 32px;
&:after {
content:' ';
display: block;
width: 75%;
margin-top: 2px;
border: 1px solid var(--c-accent-1);
box-shadow:inset 0 1px 1px rgba(0, 0, 0, .05);
}
} }
article :global(h3) { article :global(h3) {
margin-bottom: 0.5rem; font-size: 24px;
margin-right: 3rem;
word-wrap: normal; word-wrap: normal;
color: white; color: var(--c-primary-text);
padding: 0.25rem 0.75rem;
max-width: max-content; max-width: max-content;
background-color: var(--c-darkgray);
padding: 0.25rem 1rem;
border-radius: 0.5rem;
padding-bottom: 0.5rem; padding-bottom: 0.5rem;
text-align: left;
line-height: 32px;
&:after {
content:' ';
display: block;
width: 75%;
margin-top: 2px;
border: 1px solid var(--c-accent-1);
box-shadow:inset 0 1px 1px rgba(0, 0, 0, .05);
}
} }
article :global(h4) { article :global(h4) {
margin-bottom: 0.5rem; font-size: 18px;
margin-right: 3rem;
word-wrap: normal; word-wrap: normal;
color: white; color: var(--c-primary-text);
padding: 0.25rem 0.75rem;
max-width: max-content; max-width: max-content;
background-color: var(--c-darkgray); margin-bottom: 0px;
padding: 0.25rem 1rem; text-align: left;
border-radius: 0.5rem; line-height: 32px;
padding-bottom: 0.5rem; &:after {
content:' ';
display: block;
width: 75%;
margin-top: 1px;
border: 1px solid var(--c-accent-1);
box-shadow:inset 0 1px 1px rgba(0, 0, 0, .05);
}
} }
article :global(a) { article :global(a) {
color: #dcb7ff; color: #dcb7ff;
text-decoration: none; text-decoration: none;
font-style: italic; font-style: italic;
} }
article {
color: white;
margin: 0.5rem 3rem 0.5rem 3rem;
font-size: 1.1em;
padding-bottom: 5rem;
}
article :global(.astro-code) { article :global(.astro-code) {
width: auto; width: auto;
padding: 1rem 1rem 1rem 2rem; padding: 1rem 1rem 1rem 2rem;
} }
article :global(code) { article :global(code) {
font-weight: bold; font-weight: bold;
color: orange; color: orange;
@ -122,31 +105,16 @@ const date = new Date(frontmatter.pubDate).toLocaleDateString(
@media (min-width: 1000px) { @media (min-width: 1000px) {
article { article {
margin-left: 10rem; margin-left: 22.5%;
margin-right: 10rem; margin-right: 22.5%;
} }
h1 { h1 {
margin-left: 10rem; margin-left: 20%;
margin-right: 10rem; margin-right: 20%;
} }
p { p {
margin-left: 10rem; margin-left: 20%;
margin-right: 10rem; margin-right: 20%;
}
}
@media (min-width: 1500px) {
article {
margin-left: 20rem;
margin-right: 20rem;
}
h1 {
margin-left: 20rem;
margin-right: 20rem;
}
p {
margin-left: 20rem;
margin-right: 20rem;
} }
} }
</style> </style>

View file

@ -1,36 +1,59 @@
--- ---
export interface Props { export interface Props {
title: string title: string
titlehidden?: boolean
displayLine?: boolean
} }
const { title, titlehidden, displayLine } = Astro.props
const { title } = Astro.props const display = titlehidden ? "display: none" : ""
const line = displayLine ? "flex" : "none"
--- ---
<section> <section>
<h1>{title}</h1> <h1 style={display}>{title}</h1>
<div class="wrapper"> <div class="wrapper">
<div class="start hightlighter"></div>
<div class="line"></div> <div class="line"></div>
<slot /> <slot />
<div class="drop"></div> <div class="drop hightlighter"></div>
</div> </div>
</section> </section>
<style> <style define:vars={{ line }}>
.drop { section {
padding-left: 0.25em;
padding-right: 0.25em;
padding-bottom: 5rem;
}
.hightlighter {
left: 0;
right: 0;
display: flex; display: flex;
position: absolute; position: absolute;
visibility: visible; visibility: visible;
left: 0;
right: 0;
bottom: -5rem;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
height: 1.5rem; height: 1.5rem;
width: 1.5rem; width: 1.5rem;
}
.drop {
bottom: -5rem;
border-radius: 0% 50% 50% 50%; border-radius: 0% 50% 50% 50%;
transform: rotate(45deg); transform: rotate(45deg);
background-color: var(--c-darkpurple); background-color: var(--c-accent-1);
} }
.start {
top: -2rem;
border-radius: 40%;
border-style: solid;
border-width: 0.25rem;
border-color: var(--c-secondary-background);
background-color: var(--c-accent-1);
}
.line { .line {
display: flex; display: flex;
position: absolute; position: absolute;
@ -39,40 +62,41 @@ const { title } = Astro.props
right: 0; right: 0;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
background-color: var(--c-darkpurple); background-color: var(--c-accent-1);
height: calc(100% + 5rem); height: calc(100% + 5rem);
translate: 0% 2rem; translate: 0% 2rem;
width: 0.25rem; width: 0.25rem;
z-index: -1; z-index: -1;
} }
h1 { h1 {
font-size: 40px;
line-height: 48px; line-height: 48px;
letter-spacing: -1px; letter-spacing: -1px;
color: white; color: var(--c-primary-text);
font-size: 2.25rem; font-size: 1.6rem;
margin-top: 1rem; margin-top: 1rem;
margin-bottom: 0; margin-bottom: 0;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
padding: 0.25rem 0.75rem;
max-width: max-content; max-width: max-content;
background-color: var(--c-darkgray); background-color: var(--c-primary-background);
padding: 0.25rem 1.5rem; padding: 0.25rem 1.5rem;
border-radius: 0.5rem; border-radius: 0.5rem;
padding-bottom: 0.5rem; padding-bottom: 0.5rem;
justify-self: center;
text-align: center;
} }
.wrapper { .wrapper {
margin: 2rem 3rem 0.5rem 3rem; margin: 2rem 2rem 0.5rem 2rem;
display: flex; display: flex;
flex-flow: column wrap; flex-flow: column wrap;
row-gap: 1em; row-gap: 1em;
column-gap: 1em; column-gap: 1em;
align-self: center; align-self: center;
align-items: stretch; align-items: stretch;
align-content: center;
justify-content: space-around; justify-content: space-around;
padding: 1em; padding: 1em;
color: white; color: var(--c-primary-text);
font-size: 1em; font-size: 1em;
position: relative; position: relative;
} }
@ -80,21 +104,41 @@ const { title } = Astro.props
.drop { .drop {
margin-left: 1.5rem; margin-left: 1.5rem;
} }
.start {
margin-left: 1.25rem;
}
.line { .line {
margin-left: 2.1rem; margin-left: 2.1rem;
} }
h1 { h1 {
margin-left: 3rem; margin-left: 3rem;
font-size: 1.85rem;
} }
} }
@media (min-width: 1500px) { @media (min-width: 1100px) {
.wrapper { .wrapper {
margin-left: 20rem; margin-left: 20%;
margin-right: 20rem; margin-right: 20%;
flex-direction: row;
}
section {
padding-bottom: unset;
}
.drop, .start, .line {
display: var(--line);
margin-left: 2rem;
}
.start {
margin-left: 1.75rem;
}
.line {
margin-left: 2.6rem;
height: calc(100% + 6rem);
translate: 0px -2rem;
} }
h1 { h1 {
margin-left: 20rem; margin-left: 15rem;
margin-right: 20rem; margin-right: 15rem;
} }
} }
</style> </style>

View file

@ -15,18 +15,23 @@ const { title } = Astro.props
<style> <style>
h1 { h1 {
color: white; color: var(--c-primary-text);
font-size: 26px; font-size: 24px;
font-weight: 700;
line-height: 32px; line-height: 32px;
letter-spacing: -1px; font-family: 'Work Sans Adaptive', sans-serif;
margin: 0.5rem 0px 0.5rem 0.5em;
padding: 0.25rem 0.75rem;
width: max-content; width: max-content;
background-color: var(--c-darkgray); margin: 0 auto 0.5rem;
padding: 0.25rem 1rem; &:after {
border-radius: 0.5rem; content:' ';
padding-bottom: 0.5rem; display: block;
width: 75%;
height: 2px;
margin: -1px auto auto;
background-color: var(--c-accent-1);
}
} }
div { div {
row-gap: 1em; row-gap: 1em;
column-gap: 1em; column-gap: 1em;
@ -51,6 +56,14 @@ const { title } = Astro.props
margin-left: 3rem; margin-left: 3rem;
margin-right: 3rem; margin-right: 3rem;
} }
h1 {
margin-left: 0;
margin-right: 0;
&:after {
margin: -2px 0 0;
}
}
} }
@media (min-width: 1500px) { @media (min-width: 1500px) {
.base { .base {

View file

@ -1,8 +1,8 @@
--- ---
import okita from '../assets/okita.png' import okita from '@assets/okita.png'
import atlas from '../assets/atlas.png' import atlas from '@assets/atlas.png'
import foxcat from '../assets/lurker.png' import foxcat from '@assets/lurker.png'
import padoru from '../assets/padoru.png' import padoru from '@assets/padoru.png'
import { Image } from 'astro:assets' import { Image } from 'astro:assets'
import packagejson from '../../package.json' import packagejson from '../../package.json'
@ -75,7 +75,7 @@ const release = `https://forgejo.neshweb.net/Firq/firq-dev-website/releases/tag/
rel="noopener noreferrer">AnthonyJ</a rel="noopener noreferrer">AnthonyJ</a
> for providing me with the custom Shishou favicon. > for providing me with the custom Shishou favicon.
<div class="sticky-image-wrapper"> <div class="sticky-image-wrapper">
<Image src={padoru} alt="Hashire sori yo ..." /> <Image src={padoru} alt="Hashire sori yo ..." width={64} height={64} quality={100}/>
</div> </div>
</div> </div>
<br /> <br />
@ -88,11 +88,11 @@ const release = `https://forgejo.neshweb.net/Firq/firq-dev-website/releases/tag/
<style> <style>
footer { footer {
color: white; color: var(--c-primary-text);
bottom: 0; bottom: 0;
} }
footer > div > a { footer > div > a {
color: white; color: var(--c-primary-text);
} }
.sticky-image-wrapper { .sticky-image-wrapper {
position: fixed; position: fixed;
@ -108,7 +108,7 @@ const release = `https://forgejo.neshweb.net/Firq/firq-dev-website/releases/tag/
bottom: -100px; bottom: -100px;
height: 64px; height: 64px;
width: 64px; width: 64px;
transition: transform 1s ease-in-out; transition: transform var(--a-time-slow) var(--a-animation-1);
transform: translateX(-50%); transform: translateX(-50%);
} }
</style> </style>

View file

@ -0,0 +1,65 @@
---
export interface Props {
title: string
}
const { title } = Astro.props
---
<div class="base">
<h1>{title}</h1>
<div>
<slot />
</div>
</div>
<style>
.base {
display: flex;
flex-direction: column;
justify-content: center;
text-align: center;
}
.base div {
display: flex;
position: relative;
flex-flow: row wrap;
row-gap: 1em;
column-gap: 1em;
justify-content: center;
align-self: center;
padding: 1em;
}
.base h1 {
font-size: 40px;
letter-spacing: -1px;
color: var(--c-primary-text);
margin: 0 auto 0px;
padding: 0.25rem 1.5rem 0.5rem;
max-width: max-content;
&:after {
content:' ';
display: block;
width: 65%;
height: 3px;
margin: auto;
background-color: var(--c-accent-1);
}
}
@media (min-width: 1000px) {
.base div {
margin-left: 3rem;
margin-right: 3rem;
}
}
@media (min-width: 1500px) {
.base div {
margin-left: 10%;
margin-right: 10%;
}
}
</style>

View file

@ -24,34 +24,36 @@ if (abovetext === undefined) {
<style> <style>
div > div { div > div {
row-gap: 1.5em; display: flex;
column-gap: 1.5em; position: relative;
flex-flow: row wrap;
row-gap: 1em;
column-gap: 1em;
justify-content: center; justify-content: center;
align-self: center; align-self: center;
display: flex;
flex-flow: row wrap;
padding: 1em; padding: 1em;
} }
h1 { h1 {
font-size: 40px; font-size: 40px;
line-height: 48px;
letter-spacing: -1px; letter-spacing: -1px;
color: white; color: var(--c-primary-text);
margin-top: 2rem; margin: 0 auto 0px;
margin-bottom: 0; padding: 0.25rem 1.5rem 0.5rem;
margin-left: auto;
margin-right: auto;
padding: 0.25rem 0.75rem;
max-width: max-content; max-width: max-content;
background-color: var(--c-darkgray); &:after {
padding: 0.25rem 1.5rem; content:' ';
border-radius: 0.5rem; display: block;
padding-bottom: 0.5rem; width: 65%;
height: 3px;
margin: auto;
background-color: var(--c-accent-1);
}
} }
h2 { h2 {
color: white; color: var(--c-primary-text);
font-size: 16px; font-size: 16px;
font-weight: 600; font-weight: 400;
margin: 5; margin: 5;
line-height: 20px; line-height: 20px;
text-align: center; text-align: center;

View file

@ -1,8 +1,8 @@
--- ---
import { Image } from 'astro:assets' import { Image } from 'astro:assets'
import Layout from '../layouts/Layout.astro' import Layout from '@layouts/Layout.astro'
import BaseSection from '../layouts/baseSection.astro' import sadshishou from '@assets/shishousad.webp'
import sadshishou from '../assets/shishousad.webp' import SmallTitle from '@components/titles/smallTitle.astro'
const description = "Error. This shouldn't happen :/" const description = "Error. This shouldn't happen :/"
--- ---
@ -12,7 +12,7 @@ const description = "Error. This shouldn't happen :/"
currentpage="404" currentpage="404"
descriptionOverride={description} descriptionOverride={description}
> >
<BaseSection title="FirqhundredandFirq - Not Found"> <SmallTitle maintext='Error' subtext='FirqhundredandFirq - Not Found' fadeout={true}/>
<div> <div>
<Image src={sadshishou} alt="Sad Shishou" /> <Image src={sadshishou} alt="Sad Shishou" />
<h2>Well ... you were not supposed to end up here.</h2> <h2>Well ... you were not supposed to end up here.</h2>
@ -20,44 +20,51 @@ const description = "Error. This shouldn't happen :/"
&lt;&lt; Go back home &lt;&lt; Go back home
</a> </a>
</div> </div>
</BaseSection>
</Layout> </Layout>
<style> <style>
div { div {
padding: 0px 2rem;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: nowrap;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
} }
h2 { h2 {
color: white; font-family: 'Work Sans Variable', sans-serif;
font-size: 2rem; font-weight: 500;
font-weight: bold; color: var(--c-primary-text);
font-size: 1.25rem;
margin-top: 1rem; margin-top: 1rem;
max-width: max-content; max-width: max-content;
}
a {
display: flex;
align-items: center;
justify-content: center;
width: 75%;
text-align: center; text-align: center;
color: white; font-style: italic;
background-color: var(--c-gray); }
padding: 0.5rem 0px;
margin-bottom: 2rem;
text-decoration: none;
font-size: 1.5rem;
font-weight: bold;
&:hover { a {
color: var(--c-darkpurple); text-align: center;
} width: fit-content;
font-weight: 500;
font-family: 'Work Sans Variable', sans-serif;
color: var(--c-primary-text);
margin: 1rem 0px 0px;
padding: 0.5rem 0.75rem;
text-decoration: none;
background-color: var(--c-primary-background);
border-radius: 10px;
border-style: solid;
border-width: 2px;
border-color: var(--c-primary-background);
text-transform: capitalize;
}
a:hover {
border-color: var(--c-accent-1);
} }
img { img {
width: 256px; width: 200px;
height: 256px; height: auto;
border-radius: 10%;
} }
</style> </style>

View file

@ -1,17 +1,17 @@
--- ---
import Layout from '../layouts/Layout.astro' import Layout from '@layouts/Layout.astro'
import AboutSection from '../layouts/aboutSection.astro'
import ContactSection from '../layouts/contactSection.astro' import ContactSection from '@layouts/contactSection.astro'
import ContactCard from '../components/contactCard.astro'
import contactdata from '../../static/data/_contactdata.json'
import CustomFooter from '../layouts/customFooter.astro' import CustomFooter from '@layouts/customFooter.astro'
import TechnologyCard from '../components/technologyCard.astro' import TechnologyCard from '@components/cards/technologyCard.astro'
import technologydata from '../../static/data/_technologydata.json' import technologydata from '@content/data/technologydata.json'
import SmallTitle from '@components/titles/smallTitle.astro'
const description = const description =
"A summary of the technologies used as well as my contact information. You'll also find disclaimers and thank you notes for the people that helped me." "A summary of the technologies used as well as my contact information. You'll also find disclaimers and thank you notes for the people that helped me."
const subtext =
"This is a small sideproject that I'm creating. First time doing webdev in general, and first project using Typescript."
--- ---
<Layout <Layout
@ -19,16 +19,10 @@ const description =
currentpage="about" currentpage="about"
descriptionOverride={description} descriptionOverride={description}
> >
<AboutSection title="About"> <SmallTitle maintext="About this site" subtext={subtext} fadeout={true} />
This is a small sideproject that I'm creating. First time doing webdev in <ContactSection title="Powered by">
general, and first project using Typescript.
</AboutSection>
<ContactSection title="Technologies used">
{technologydata.map((item) => <TechnologyCard {...item} />)} {technologydata.map((item) => <TechnologyCard {...item} />)}
</ContactSection> </ContactSection>
<ContactSection title="Contact me">
{contactdata.map((item) => <ContactCard {...item} />)}
</ContactSection>
<ContactSection title="Disclaimers"> <ContactSection title="Disclaimers">
<CustomFooter /> <CustomFooter />
</ContactSection> </ContactSection>

View file

@ -1,35 +0,0 @@
---
import Layout from '../layouts/Layout.astro'
import BlogCard from '../components/blogCard.astro'
import BlogSection from '../layouts/blogSection.astro'
const description =
'My own small blog. Topics include FGO, TA, Programming, web technologies and more!'
const allPosts = await Astro.glob('../pages/blog/*.{md,mdx}')
allPosts.sort(
(a, b) =>
Date.parse(b.frontmatter.pubDate) - Date.parse(a.frontmatter.pubDate)
)
---
<Layout
title="Blog - Firq FGO Site"
currentpage="blog"
descriptionOverride={description}
>
<BlogSection title="Blog Articles">
{
allPosts.map((post) => (
<BlogCard
url={post.url}
title={post.frontmatter.title}
pubdate={post.frontmatter.pubDate}
description={post.frontmatter.description}
author={post.frontmatter.author}
/>
))
}
</BlogSection>
</Layout>
<style></style>

View file

@ -0,0 +1,17 @@
---
import { getCollection } from 'astro:content'
export async function getStaticPaths() {
const blogEntries = await getCollection('blog')
return blogEntries.map((entry) => ({
params: { slug: entry.slug },
props: { entry },
}))
}
const { entry } = Astro.props
const { Content } = await entry.render()
---
<Content />

View file

@ -0,0 +1,39 @@
---
import Layout from '@layouts/Layout.astro'
import BlogCard from '@components/cards/blogCard.astro'
import BlogSection from '@layouts/blogSection.astro'
import SmallTitle from '@components/titles/smallTitle.astro'
import { getCollection } from 'astro:content'
const description =
'My own small blog. Topics include FGO, TA, Programming, web technologies and more!'
const blogEntries = await getCollection('blog')
blogEntries.sort(
(a, b) =>
(b.data.pubDate.valueOf() - a.data.pubDate.valueOf() )
)
---
<Layout
title="Blog - Firq FGO Site"
currentpage="blog"
descriptionOverride={description}
>
<SmallTitle maintext="Blog Articles" subtext="" fadeout={true} />
<BlogSection title="Blog Articles" displayLine={true} titlehidden={true}>
{
blogEntries.map((post) => (
<BlogCard
url="blog"
slug={post.slug}
title={post.data.title}
pubdate={post.data.pubDate}
description={post.data.description}
author={post.data.author}
/>
))
}
</BlogSection>
</Layout>
<style></style>

View file

@ -1,9 +1,10 @@
--- ---
import Layout from '../layouts/Layout.astro' import AboutText from '@components/aboutText.astro'
import Hero from '../components/hero.astro' import FavouriteCard from '@components/cards/favouriteCard.astro'
import BaseSection from '../layouts/baseSection.astro' import Hi from '@components/titles/title.astro'
import FavouriteCard from '../components/favouriteCard.astro' import favouritesdata from '@content/data/favouritesdata.json'
import favouritesdata from '../../static/data/_favouritesdata.json' import Layout from '@layouts/Layout.astro'
import BaseSection from '@layouts/baseSection.astro'
const description = const description =
'The very own page of Firq for providing informating about TA servants, listing past TA achievements and hosting a blog for talking about FGO, Programming and other stuff' 'The very own page of Firq for providing informating about TA servants, listing past TA achievements and hosting a blog for talking about FGO, Programming and other stuff'
@ -14,8 +15,11 @@ const description =
currentpage="home" currentpage="home"
descriptionOverride={description} descriptionOverride={description}
> >
<Hero /> <Hi />
<BaseSection title="Favourites"> <BaseSection title="About me">
<AboutText/>
</BaseSection>
<BaseSection title="Favourite Things">
{favouritesdata.map((item) => <FavouriteCard {...item} />)} {favouritesdata.map((item) => <FavouriteCard {...item} />)}
</BaseSection> </BaseSection>
</Layout> </Layout>

View file

@ -1,12 +1,13 @@
--- ---
import Layout from '../layouts/Layout.astro' import Layout from '@layouts/Layout.astro'
import BaseSection from '../layouts/baseSection.astro' import ServantSection from '@layouts/servantSection.astro'
import ServantCard from '../components/servantCard.astro' import ServantCard from '@components/cards/servantCard.astro'
import servantdata from '../../static/data/_servantdata.json' import servantdata from '@content/data/servantdata.json'
import CeCard from '../components/ceCard.astro' import CeCard from '@components/cards/ceCard.astro'
import cedata from '../../static/data/_cedata.json' import cedata from '@content/data/cedata.json'
import SmallTitle from '@components/titles/smallTitle.astro'
const description = const description =
'A list of all the servants and ces that Firq can offer up on support for TA.' 'A list of all the servants and ces that Firq can offer up on support for TA.'
@ -17,13 +18,14 @@ const description =
currentpage="servants" currentpage="servants"
descriptionOverride={description} descriptionOverride={description}
> >
<BaseSection title="Servants"> <SmallTitle maintext='TA Offering' subtext='Servants and CEs I can offer for your TAs' fadeout={true}/>
{servantdata.map((item) => <ServantCard {...item} />)} <ServantSection title="Servants">
</BaseSection> {servantdata.map((item, index) => <ServantCard {...item} index={index} />)}
</ServantSection>
<div class="placeholder"></div> <div class="placeholder"></div>
<BaseSection title="CEs"> <ServantSection title="CEs">
{cedata.map((item) => <CeCard {...item} />)} {cedata.map((item) => <CeCard {...item} />)}
</BaseSection> </ServantSection>
<div class="placeholder"></div> <div class="placeholder"></div>
</Layout> </Layout>

View file

@ -5,13 +5,14 @@
// > You could have the notable ones like you do now, but at the bottom, there could be a drop-down or "expand" or "more" or // > You could have the notable ones like you do now, but at the bottom, there could be a drop-down or "expand" or "more" or
// > some other section like that which you could click and show the rest // > some other section like that which you could click and show the rest
import Layout from '../layouts/Layout.astro' import Layout from '@layouts/Layout.astro'
import TaSection from '../layouts/taSection.astro' import TaSection from '@layouts/taSection.astro'
import TaCard from '../components/taCard.astro' import TaCard from '@components/cards/taCard.astro'
import tadata from '../../static/data/_tadata.json' import tadata from '@content/data/tadata.json'
import featured_data from '../../static/data/_featureddata.json' import featured_data from '@content/data/featureddata.json'
import FgotaHero from '../components/fgotaHero.astro' import FgotaHero from '@components/fgotaHero.astro'
import SmallTitle from '@components/titles/smallTitle.astro'
const important_data = tadata.filter(function (el) { const important_data = tadata.filter(function (el) {
return [ return [
@ -37,7 +38,8 @@ const description = 'A collection of TAs previously completed be Firq.'
currentpage="ta-collection" currentpage="ta-collection"
descriptionOverride={description} descriptionOverride={description}
> >
<FgotaHero /> <SmallTitle maintext='TA Collection' subtext=''/>
<FgotaHero fadeout={true}/>
<TaSection title="Notable TAs" abovetext="My most notable TAs"> <TaSection title="Notable TAs" abovetext="My most notable TAs">
{important_data.map((item) => <TaCard {...item} />)} {important_data.map((item) => <TaCard {...item} />)}
</TaSection> </TaSection>

View file

@ -1,32 +0,0 @@
[
{
"site": "Youtube: @Firq_",
"link": "https://www.youtube.com/@Firq_",
"imageFile": "youtube.webp"
},
{
"site": "Twitch: Firq",
"link": "https://www.twitch.tv/firq",
"imageFile": "twitch.webp"
},
{
"site": "Discord: firq",
"link": "https://discord.com/users/186014064835690496",
"imageFile": "discord.webp"
},
{
"site": "Twitter: Firq_ow",
"link": "https://twitter.com/firq_ow",
"imageFile": "twitter.webp"
},
{
"site": "Reddit: u/Firq_ow",
"link": "https://www.reddit.com/user/firq_ow",
"imageFile": "reddit.webp"
},
{
"site": "Support Setup on Rayshift",
"link": "https://rayshift.io/na/firq",
"imageFile": "custom-fgo.webp"
}
]

View file

@ -1,7 +0,0 @@
user-agent:*
Disallow: /assets/data/
User-agent: GPTBot
Disallow: /
Sitemap: https://firq.dev/sitemap-index.xml

View file

@ -1,3 +1,12 @@
{ {
"extends": "astro/tsconfigs/strict" "extends": "astro/tsconfigs/strict",
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@assets/*": [ "src/assets/*" ],
"@components/*": [ "src/components/*" ],
"@content/*": [ "src/content/*" ],
"@layouts/*": [ "src/layouts/*" ]
}
}
} }

View file

@ -1,10 +1,32 @@
export default { export default {
lighthouseOptions: {
throttlingMethod: "devtools",
throttling: {
cpuSlowdownMultiplier: 4,
requestLatencyMs: 150,
downloadThroughputKbps: 1638.4,
uploadThroughputKbps: 1638.4,
},
screenEmulation: {
width: 412,
height: 823,
deviceScaleFactor: 1.75,
}
},
puppeteerOptions: { puppeteerOptions: {
args: ["--no-sandbox", "--disable-setuid-sandbox"], args: [
"--no-sandbox",
"--disable-setuid-sandbox"
],
}, },
ci: { ci: {
budget: 50, budget: 50,
buildStatic: true buildStatic: true,
},
scanner: {
sitemap: true,
dynamicSampling: false,
samples: 3,
}, },
outputPath: "unlighthouse-reports", outputPath: "unlighthouse-reports",
} }