alamin655 commited on
Commit
a9c4844
2 Parent(s): 5ce7191 1d97187

Merge branch 'neon-mmd:rolling' into rolling

Browse files
Files changed (7) hide show
  1. Cargo.lock +97 -107
  2. Cargo.toml +1 -1
  3. docs/configuration.md +10 -2
  4. docs/developing.md +68 -56
  5. docs/installation.md +33 -20
  6. docs/theming.md +247 -96
  7. flake.nix +10 -1
Cargo.lock CHANGED
@@ -14,7 +14,7 @@ dependencies = [
14
  "futures-sink",
15
  "memchr",
16
  "pin-project-lite",
17
- "tokio 1.35.0",
18
  "tokio-util",
19
  "tracing",
20
  ]
@@ -99,7 +99,7 @@ dependencies = [
99
  "rand 0.8.5",
100
  "sha1",
101
  "smallvec 1.11.2",
102
- "tokio 1.35.0",
103
  "tokio-util",
104
  "tracing",
105
  ]
@@ -111,7 +111,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
111
  checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb"
112
  dependencies = [
113
  "quote 1.0.33",
114
- "syn 2.0.41",
115
  ]
116
 
117
  [[package]]
@@ -134,7 +134,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
134
  checksum = "28f32d40287d3f402ae0028a9d54bef51af15c8769492826a69d28f81893151d"
135
  dependencies = [
136
  "futures-core",
137
- "tokio 1.35.0",
138
  ]
139
 
140
  [[package]]
@@ -149,8 +149,8 @@ dependencies = [
149
  "futures-core",
150
  "futures-util",
151
  "mio 0.8.10",
152
- "socket2 0.5.5",
153
- "tokio 1.35.0",
154
  "tracing",
155
  ]
156
 
@@ -210,8 +210,8 @@ dependencies = [
210
  "serde_json",
211
  "serde_urlencoded 0.7.1",
212
  "smallvec 1.11.2",
213
- "socket2 0.5.5",
214
- "time 0.3.30",
215
  "url 2.5.0",
216
  ]
217
 
@@ -222,9 +222,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
222
  checksum = "eb1f50ebbb30eca122b188319a4398b3f7bb4a8cdf50ecfb73bfc6a3c3ce54f5"
223
  dependencies = [
224
  "actix-router",
225
- "proc-macro2 1.0.70",
226
  "quote 1.0.33",
227
- "syn 2.0.41",
228
  ]
229
 
230
  [[package]]
@@ -313,9 +313,9 @@ checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87"
313
 
314
  [[package]]
315
  name = "anyhow"
316
- version = "1.0.75"
317
  source = "registry+https://github.com/rust-lang/crates.io-index"
318
- checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
319
 
320
  [[package]]
321
  name = "arc-swap"
@@ -352,7 +352,7 @@ dependencies = [
352
  "futures-core",
353
  "memchr",
354
  "pin-project-lite",
355
- "tokio 1.35.0",
356
  ]
357
 
358
  [[package]]
@@ -363,13 +363,13 @@ checksum = "9338790e78aa95a416786ec8389546c4b6a1dfc3dc36071ed9518a9413a542eb"
363
 
364
  [[package]]
365
  name = "async-trait"
366
- version = "0.1.74"
367
  source = "registry+https://github.com/rust-lang/crates.io-index"
368
- checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9"
369
  dependencies = [
370
- "proc-macro2 1.0.70",
371
  "quote 1.0.33",
372
- "syn 2.0.41",
373
  ]
374
 
375
  [[package]]
@@ -679,7 +679,7 @@ dependencies = [
679
  "futures-core",
680
  "memchr",
681
  "pin-project-lite",
682
- "tokio 1.35.0",
683
  "tokio-util",
684
  ]
685
 
@@ -698,7 +698,7 @@ version = "0.3.2"
698
  source = "registry+https://github.com/rust-lang/crates.io-index"
699
  checksum = "5e1e0fdd2e5d3041e530e1b21158aeeef8b5d0e306bc5c1e3d6cf0930d10e25a"
700
  dependencies = [
701
- "proc-macro2 1.0.70",
702
  "quote 1.0.33",
703
  "syn 1.0.109",
704
  ]
@@ -732,7 +732,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
732
  checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb"
733
  dependencies = [
734
  "percent-encoding 2.3.1",
735
- "time 0.3.30",
736
  "version_check",
737
  ]
738
 
@@ -941,7 +941,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
941
  checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
942
  dependencies = [
943
  "quote 1.0.33",
944
- "syn 2.0.41",
945
  ]
946
 
947
  [[package]]
@@ -979,7 +979,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
979
  checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
980
  dependencies = [
981
  "convert_case",
982
- "proc-macro2 1.0.70",
983
  "quote 1.0.33",
984
  "rustc_version 0.4.0",
985
  "syn 1.0.109",
@@ -1123,7 +1123,7 @@ version = "0.1.8"
1123
  source = "registry+https://github.com/rust-lang/crates.io-index"
1124
  checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4"
1125
  dependencies = [
1126
- "proc-macro2 1.0.70",
1127
  "quote 1.0.33",
1128
  "syn 1.0.109",
1129
  "synstructure",
@@ -1294,9 +1294,9 @@ version = "0.3.29"
1294
  source = "registry+https://github.com/rust-lang/crates.io-index"
1295
  checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb"
1296
  dependencies = [
1297
- "proc-macro2 1.0.70",
1298
  "quote 1.0.33",
1299
- "syn 2.0.41",
1300
  ]
1301
 
1302
  [[package]]
@@ -1436,7 +1436,7 @@ dependencies = [
1436
  "http 0.2.11",
1437
  "indexmap 2.1.0",
1438
  "slab",
1439
- "tokio 1.35.0",
1440
  "tokio-util",
1441
  "tracing",
1442
  ]
@@ -1477,11 +1477,11 @@ checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
1477
 
1478
  [[package]]
1479
  name = "home"
1480
- version = "0.5.5"
1481
  source = "registry+https://github.com/rust-lang/crates.io-index"
1482
- checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
1483
  dependencies = [
1484
- "windows-sys 0.48.0",
1485
  ]
1486
 
1487
  [[package]]
@@ -1507,7 +1507,7 @@ dependencies = [
1507
  "log",
1508
  "mac",
1509
  "markup5ever 0.11.0",
1510
- "proc-macro2 1.0.70",
1511
  "quote 1.0.33",
1512
  "syn 1.0.109",
1513
  ]
@@ -1607,9 +1607,9 @@ dependencies = [
1607
 
1608
  [[package]]
1609
  name = "hyper"
1610
- version = "0.14.27"
1611
  source = "registry+https://github.com/rust-lang/crates.io-index"
1612
- checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468"
1613
  dependencies = [
1614
  "bytes 1.5.0",
1615
  "futures-channel",
@@ -1622,8 +1622,8 @@ dependencies = [
1622
  "httpdate",
1623
  "itoa 1.0.10",
1624
  "pin-project-lite",
1625
- "socket2 0.4.10",
1626
- "tokio 1.35.0",
1627
  "tower-service",
1628
  "tracing",
1629
  "want 0.3.1",
@@ -1637,9 +1637,9 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
1637
  dependencies = [
1638
  "futures-util",
1639
  "http 0.2.11",
1640
- "hyper 0.14.27",
1641
  "rustls",
1642
- "tokio 1.35.0",
1643
  "tokio-rustls",
1644
  ]
1645
 
@@ -1881,9 +1881,9 @@ dependencies = [
1881
 
1882
  [[package]]
1883
  name = "luajit-src"
1884
- version = "210.5.2+113a168"
1885
  source = "registry+https://github.com/rust-lang/crates.io-index"
1886
- checksum = "823ec7bedb1819b11633bd583ae981b0082db08492b0c3396412b85dd329ffee"
1887
  dependencies = [
1888
  "cc",
1889
  "which",
@@ -1897,9 +1897,9 @@ checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
1897
 
1898
  [[package]]
1899
  name = "mach2"
1900
- version = "0.4.1"
1901
  source = "registry+https://github.com/rust-lang/crates.io-index"
1902
- checksum = "6d0d1830bcd151a6fc4aea1369af235b36c1528fe976b8ff678683c9995eade8"
1903
  dependencies = [
1904
  "libc",
1905
  ]
@@ -1960,7 +1960,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1960
  checksum = "0be95d66c3024ffce639216058e5bae17a83ecaf266ffc6e4d060ad447c9eed2"
1961
  dependencies = [
1962
  "proc-macro-error",
1963
- "proc-macro2 1.0.70",
1964
  "quote 1.0.33",
1965
  "syn 1.0.109",
1966
  ]
@@ -2219,9 +2219,9 @@ checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
2219
 
2220
  [[package]]
2221
  name = "openssl"
2222
- version = "0.10.61"
2223
  source = "registry+https://github.com/rust-lang/crates.io-index"
2224
- checksum = "6b8419dc8cc6d866deb801274bba2e6f8f6108c1bb7fcc10ee5ab864931dbb45"
2225
  dependencies = [
2226
  "bitflags 2.4.1",
2227
  "cfg-if 1.0.0",
@@ -2238,9 +2238,9 @@ version = "0.1.1"
2238
  source = "registry+https://github.com/rust-lang/crates.io-index"
2239
  checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
2240
  dependencies = [
2241
- "proc-macro2 1.0.70",
2242
  "quote 1.0.33",
2243
- "syn 2.0.41",
2244
  ]
2245
 
2246
  [[package]]
@@ -2251,9 +2251,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
2251
 
2252
  [[package]]
2253
  name = "openssl-sys"
2254
- version = "0.9.97"
2255
  source = "registry+https://github.com/rust-lang/crates.io-index"
2256
- checksum = "c3eaad34cdd97d81de97964fc7f29e2d104f483840d906ef56daa1912338460b"
2257
  dependencies = [
2258
  "cc",
2259
  "libc",
@@ -2449,9 +2449,9 @@ checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b"
2449
  dependencies = [
2450
  "phf_generator 0.11.2",
2451
  "phf_shared 0.11.2",
2452
- "proc-macro2 1.0.70",
2453
  "quote 1.0.33",
2454
- "syn 2.0.41",
2455
  ]
2456
 
2457
  [[package]]
@@ -2496,9 +2496,9 @@ version = "1.1.3"
2496
  source = "registry+https://github.com/rust-lang/crates.io-index"
2497
  checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
2498
  dependencies = [
2499
- "proc-macro2 1.0.70",
2500
  "quote 1.0.33",
2501
- "syn 2.0.41",
2502
  ]
2503
 
2504
  [[package]]
@@ -2515,9 +2515,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
2515
 
2516
  [[package]]
2517
  name = "pkg-config"
2518
- version = "0.3.27"
2519
  source = "registry+https://github.com/rust-lang/crates.io-index"
2520
- checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
2521
 
2522
  [[package]]
2523
  name = "powerfmt"
@@ -2544,7 +2544,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2544
  checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
2545
  dependencies = [
2546
  "proc-macro-error-attr",
2547
- "proc-macro2 1.0.70",
2548
  "quote 1.0.33",
2549
  "syn 1.0.109",
2550
  "version_check",
@@ -2556,7 +2556,7 @@ version = "1.0.4"
2556
  source = "registry+https://github.com/rust-lang/crates.io-index"
2557
  checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
2558
  dependencies = [
2559
- "proc-macro2 1.0.70",
2560
  "quote 1.0.33",
2561
  "version_check",
2562
  ]
@@ -2572,9 +2572,9 @@ dependencies = [
2572
 
2573
  [[package]]
2574
  name = "proc-macro2"
2575
- version = "1.0.70"
2576
  source = "registry+https://github.com/rust-lang/crates.io-index"
2577
- checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
2578
  dependencies = [
2579
  "unicode-ident",
2580
  ]
@@ -2631,7 +2631,7 @@ version = "1.0.33"
2631
  source = "registry+https://github.com/rust-lang/crates.io-index"
2632
  checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
2633
  dependencies = [
2634
- "proc-macro2 1.0.70",
2635
  ]
2636
 
2637
  [[package]]
@@ -2804,7 +2804,7 @@ dependencies = [
2804
  "percent-encoding 2.3.1",
2805
  "pin-project-lite",
2806
  "ryu",
2807
- "tokio 1.35.0",
2808
  "tokio-retry",
2809
  "tokio-util",
2810
  "url 2.5.0",
@@ -2890,9 +2890,9 @@ dependencies = [
2890
 
2891
  [[package]]
2892
  name = "reqwest"
2893
- version = "0.11.22"
2894
  source = "registry+https://github.com/rust-lang/crates.io-index"
2895
- checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b"
2896
  dependencies = [
2897
  "async-compression",
2898
  "base64 0.21.5",
@@ -2903,7 +2903,7 @@ dependencies = [
2903
  "h2 0.3.22",
2904
  "http 0.2.11",
2905
  "http-body 0.4.6",
2906
- "hyper 0.14.27",
2907
  "hyper-rustls",
2908
  "ipnet",
2909
  "js-sys",
@@ -2918,7 +2918,7 @@ dependencies = [
2918
  "serde_json",
2919
  "serde_urlencoded 0.7.1",
2920
  "system-configuration",
2921
- "tokio 1.35.0",
2922
  "tokio-rustls",
2923
  "tokio-util",
2924
  "tower-service",
@@ -3176,9 +3176,9 @@ version = "1.0.193"
3176
  source = "registry+https://github.com/rust-lang/crates.io-index"
3177
  checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
3178
  dependencies = [
3179
- "proc-macro2 1.0.70",
3180
  "quote 1.0.33",
3181
- "syn 2.0.41",
3182
  ]
3183
 
3184
  [[package]]
@@ -3299,16 +3299,6 @@ dependencies = [
3299
  "serde",
3300
  ]
3301
 
3302
- [[package]]
3303
- name = "socket2"
3304
- version = "0.4.10"
3305
- source = "registry+https://github.com/rust-lang/crates.io-index"
3306
- checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d"
3307
- dependencies = [
3308
- "libc",
3309
- "winapi 0.3.9",
3310
- ]
3311
-
3312
  [[package]]
3313
  name = "socket2"
3314
  version = "0.5.5"
@@ -3377,7 +3367,7 @@ checksum = "f0f45ed1b65bf9a4bf2f7b7dc59212d1926e9eaf00fa998988e420fd124467c6"
3377
  dependencies = [
3378
  "phf_generator 0.7.24",
3379
  "phf_shared 0.7.24",
3380
- "proc-macro2 1.0.70",
3381
  "quote 1.0.33",
3382
  "string_cache_shared",
3383
  ]
@@ -3390,7 +3380,7 @@ checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988"
3390
  dependencies = [
3391
  "phf_generator 0.10.0",
3392
  "phf_shared 0.10.0",
3393
- "proc-macro2 1.0.70",
3394
  "quote 1.0.33",
3395
  ]
3396
 
@@ -3417,18 +3407,18 @@ version = "1.0.109"
3417
  source = "registry+https://github.com/rust-lang/crates.io-index"
3418
  checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
3419
  dependencies = [
3420
- "proc-macro2 1.0.70",
3421
  "quote 1.0.33",
3422
  "unicode-ident",
3423
  ]
3424
 
3425
  [[package]]
3426
  name = "syn"
3427
- version = "2.0.41"
3428
  source = "registry+https://github.com/rust-lang/crates.io-index"
3429
- checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269"
3430
  dependencies = [
3431
- "proc-macro2 1.0.70",
3432
  "quote 1.0.33",
3433
  "unicode-ident",
3434
  ]
@@ -3439,7 +3429,7 @@ version = "0.12.6"
3439
  source = "registry+https://github.com/rust-lang/crates.io-index"
3440
  checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
3441
  dependencies = [
3442
- "proc-macro2 1.0.70",
3443
  "quote 1.0.33",
3444
  "syn 1.0.109",
3445
  "unicode-xid 0.2.4",
@@ -3525,9 +3515,9 @@ dependencies = [
3525
 
3526
  [[package]]
3527
  name = "time"
3528
- version = "0.3.30"
3529
  source = "registry+https://github.com/rust-lang/crates.io-index"
3530
- checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5"
3531
  dependencies = [
3532
  "deranged",
3533
  "itoa 1.0.10",
@@ -3545,9 +3535,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
3545
 
3546
  [[package]]
3547
  name = "time-macros"
3548
- version = "0.2.15"
3549
  source = "registry+https://github.com/rust-lang/crates.io-index"
3550
- checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20"
3551
  dependencies = [
3552
  "time-core",
3553
  ]
@@ -3598,9 +3588,9 @@ dependencies = [
3598
 
3599
  [[package]]
3600
  name = "tokio"
3601
- version = "1.35.0"
3602
  source = "registry+https://github.com/rust-lang/crates.io-index"
3603
- checksum = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c"
3604
  dependencies = [
3605
  "backtrace",
3606
  "bytes 1.5.0",
@@ -3610,7 +3600,7 @@ dependencies = [
3610
  "parking_lot 0.12.1",
3611
  "pin-project-lite",
3612
  "signal-hook-registry",
3613
- "socket2 0.5.5",
3614
  "tokio-macros",
3615
  "windows-sys 0.48.0",
3616
  ]
@@ -3663,9 +3653,9 @@ version = "2.2.0"
3663
  source = "registry+https://github.com/rust-lang/crates.io-index"
3664
  checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
3665
  dependencies = [
3666
- "proc-macro2 1.0.70",
3667
  "quote 1.0.33",
3668
- "syn 2.0.41",
3669
  ]
3670
 
3671
  [[package]]
@@ -3695,7 +3685,7 @@ checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f"
3695
  dependencies = [
3696
  "pin-project",
3697
  "rand 0.8.5",
3698
- "tokio 1.35.0",
3699
  ]
3700
 
3701
  [[package]]
@@ -3705,7 +3695,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
3705
  checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
3706
  dependencies = [
3707
  "rustls",
3708
- "tokio 1.35.0",
3709
  ]
3710
 
3711
  [[package]]
@@ -3771,7 +3761,7 @@ dependencies = [
3771
  "futures-core",
3772
  "futures-sink",
3773
  "pin-project-lite",
3774
- "tokio 1.35.0",
3775
  "tracing",
3776
  ]
3777
 
@@ -4001,9 +3991,9 @@ dependencies = [
4001
  "bumpalo",
4002
  "log",
4003
  "once_cell",
4004
- "proc-macro2 1.0.70",
4005
  "quote 1.0.33",
4006
- "syn 2.0.41",
4007
  "wasm-bindgen-shared",
4008
  ]
4009
 
@@ -4035,9 +4025,9 @@ version = "0.2.89"
4035
  source = "registry+https://github.com/rust-lang/crates.io-index"
4036
  checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283"
4037
  dependencies = [
4038
- "proc-macro2 1.0.70",
4039
  "quote 1.0.33",
4040
- "syn 2.0.41",
4041
  "wasm-bindgen-backend",
4042
  "wasm-bindgen-shared",
4043
  ]
@@ -4066,7 +4056,7 @@ checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10"
4066
 
4067
  [[package]]
4068
  name = "websurfx"
4069
- version = "1.6.3"
4070
  dependencies = [
4071
  "actix-cors",
4072
  "actix-files",
@@ -4090,14 +4080,14 @@ dependencies = [
4090
  "mlua",
4091
  "redis",
4092
  "regex",
4093
- "reqwest 0.11.22",
4094
  "rusty-hook",
4095
  "scraper",
4096
  "serde",
4097
  "serde_json",
4098
  "smallvec 1.11.2",
4099
  "tempfile",
4100
- "tokio 1.35.0",
4101
  ]
4102
 
4103
  [[package]]
@@ -4319,20 +4309,20 @@ dependencies = [
4319
 
4320
  [[package]]
4321
  name = "zerocopy"
4322
- version = "0.7.31"
4323
  source = "registry+https://github.com/rust-lang/crates.io-index"
4324
- checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d"
4325
  dependencies = [
4326
  "zerocopy-derive",
4327
  ]
4328
 
4329
  [[package]]
4330
  name = "zerocopy-derive"
4331
- version = "0.7.31"
4332
  source = "registry+https://github.com/rust-lang/crates.io-index"
4333
- checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a"
4334
  dependencies = [
4335
- "proc-macro2 1.0.70",
4336
  "quote 1.0.33",
4337
- "syn 2.0.41",
4338
  ]
 
14
  "futures-sink",
15
  "memchr",
16
  "pin-project-lite",
17
+ "tokio 1.35.1",
18
  "tokio-util",
19
  "tracing",
20
  ]
 
99
  "rand 0.8.5",
100
  "sha1",
101
  "smallvec 1.11.2",
102
+ "tokio 1.35.1",
103
  "tokio-util",
104
  "tracing",
105
  ]
 
111
  checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb"
112
  dependencies = [
113
  "quote 1.0.33",
114
+ "syn 2.0.42",
115
  ]
116
 
117
  [[package]]
 
134
  checksum = "28f32d40287d3f402ae0028a9d54bef51af15c8769492826a69d28f81893151d"
135
  dependencies = [
136
  "futures-core",
137
+ "tokio 1.35.1",
138
  ]
139
 
140
  [[package]]
 
149
  "futures-core",
150
  "futures-util",
151
  "mio 0.8.10",
152
+ "socket2",
153
+ "tokio 1.35.1",
154
  "tracing",
155
  ]
156
 
 
210
  "serde_json",
211
  "serde_urlencoded 0.7.1",
212
  "smallvec 1.11.2",
213
+ "socket2",
214
+ "time 0.3.31",
215
  "url 2.5.0",
216
  ]
217
 
 
222
  checksum = "eb1f50ebbb30eca122b188319a4398b3f7bb4a8cdf50ecfb73bfc6a3c3ce54f5"
223
  dependencies = [
224
  "actix-router",
225
+ "proc-macro2 1.0.71",
226
  "quote 1.0.33",
227
+ "syn 2.0.42",
228
  ]
229
 
230
  [[package]]
 
313
 
314
  [[package]]
315
  name = "anyhow"
316
+ version = "1.0.76"
317
  source = "registry+https://github.com/rust-lang/crates.io-index"
318
+ checksum = "59d2a3357dde987206219e78ecfbbb6e8dad06cbb65292758d3270e6254f7355"
319
 
320
  [[package]]
321
  name = "arc-swap"
 
352
  "futures-core",
353
  "memchr",
354
  "pin-project-lite",
355
+ "tokio 1.35.1",
356
  ]
357
 
358
  [[package]]
 
363
 
364
  [[package]]
365
  name = "async-trait"
366
+ version = "0.1.75"
367
  source = "registry+https://github.com/rust-lang/crates.io-index"
368
+ checksum = "fdf6721fb0140e4f897002dd086c06f6c27775df19cfe1fccb21181a48fd2c98"
369
  dependencies = [
370
+ "proc-macro2 1.0.71",
371
  "quote 1.0.33",
372
+ "syn 2.0.42",
373
  ]
374
 
375
  [[package]]
 
679
  "futures-core",
680
  "memchr",
681
  "pin-project-lite",
682
+ "tokio 1.35.1",
683
  "tokio-util",
684
  ]
685
 
 
698
  source = "registry+https://github.com/rust-lang/crates.io-index"
699
  checksum = "5e1e0fdd2e5d3041e530e1b21158aeeef8b5d0e306bc5c1e3d6cf0930d10e25a"
700
  dependencies = [
701
+ "proc-macro2 1.0.71",
702
  "quote 1.0.33",
703
  "syn 1.0.109",
704
  ]
 
732
  checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb"
733
  dependencies = [
734
  "percent-encoding 2.3.1",
735
+ "time 0.3.31",
736
  "version_check",
737
  ]
738
 
 
941
  checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
942
  dependencies = [
943
  "quote 1.0.33",
944
+ "syn 2.0.42",
945
  ]
946
 
947
  [[package]]
 
979
  checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
980
  dependencies = [
981
  "convert_case",
982
+ "proc-macro2 1.0.71",
983
  "quote 1.0.33",
984
  "rustc_version 0.4.0",
985
  "syn 1.0.109",
 
1123
  source = "registry+https://github.com/rust-lang/crates.io-index"
1124
  checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4"
1125
  dependencies = [
1126
+ "proc-macro2 1.0.71",
1127
  "quote 1.0.33",
1128
  "syn 1.0.109",
1129
  "synstructure",
 
1294
  source = "registry+https://github.com/rust-lang/crates.io-index"
1295
  checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb"
1296
  dependencies = [
1297
+ "proc-macro2 1.0.71",
1298
  "quote 1.0.33",
1299
+ "syn 2.0.42",
1300
  ]
1301
 
1302
  [[package]]
 
1436
  "http 0.2.11",
1437
  "indexmap 2.1.0",
1438
  "slab",
1439
+ "tokio 1.35.1",
1440
  "tokio-util",
1441
  "tracing",
1442
  ]
 
1477
 
1478
  [[package]]
1479
  name = "home"
1480
+ version = "0.5.9"
1481
  source = "registry+https://github.com/rust-lang/crates.io-index"
1482
+ checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
1483
  dependencies = [
1484
+ "windows-sys 0.52.0",
1485
  ]
1486
 
1487
  [[package]]
 
1507
  "log",
1508
  "mac",
1509
  "markup5ever 0.11.0",
1510
+ "proc-macro2 1.0.71",
1511
  "quote 1.0.33",
1512
  "syn 1.0.109",
1513
  ]
 
1607
 
1608
  [[package]]
1609
  name = "hyper"
1610
+ version = "0.14.28"
1611
  source = "registry+https://github.com/rust-lang/crates.io-index"
1612
+ checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80"
1613
  dependencies = [
1614
  "bytes 1.5.0",
1615
  "futures-channel",
 
1622
  "httpdate",
1623
  "itoa 1.0.10",
1624
  "pin-project-lite",
1625
+ "socket2",
1626
+ "tokio 1.35.1",
1627
  "tower-service",
1628
  "tracing",
1629
  "want 0.3.1",
 
1637
  dependencies = [
1638
  "futures-util",
1639
  "http 0.2.11",
1640
+ "hyper 0.14.28",
1641
  "rustls",
1642
+ "tokio 1.35.1",
1643
  "tokio-rustls",
1644
  ]
1645
 
 
1881
 
1882
  [[package]]
1883
  name = "luajit-src"
1884
+ version = "210.5.3+29b0b28"
1885
  source = "registry+https://github.com/rust-lang/crates.io-index"
1886
+ checksum = "0c2bb89013916ce5c949f01a1fbd6d435a58e1d980767a791d755911211d792d"
1887
  dependencies = [
1888
  "cc",
1889
  "which",
 
1897
 
1898
  [[package]]
1899
  name = "mach2"
1900
+ version = "0.4.2"
1901
  source = "registry+https://github.com/rust-lang/crates.io-index"
1902
+ checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709"
1903
  dependencies = [
1904
  "libc",
1905
  ]
 
1960
  checksum = "0be95d66c3024ffce639216058e5bae17a83ecaf266ffc6e4d060ad447c9eed2"
1961
  dependencies = [
1962
  "proc-macro-error",
1963
+ "proc-macro2 1.0.71",
1964
  "quote 1.0.33",
1965
  "syn 1.0.109",
1966
  ]
 
2219
 
2220
  [[package]]
2221
  name = "openssl"
2222
+ version = "0.10.62"
2223
  source = "registry+https://github.com/rust-lang/crates.io-index"
2224
+ checksum = "8cde4d2d9200ad5909f8dac647e29482e07c3a35de8a13fce7c9c7747ad9f671"
2225
  dependencies = [
2226
  "bitflags 2.4.1",
2227
  "cfg-if 1.0.0",
 
2238
  source = "registry+https://github.com/rust-lang/crates.io-index"
2239
  checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
2240
  dependencies = [
2241
+ "proc-macro2 1.0.71",
2242
  "quote 1.0.33",
2243
+ "syn 2.0.42",
2244
  ]
2245
 
2246
  [[package]]
 
2251
 
2252
  [[package]]
2253
  name = "openssl-sys"
2254
+ version = "0.9.98"
2255
  source = "registry+https://github.com/rust-lang/crates.io-index"
2256
+ checksum = "c1665caf8ab2dc9aef43d1c0023bd904633a6a05cb30b0ad59bec2ae986e57a7"
2257
  dependencies = [
2258
  "cc",
2259
  "libc",
 
2449
  dependencies = [
2450
  "phf_generator 0.11.2",
2451
  "phf_shared 0.11.2",
2452
+ "proc-macro2 1.0.71",
2453
  "quote 1.0.33",
2454
+ "syn 2.0.42",
2455
  ]
2456
 
2457
  [[package]]
 
2496
  source = "registry+https://github.com/rust-lang/crates.io-index"
2497
  checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
2498
  dependencies = [
2499
+ "proc-macro2 1.0.71",
2500
  "quote 1.0.33",
2501
+ "syn 2.0.42",
2502
  ]
2503
 
2504
  [[package]]
 
2515
 
2516
  [[package]]
2517
  name = "pkg-config"
2518
+ version = "0.3.28"
2519
  source = "registry+https://github.com/rust-lang/crates.io-index"
2520
+ checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a"
2521
 
2522
  [[package]]
2523
  name = "powerfmt"
 
2544
  checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
2545
  dependencies = [
2546
  "proc-macro-error-attr",
2547
+ "proc-macro2 1.0.71",
2548
  "quote 1.0.33",
2549
  "syn 1.0.109",
2550
  "version_check",
 
2556
  source = "registry+https://github.com/rust-lang/crates.io-index"
2557
  checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
2558
  dependencies = [
2559
+ "proc-macro2 1.0.71",
2560
  "quote 1.0.33",
2561
  "version_check",
2562
  ]
 
2572
 
2573
  [[package]]
2574
  name = "proc-macro2"
2575
+ version = "1.0.71"
2576
  source = "registry+https://github.com/rust-lang/crates.io-index"
2577
+ checksum = "75cb1540fadbd5b8fbccc4dddad2734eba435053f725621c070711a14bb5f4b8"
2578
  dependencies = [
2579
  "unicode-ident",
2580
  ]
 
2631
  source = "registry+https://github.com/rust-lang/crates.io-index"
2632
  checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
2633
  dependencies = [
2634
+ "proc-macro2 1.0.71",
2635
  ]
2636
 
2637
  [[package]]
 
2804
  "percent-encoding 2.3.1",
2805
  "pin-project-lite",
2806
  "ryu",
2807
+ "tokio 1.35.1",
2808
  "tokio-retry",
2809
  "tokio-util",
2810
  "url 2.5.0",
 
2890
 
2891
  [[package]]
2892
  name = "reqwest"
2893
+ version = "0.11.23"
2894
  source = "registry+https://github.com/rust-lang/crates.io-index"
2895
+ checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41"
2896
  dependencies = [
2897
  "async-compression",
2898
  "base64 0.21.5",
 
2903
  "h2 0.3.22",
2904
  "http 0.2.11",
2905
  "http-body 0.4.6",
2906
+ "hyper 0.14.28",
2907
  "hyper-rustls",
2908
  "ipnet",
2909
  "js-sys",
 
2918
  "serde_json",
2919
  "serde_urlencoded 0.7.1",
2920
  "system-configuration",
2921
+ "tokio 1.35.1",
2922
  "tokio-rustls",
2923
  "tokio-util",
2924
  "tower-service",
 
3176
  source = "registry+https://github.com/rust-lang/crates.io-index"
3177
  checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
3178
  dependencies = [
3179
+ "proc-macro2 1.0.71",
3180
  "quote 1.0.33",
3181
+ "syn 2.0.42",
3182
  ]
3183
 
3184
  [[package]]
 
3299
  "serde",
3300
  ]
3301
 
 
 
 
 
 
 
 
 
 
 
3302
  [[package]]
3303
  name = "socket2"
3304
  version = "0.5.5"
 
3367
  dependencies = [
3368
  "phf_generator 0.7.24",
3369
  "phf_shared 0.7.24",
3370
+ "proc-macro2 1.0.71",
3371
  "quote 1.0.33",
3372
  "string_cache_shared",
3373
  ]
 
3380
  dependencies = [
3381
  "phf_generator 0.10.0",
3382
  "phf_shared 0.10.0",
3383
+ "proc-macro2 1.0.71",
3384
  "quote 1.0.33",
3385
  ]
3386
 
 
3407
  source = "registry+https://github.com/rust-lang/crates.io-index"
3408
  checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
3409
  dependencies = [
3410
+ "proc-macro2 1.0.71",
3411
  "quote 1.0.33",
3412
  "unicode-ident",
3413
  ]
3414
 
3415
  [[package]]
3416
  name = "syn"
3417
+ version = "2.0.42"
3418
  source = "registry+https://github.com/rust-lang/crates.io-index"
3419
+ checksum = "5b7d0a2c048d661a1a59fcd7355baa232f7ed34e0ee4df2eef3c1c1c0d3852d8"
3420
  dependencies = [
3421
+ "proc-macro2 1.0.71",
3422
  "quote 1.0.33",
3423
  "unicode-ident",
3424
  ]
 
3429
  source = "registry+https://github.com/rust-lang/crates.io-index"
3430
  checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
3431
  dependencies = [
3432
+ "proc-macro2 1.0.71",
3433
  "quote 1.0.33",
3434
  "syn 1.0.109",
3435
  "unicode-xid 0.2.4",
 
3515
 
3516
  [[package]]
3517
  name = "time"
3518
+ version = "0.3.31"
3519
  source = "registry+https://github.com/rust-lang/crates.io-index"
3520
+ checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e"
3521
  dependencies = [
3522
  "deranged",
3523
  "itoa 1.0.10",
 
3535
 
3536
  [[package]]
3537
  name = "time-macros"
3538
+ version = "0.2.16"
3539
  source = "registry+https://github.com/rust-lang/crates.io-index"
3540
+ checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f"
3541
  dependencies = [
3542
  "time-core",
3543
  ]
 
3588
 
3589
  [[package]]
3590
  name = "tokio"
3591
+ version = "1.35.1"
3592
  source = "registry+https://github.com/rust-lang/crates.io-index"
3593
+ checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104"
3594
  dependencies = [
3595
  "backtrace",
3596
  "bytes 1.5.0",
 
3600
  "parking_lot 0.12.1",
3601
  "pin-project-lite",
3602
  "signal-hook-registry",
3603
+ "socket2",
3604
  "tokio-macros",
3605
  "windows-sys 0.48.0",
3606
  ]
 
3653
  source = "registry+https://github.com/rust-lang/crates.io-index"
3654
  checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
3655
  dependencies = [
3656
+ "proc-macro2 1.0.71",
3657
  "quote 1.0.33",
3658
+ "syn 2.0.42",
3659
  ]
3660
 
3661
  [[package]]
 
3685
  dependencies = [
3686
  "pin-project",
3687
  "rand 0.8.5",
3688
+ "tokio 1.35.1",
3689
  ]
3690
 
3691
  [[package]]
 
3695
  checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
3696
  dependencies = [
3697
  "rustls",
3698
+ "tokio 1.35.1",
3699
  ]
3700
 
3701
  [[package]]
 
3761
  "futures-core",
3762
  "futures-sink",
3763
  "pin-project-lite",
3764
+ "tokio 1.35.1",
3765
  "tracing",
3766
  ]
3767
 
 
3991
  "bumpalo",
3992
  "log",
3993
  "once_cell",
3994
+ "proc-macro2 1.0.71",
3995
  "quote 1.0.33",
3996
+ "syn 2.0.42",
3997
  "wasm-bindgen-shared",
3998
  ]
3999
 
 
4025
  source = "registry+https://github.com/rust-lang/crates.io-index"
4026
  checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283"
4027
  dependencies = [
4028
+ "proc-macro2 1.0.71",
4029
  "quote 1.0.33",
4030
+ "syn 2.0.42",
4031
  "wasm-bindgen-backend",
4032
  "wasm-bindgen-shared",
4033
  ]
 
4056
 
4057
  [[package]]
4058
  name = "websurfx"
4059
+ version = "1.6.8"
4060
  dependencies = [
4061
  "actix-cors",
4062
  "actix-files",
 
4080
  "mlua",
4081
  "redis",
4082
  "regex",
4083
+ "reqwest 0.11.23",
4084
  "rusty-hook",
4085
  "scraper",
4086
  "serde",
4087
  "serde_json",
4088
  "smallvec 1.11.2",
4089
  "tempfile",
4090
+ "tokio 1.35.1",
4091
  ]
4092
 
4093
  [[package]]
 
4309
 
4310
  [[package]]
4311
  name = "zerocopy"
4312
+ version = "0.7.32"
4313
  source = "registry+https://github.com/rust-lang/crates.io-index"
4314
+ checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be"
4315
  dependencies = [
4316
  "zerocopy-derive",
4317
  ]
4318
 
4319
  [[package]]
4320
  name = "zerocopy-derive"
4321
+ version = "0.7.32"
4322
  source = "registry+https://github.com/rust-lang/crates.io-index"
4323
+ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
4324
  dependencies = [
4325
+ "proc-macro2 1.0.71",
4326
  "quote 1.0.33",
4327
+ "syn 2.0.42",
4328
  ]
Cargo.toml CHANGED
@@ -1,6 +1,6 @@
1
  [package]
2
  name = "websurfx"
3
- version = "1.6.3"
4
  edition = "2021"
5
  description = "An open-source alternative to Searx that provides clean, ad-free, and organic results with incredible speed while keeping privacy and security in mind."
6
  repository = "https://github.com/neon-mmd/websurfx"
 
1
  [package]
2
  name = "websurfx"
3
+ version = "1.6.8"
4
  edition = "2021"
5
  description = "An open-source alternative to Searx that provides clean, ad-free, and organic results with incredible speed while keeping privacy and security in mind."
6
  repository = "https://github.com/neon-mmd/websurfx"
docs/configuration.md CHANGED
@@ -4,7 +4,7 @@
4
 
5
  If you have built `websurfx` from the source then the configuration file will be located under the project directory (codebase) at `websurfx/`
6
 
7
- > **Note**
8
  > If you have built websurfx with an unstable/rolling/edge branch then you can copy the configuration file from `websurfx/config.lua` located under the project directory (codebase) to `~/.config/websurfx/` and make the changes there and rerun the websurfx server. _This is only available from unstable/rolling/edge version_.
9
 
10
  ## Installed From Package
@@ -48,7 +48,7 @@ Some of the configuration options provided in the file are stated below. These a
48
 
49
  ## Website
50
 
51
- - **colorscheme:** The colorscheme name which should be used for the website theme (the name should be by the colorscheme file name present in the `public/static/colorschemes` folder).
52
 
53
  > By Default we provide 12 colorschemes to choose from these are:
54
  >
@@ -71,6 +71,12 @@ Some of the configuration options provided in the file are stated below. These a
71
  >
72
  > 1. simple
73
 
 
 
 
 
 
 
74
  ## Cache
75
 
76
  - **redis_url:** Redis connection URL address on which the client should connect.
@@ -78,6 +84,8 @@ Some of the configuration options provided in the file are stated below. These a
78
  > **Note**
79
  > This option can be commented out if you have compiled the app without the `redis-cache` feature. For more information, See [**building**](./building.md).
80
 
 
 
81
  ## Search Engines
82
 
83
  - **upstream_search_engines:** Select from the different upstream search engines from which the results should be fetched.
 
4
 
5
  If you have built `websurfx` from the source then the configuration file will be located under the project directory (codebase) at `websurfx/`
6
 
7
+ > [!Note]
8
  > If you have built websurfx with an unstable/rolling/edge branch then you can copy the configuration file from `websurfx/config.lua` located under the project directory (codebase) to `~/.config/websurfx/` and make the changes there and rerun the websurfx server. _This is only available from unstable/rolling/edge version_.
9
 
10
  ## Installed From Package
 
48
 
49
  ## Website
50
 
51
+ - **colorscheme:** The colorscheme name which should be used for the website theme (the name should be by the colorscheme file name present in the `public/static/colorschemes` folder).
52
 
53
  > By Default we provide 12 colorschemes to choose from these are:
54
  >
 
71
  >
72
  > 1. simple
73
 
74
+ - **animation:** The animation name that should be used for the website (again, the name should be by the animation file name present in the `public/static/animations` folder).
75
+
76
+ > By Default we provide 1 animation to choose from these are:
77
+ >
78
+ > 1. simple-frosted-glow
79
+
80
  ## Cache
81
 
82
  - **redis_url:** Redis connection URL address on which the client should connect.
 
84
  > **Note**
85
  > This option can be commented out if you have compiled the app without the `redis-cache` feature. For more information, See [**building**](./building.md).
86
 
87
+ - **cache_expiry_time:** The maximum time the server will store the cache for, after which it flushs/removes/expires/invalidates the cached results. (value provided to this option should be in seconds and the value should be greater than or equal to 60 seconds).
88
+
89
  ## Search Engines
90
 
91
  - **upstream_search_engines:** Select from the different upstream search engines from which the results should be fetched.
docs/developing.md CHANGED
@@ -12,7 +12,7 @@ This page of the docs outlines how to get **Websurfx** up and running in a devel
12
  - [NixOS Dev Shell using Nix Flake](#nixos-dev-shell-using-nix-flake-)
13
  - [Local Development with Docker Compose](#local-development-with-docker-compose-)
14
  - [Project Commands](#project-commands)
15
- + - [Environment Variables](#environment-variables)
16
  - [Git Strategy](#git-strategy)
17
  - [Flow](#git-flow)
18
  - [Branches](#git-branch-naming)
@@ -57,7 +57,7 @@ $ npm i -g stylelint
57
  $ npm i -g stylelint stylelint-config-standard postcss-lit
58
  ```
59
 
60
- > **Note**
61
  > In the above command the dollar sign(**$**) refers to running the command in privileged mode by using utilities `sudo`, `doas`, `pkgexec`, or any other privileged access methods.
62
 
63
  - `Cargo-watch` installed on your system which will allow you to auto-build the project when any checks occur in the source code files in the codebase (`websurfx` directory). Before you install `cargo-watch` on your system, make sure you have `cargo` installed on your system. To install `cargo-watch` run the following command:
@@ -69,7 +69,7 @@ cargo install cargo-watch
69
  - `Git` installed on your system. The installation instructions for this can be found [here](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git).
70
  - Finally, The latest version of `Docker` is installed on your system which will be used to avoid introducing unexpected issues when working on the project. The installation instructions for this can be found [here](https://docs.docker.com/engine/install/).
71
 
72
- > **Note**
73
  > For **rolling release Linux distributions (distros)**, the above-mentioned required packages except for `stylelint` and `cargo-watch` can also be installed via the distro-specific package manager.
74
  >
75
  > **For Example:**
@@ -149,7 +149,7 @@ Once you have finished running the above command, Websurfx should now be served
149
 
150
  This section covers how to use and set up the Gitpod development environment for working on the project.
151
 
152
- > **Note**
153
  > By default the project only supports the Vscode **IDE/Editor** for Gitpod.
154
 
155
  #### Launching Gitpod
@@ -212,12 +212,6 @@ This section covers how to setup the project for development using the `NixOS de
212
  Before you start working on the project. You will need the following packages installed on your system:
213
 
214
  - `Git` installed on your system. The installation instructions for this can be found [here](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git).
215
- - Finally, The latest version of `Docker` is installed on your system which will be used to avoid introducing unexpected issues when working on the project. The installation instructions for this can be found [here](https://docs.docker.com/engine/install/).
216
-
217
- > Optionally, On `NixOS` the above-mentioned required packages except for `stylelint` and `cargo-watch` could also be installed by following the link to the installation instructions provided below:
218
- >
219
- > - `Git`: https://search.nixos.org/packages?channel=23.05&show=git&from=0&size=50&sort=relevance&type=packages&query=git
220
- > - `Docker`: https://search.nixos.org/packages?channel=23.05&show=docker&from=0&size=50&sort=relevance&type=packages&query=docker
221
 
222
  #### Setting up Pre-commit Checks
223
 
@@ -234,7 +228,11 @@ Then run the following command to setup the `NixOS dev-shell`:
234
  nix develop
235
  ```
236
 
237
- Once you have finished running the above commands then run the following command to setup the `pre-commit` checks:
 
 
 
 
238
 
239
  ```shell
240
  cargo test
@@ -244,14 +242,16 @@ By running the above-mentioned command, it will automatically set up all the pre
244
 
245
  #### Post Setup Requirements
246
 
247
- After you have done setting up pre-commit checks, then you may need to fulfill a few more requirements to finish setting up the development environment with `NixOS dev-shell`. These include:
248
-
249
- - `Cargo-watch` installed on your system which will allow you to auto-build the project when any checks occur in the source code files in the codebase (`websurfx` directory). Before you install `cargo-watch` on your system, make sure you have `cargo` installed on your system. To install `cargo-watch` run the following command:
250
 
251
  ```shell
252
- cargo install cargo-watch
253
  ```
254
 
 
 
 
 
255
  #### Running the Project
256
 
257
  If you have followed the above section then you should now be inside a `dev-shell` environment. In the same environment run the following command to run the project:
@@ -310,13 +310,13 @@ Before you start working on the project. You will need the following packages in
310
  $ npm i -g stylelint
311
  ```
312
 
313
- > **Note**
314
  > In the above command the dollar sign(**$**) refers to running the command in privileged mode by using utilities `sudo`, `doas`, `pkgexec`, or any other privileged access methods.
315
 
316
  - `Git` installed on your system. The installation instructions for this can be found [here](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git).
317
  - Finally, The latest version of `Docker` is installed on your system which will be used to avoid introducing unexpected issues when working on the project. The installation instructions for this can be found [here](https://docs.docker.com/engine/install/).
318
 
319
- > **Note**
320
  > For **rolling release Linux distributions (distros)**, the above-mentioned all required packages can also be installed via the distro-specific package manager.
321
  >
322
  > **For Example:**
@@ -355,7 +355,7 @@ If you have followed the above section then you should have a cloned repository
355
  $ docker compose -f dev.docker-compose.yml up
356
  ```
357
 
358
- > **Note**
359
  > In the above command the dollar sign(**$**) refers to running the command in privileged mode by using utilities `sudo`, `doas`, `pkgexec`, or any other privileged access methods.
360
 
361
  Once you have finished running the above command, Websurfx should now be served on the address http://127.0.0.1:8080. Hot reload is enabled, so making changes to any of the files will trigger the project to be rebuilt.
@@ -366,13 +366,12 @@ Once you have finished running the above command, Websurfx should now be served
366
 
367
  - `cargo build`: Builds the project.
368
 
369
- > **Note**
370
  > When you build the project first time with the above command it will require the app to compile every dependency in the project which will then be cached on your system. So when you compile the app next time it will only compile for the new changes.
371
 
372
- + `cargo run`: Starts the app and serves the project on http://127.0.0.1:8080.
373
-
374
 
375
- > **Important**
376
  > You must run the build command first.
377
 
378
  #### Development
@@ -458,10 +457,10 @@ When you submit your pull request, include the required info, by filling out the
458
  - If any dependencies were added, explain why it was needed, and state the cost. associated, and confirm it does not introduce any security, privacy, or speed issues
459
  - Optionally, provide a checklist of all the changes that were included in the pull request.
460
 
461
- > **Important**
462
  > Make sure to fill all the required/mandatory sections of the pull request as filling them helps us distinguish between spam pull requests and legitimate pull requests.
463
 
464
- > **Note**
465
  > The pull request template contains comments in the following form `<!-- -->` which are used to provide a guide on what should be provided under each heading of the template. These comments are never rendered when the pull request is either created or updated and hence anything provided in such comments is never displayed.
466
 
467
  ## Resources for Beginners
@@ -498,7 +497,7 @@ For Rust, CSS, JS, HTML, Git, and Docker- you'll need an IDE (e.g. [VSCode](http
498
 
499
  Linting is done using [Cargo Clippy](https://doc.rust-lang.org/clippy/) and [StyleLint](https://stylelint.io/) or [ESLint](https://eslint.org/). Also, linting is run as a git pre-commit hook.
500
 
501
- > **Important**
502
  > All lint checks must pass before any PR can be merged.
503
 
504
  Styleguides to follow:
@@ -509,7 +508,7 @@ Styleguides to follow:
509
 
510
  ## Application Structure
511
 
512
- > **Important**
513
  > We follow the Unix style naming conventions for all the files and folders in the project (except for all files under the `themes` and `colorschemes` folder in the frontend's source code which requires that the names of the files and folders should be in lowercase and the words be separated with a hyphen.) which includes the name of the files and folders should be in lowercase and every word should be separated with an underscore.
514
 
515
  **Files in the root of the codebase:** `./`
@@ -541,30 +540,42 @@ Styleguides to follow:
541
  ./public/
542
  ├── robots.txt # Robots file for the Website.
543
  ├── images # Images for the Website.
544
- ├── static # The directory containing all the UI handlers.
545
- ├── cookies.js # Handles the loading of saved cookies.
546
- ├── error_box.js # Handles the toggling functionality of the error box on the search page.
547
- ├── index.js # Functions to handle the search functionality of the search bar.
548
- ├── pagination.js # Functions to handle the navigation between the previous and next page in the search page.
549
- ├── search_area_options.js # Changes the search options under the search bar in the search page according to the safe search level set using the URL safesearch parameter.
550
- ├── settings.js # Handles the settings and saving of all the settings page options as a cookie.
551
- ├── colorschemes # A folder containing all the popular colorscheme files as CSS files.
552
- └── themes # A folder containing all the popular theme files as CSS files.
553
- └── templates # Folder containing all the template files for the different pages on the website.
554
- ├── 404.html # A 404-page template.
555
- ├── about.html # An about page template.
556
- ├── bar.html # A template for the search bar.
557
- ├── cookies_tab.html # A template for the cookies tab for the settings page.
558
- ├── engines_tab.html # A template for the engines tab for the settings page.
559
- ├── footer.html # A footer template for all pages.
560
- ├── general_tab.html # A template for the general tab for the settings page.
561
- ├── header.html # A header template for all pages.
562
- ├── index.html # A home page template.
563
- ├── navbar.html # A navbar template for the header template.
564
- ├── search.html # A search page template.
565
- ├── search_bar.html # A search bar template specifically for the search page.
566
- ├── settings.html # A settings page template.
567
- └── user_interface_tab.html # A template for the user interface tab for the settings page.
 
 
 
 
 
 
 
 
 
 
 
 
568
  ```
569
 
570
  **Backend Source:** `./src/`
@@ -601,12 +612,13 @@ Styleguides to follow:
601
  │ ├── aggregator.rs # Provides code aggregate and fetches results from the upstream engines.
602
  │ ├── mod.rs # A module file for the rust project.
603
  │ └── user_agent.rs # Provides a helper function to allow random user agents to pass in the server request code to improve user privacy and avoiding detected as a bot.
604
- └── server # A folder that holds code to handle the routes for the search engine website.
605
- ├── mod.rs # A module file for the rust project.
606
- ├── router.rs # Provides functions to handle the different routes on the website.
607
- └── routes # A folder that contains code to handle the bigger route for the website.
608
- ├── mod.rs # A module file for the rust project.
609
- └── search.rs # Provides the function to handle the search route.
 
610
  ```
611
 
612
  ## Development Tools
 
12
  - [NixOS Dev Shell using Nix Flake](#nixos-dev-shell-using-nix-flake-)
13
  - [Local Development with Docker Compose](#local-development-with-docker-compose-)
14
  - [Project Commands](#project-commands)
15
+ - [Environment Variables](#environment-variables)
16
  - [Git Strategy](#git-strategy)
17
  - [Flow](#git-flow)
18
  - [Branches](#git-branch-naming)
 
57
  $ npm i -g stylelint stylelint-config-standard postcss-lit
58
  ```
59
 
60
+ > [!Note]
61
  > In the above command the dollar sign(**$**) refers to running the command in privileged mode by using utilities `sudo`, `doas`, `pkgexec`, or any other privileged access methods.
62
 
63
  - `Cargo-watch` installed on your system which will allow you to auto-build the project when any checks occur in the source code files in the codebase (`websurfx` directory). Before you install `cargo-watch` on your system, make sure you have `cargo` installed on your system. To install `cargo-watch` run the following command:
 
69
  - `Git` installed on your system. The installation instructions for this can be found [here](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git).
70
  - Finally, The latest version of `Docker` is installed on your system which will be used to avoid introducing unexpected issues when working on the project. The installation instructions for this can be found [here](https://docs.docker.com/engine/install/).
71
 
72
+ > [!Note]
73
  > For **rolling release Linux distributions (distros)**, the above-mentioned required packages except for `stylelint` and `cargo-watch` can also be installed via the distro-specific package manager.
74
  >
75
  > **For Example:**
 
149
 
150
  This section covers how to use and set up the Gitpod development environment for working on the project.
151
 
152
+ > [!Note]
153
  > By default the project only supports the Vscode **IDE/Editor** for Gitpod.
154
 
155
  #### Launching Gitpod
 
212
  Before you start working on the project. You will need the following packages installed on your system:
213
 
214
  - `Git` installed on your system. The installation instructions for this can be found [here](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git).
 
 
 
 
 
 
215
 
216
  #### Setting up Pre-commit Checks
217
 
 
228
  nix develop
229
  ```
230
 
231
+ > You can use `nix-direnv` to simplify entering into the `nix-shell`. Its setup is beyond the scope of this guide. Read more about it here: [nix-direnv](https://github.com/nix-community/nix-direnv)
232
+
233
+ This will add `docker`, `cargo-watch`, and other dev environment essentials to your `nix-shell` so you don't have to install everything imperatively.
234
+
235
+ After finishing the commands above, run the following command to setup the `pre-commit` checks:
236
 
237
  ```shell
238
  cargo test
 
242
 
243
  #### Post Setup Requirements
244
 
245
+ The final step is to run
 
 
246
 
247
  ```shell
248
+ npm i -D stylelint-config-standard postcss-lit`
249
  ```
250
 
251
+ This will add `node_modules` in the current directory.
252
+
253
+ Run `git commit` and if every thing is setup correctly, it should say that your branch is up to date.
254
+
255
  #### Running the Project
256
 
257
  If you have followed the above section then you should now be inside a `dev-shell` environment. In the same environment run the following command to run the project:
 
310
  $ npm i -g stylelint
311
  ```
312
 
313
+ > [!Note]
314
  > In the above command the dollar sign(**$**) refers to running the command in privileged mode by using utilities `sudo`, `doas`, `pkgexec`, or any other privileged access methods.
315
 
316
  - `Git` installed on your system. The installation instructions for this can be found [here](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git).
317
  - Finally, The latest version of `Docker` is installed on your system which will be used to avoid introducing unexpected issues when working on the project. The installation instructions for this can be found [here](https://docs.docker.com/engine/install/).
318
 
319
+ > [!Note]
320
  > For **rolling release Linux distributions (distros)**, the above-mentioned all required packages can also be installed via the distro-specific package manager.
321
  >
322
  > **For Example:**
 
355
  $ docker compose -f dev.docker-compose.yml up
356
  ```
357
 
358
+ > [!Note]
359
  > In the above command the dollar sign(**$**) refers to running the command in privileged mode by using utilities `sudo`, `doas`, `pkgexec`, or any other privileged access methods.
360
 
361
  Once you have finished running the above command, Websurfx should now be served on the address http://127.0.0.1:8080. Hot reload is enabled, so making changes to any of the files will trigger the project to be rebuilt.
 
366
 
367
  - `cargo build`: Builds the project.
368
 
369
+ > [!Note]
370
  > When you build the project first time with the above command it will require the app to compile every dependency in the project which will then be cached on your system. So when you compile the app next time it will only compile for the new changes.
371
 
372
+ - `cargo run`: Starts the app and serves the project on http://127.0.0.1:8080.
 
373
 
374
+ > [!Important]
375
  > You must run the build command first.
376
 
377
  #### Development
 
457
  - If any dependencies were added, explain why it was needed, and state the cost. associated, and confirm it does not introduce any security, privacy, or speed issues
458
  - Optionally, provide a checklist of all the changes that were included in the pull request.
459
 
460
+ > [!Important]
461
  > Make sure to fill all the required/mandatory sections of the pull request as filling them helps us distinguish between spam pull requests and legitimate pull requests.
462
 
463
+ > [!Note]
464
  > The pull request template contains comments in the following form `<!-- -->` which are used to provide a guide on what should be provided under each heading of the template. These comments are never rendered when the pull request is either created or updated and hence anything provided in such comments is never displayed.
465
 
466
  ## Resources for Beginners
 
497
 
498
  Linting is done using [Cargo Clippy](https://doc.rust-lang.org/clippy/) and [StyleLint](https://stylelint.io/) or [ESLint](https://eslint.org/). Also, linting is run as a git pre-commit hook.
499
 
500
+ > [!Important]
501
  > All lint checks must pass before any PR can be merged.
502
 
503
  Styleguides to follow:
 
508
 
509
  ## Application Structure
510
 
511
+ > [!Important]
512
  > We follow the Unix style naming conventions for all the files and folders in the project (except for all files under the `themes` and `colorschemes` folder in the frontend's source code which requires that the names of the files and folders should be in lowercase and the words be separated with a hyphen.) which includes the name of the files and folders should be in lowercase and every word should be separated with an underscore.
513
 
514
  **Files in the root of the codebase:** `./`
 
540
  ./public/
541
  ├── robots.txt # Robots file for the Website.
542
  ├── images # Images for the Website.
543
+ └── static # The directory containing all the UI handlers.
544
+ ├── cookies.js # Handles the loading of saved cookies.
545
+ ├── error_box.js # Handles the toggling functionality of the error box on the search page.
546
+ ├── index.js # Functions to handle the search functionality of the search bar.
547
+ ├── pagination.js # Functions to handle the navigation between the previous and next page in the search page.
548
+ ├── search_area_options.js # Changes the search options under the search bar in the search page according to the safe search level set using the URL safesearch parameter.
549
+ ├── settings.js # Handles the settings and saving of all the settings page options as a cookie.
550
+ ├── colorschemes # A folder containing all the popular colorscheme files as CSS files.
551
+ └── themes # A folder containing all the popular theme files as CSS files.
552
+ ```
553
+
554
+ **Fronted Maud HTML Framework Source:** `./src/templates/`
555
+
556
+ ```
557
+ ./src/templates/
558
+ ├── mod.rs # A module file for the rust project.
559
+ ├── partials # A folder containing the code for partials for the views.
560
+ ├── bar.rs # Provides partial code for the search bar.
561
+ ├── footer.rs # Provides partial code for the footer section.
562
+ ├── header.rs # Provides partial code for the header section.
563
+ ├── mod.rs # A module file for the rust project.
564
+ ├── navbar.rs # Provides partial code for the navbar inside the header section.
565
+ ├── search_bar.rs # Provides partial code for the search bar present in the search page.
566
+ └── settings_tabs # A folder containing all the partials for the settings page tabs.
567
+ │ ├── cookies.rs # Provides partial code for the cookies tab.
568
+ │ ├── engines.rs # Provides partial code for the engines tab.
569
+ │ ├── general.rs # Provides partial code for the general tab.
570
+ │ ├── mod.rs # A module file for the rust project.
571
+ │ └── user_interface.rs # Provides partial code for the user interface tab.
572
+ └── views # A folder containing the code for the views.
573
+ ├── about.rs # Provides code for the about page view.
574
+ ├── index.rs # Provides code for the homepage view.
575
+ ├── mod.rs # A module file for the rust project.
576
+ ├── not_found.rs # Provides code for the 404 page view.
577
+ ├── search.rs # Provides code for the search page view.
578
+ └── settings.rs # Provides code for the settings page view.
579
  ```
580
 
581
  **Backend Source:** `./src/`
 
612
  │ ├── aggregator.rs # Provides code aggregate and fetches results from the upstream engines.
613
  │ ├── mod.rs # A module file for the rust project.
614
  │ └── user_agent.rs # Provides a helper function to allow random user agents to pass in the server request code to improve user privacy and avoiding detected as a bot.
615
+ ├── server # A folder that holds code to handle the routes for the search engine website.
616
+ ├── mod.rs # A module file for the rust project.
617
+ ├── router.rs # Provides functions to handle the different routes on the website.
618
+ └── routes # A folder that contains code to handle the bigger route for the website.
619
+ ├── mod.rs # A module file for the rust project.
620
+ └── search.rs # Provides the function to handle the search route.
621
+ └── templates # A module that provides and handles Maud HTML framework source code for the search engine website (subfolders and files are explained in the above frontend section.)
622
  ```
623
 
624
  ## Development Tools
docs/installation.md CHANGED
@@ -44,7 +44,7 @@ nix build .#websurfx
44
  nix run .#websurfx
45
  ```
46
 
47
- > **Note**
48
  > In the above command the dollar sign(**$**) refers to running the command in Privileged mode by using utilities `sudo`, `doas`, `pkgexec`, or any other privileged access methods.
49
 
50
  Once you have run the above set of commands, open your preferred web browser and navigate to http://127.0.0.1:8080/ to start using Websurfx.
@@ -89,7 +89,7 @@ nix build .#websurfx
89
  nix run .#websurfx
90
  ```
91
 
92
- > **Note**
93
  > In the above command the dollar sign(**$**) refers to running the command in privileged mode by using utilities `sudo`, `doas`, `pkgexec`, or any other privileged access methods.
94
 
95
  ## Other Distros
@@ -128,6 +128,16 @@ cd websurfx
128
 
129
  Once you have changed the directory to the `websurfx` directory then follow the build options listed below:
130
 
 
 
 
 
 
 
 
 
 
 
131
  ### Hybrid Cache
132
 
133
  > For more information on the features and their pros and cons. see: [**Features**](./features.md)
@@ -285,22 +295,22 @@ Then run the following command to deploy the search engine:
285
  $ docker compose up -d
286
  ```
287
 
288
- > **Note**
289
  > In the above command the dollar sign(**$**) refers to running the command in privileged mode by using utilities `sudo`, `doas`, `pkgexec` or any other privileged access methods.
290
 
291
  Then launch the browser of your choice and navigate to http://<ip_address_of_the_device>:<whatever_port_you_provided_in_the_config>.
292
 
293
- > **Note**
294
  > The official prebuild images only support `stable` versions of the app and will not support `rolling/edge/unstable` versions. But with support and contribution, it could be made available for these versions as well 🙂.
295
 
296
  ## Manual Deployment
297
 
298
  This section covers how to deploy the app with docker manually by manually building the image and deploying it.
299
 
300
- > **Note**
301
  > This section is provided for those who want to further customize the docker image or for those who are extra cautious about security.
302
 
303
- > **Warning**
304
  > A note of caution the project currently only supports **x86-64** architecture and as such we do not recommend deploying the project on devices with other architectures. Though if you still want to do it then **do it at your own risk**.
305
 
306
  ### Unstable/Edge/Rolling
@@ -317,19 +327,19 @@ After that edit the config.lua file located under `websurfx` directory. In the c
317
  ```lua
318
  -- ### General ###
319
  logging = true -- an option to enable or disable logs.
320
- debug = false -- an option to enable or disable debug mode.
321
- threads = 8 -- the amount of threads that the app will use to run (the value should be greater than 0).
322
 
323
  -- ### Server ###
324
- port = "8080" -- port on which server should be launched
325
- binding_ip = "0.0.0.0" --ip address on the server should be launched.
326
- production_use = false -- whether to use production mode or not (in other words this option should be used if it is to be used to host it on the server to provide a service to a large number of users (more than one))
327
  -- if production_use is set to true
328
  -- There will be a random delay before sending the request to the search engines, this is to prevent DDoSing the upstream search engines from a large number of simultaneous requests.
329
- request_timeout = 30 -- timeout for the search requests sent to the upstream search engines to be fetched (value in seconds).
330
  rate_limiter = {
331
- number_of_requests = 20, -- The number of requests that are allowed within a provided time limit.
332
- time_limit = 3, -- The time limit in which the number of requests that should be accepted.
333
  }
334
 
335
  -- ### Search ###
@@ -360,15 +370,18 @@ safe_search = 2
360
  -- tomorrow-night
361
  -- }}
362
  colorscheme = "catppuccin-mocha" -- the colorscheme name which should be used for the website theme
363
- theme = "simple" -- the theme name which should be used for the website
364
 
365
  -- ### Caching ###
366
- redis_url = "redis://redis:6379" -- redis connection url address on which the client should connect on.
367
-
368
  -- ### Search Engines ###
369
  upstream_search_engines = {
370
- DuckDuckGo = true,
371
- Searx = false,
 
 
 
372
  } -- select the upstream search engines from which the results should be fetched.
373
  ```
374
 
@@ -378,7 +391,7 @@ After this make sure to edit the `docker-compose.yml` and `Dockerfile` files as
378
  $ docker compose up -d --build
379
  ```
380
 
381
- > **Note**
382
  > In the above command the dollar sign(**$**) refers to running the command in privileged mode by using utilities `sudo`, `doas`, `pkgexec`, or any other privileged access methods.
383
 
384
  This will take around 5-10 mins for the first deployment, afterwards, the docker build stages will be cached so it will be faster to build from next time onwards. After the above step finishes launch your preferred browser and then navigate to `http://<ip_address_of_the_device>:<whatever_port_you_provided_in_the_config>`.
 
44
  nix run .#websurfx
45
  ```
46
 
47
+ > [!Note]
48
  > In the above command the dollar sign(**$**) refers to running the command in Privileged mode by using utilities `sudo`, `doas`, `pkgexec`, or any other privileged access methods.
49
 
50
  Once you have run the above set of commands, open your preferred web browser and navigate to http://127.0.0.1:8080/ to start using Websurfx.
 
89
  nix run .#websurfx
90
  ```
91
 
92
+ > [!Note]
93
  > In the above command the dollar sign(**$**) refers to running the command in privileged mode by using utilities `sudo`, `doas`, `pkgexec`, or any other privileged access methods.
94
 
95
  ## Other Distros
 
128
 
129
  Once you have changed the directory to the `websurfx` directory then follow the build options listed below:
130
 
131
+ > [!Note]
132
+ > Before you start building the search engine using one of the below listed command. We would strongly recommend setting the `PKG_ENV` enviroment variable as this applies some special optimization to code to reduce the file and improve the page load speed of the website.
133
+ > To set the `PKG_ENV` enviroment variable in the `bash` shell run the following command:
134
+ >
135
+ > ```bash
136
+ > export PKG_ENV="prod"
137
+ > ```
138
+ >
139
+ > For how to set the environment variables in other shells. You can follow the instructions on how to do so by visiting the documentation of the specific shell you are using.
140
+
141
  ### Hybrid Cache
142
 
143
  > For more information on the features and their pros and cons. see: [**Features**](./features.md)
 
295
  $ docker compose up -d
296
  ```
297
 
298
+ > [!Note]
299
  > In the above command the dollar sign(**$**) refers to running the command in privileged mode by using utilities `sudo`, `doas`, `pkgexec` or any other privileged access methods.
300
 
301
  Then launch the browser of your choice and navigate to http://<ip_address_of_the_device>:<whatever_port_you_provided_in_the_config>.
302
 
303
+ > [!Note]
304
  > The official prebuild images only support `stable` versions of the app and will not support `rolling/edge/unstable` versions. But with support and contribution, it could be made available for these versions as well 🙂.
305
 
306
  ## Manual Deployment
307
 
308
  This section covers how to deploy the app with docker manually by manually building the image and deploying it.
309
 
310
+ > [!Note]
311
  > This section is provided for those who want to further customize the docker image or for those who are extra cautious about security.
312
 
313
+ > [!Warning]
314
  > A note of caution the project currently only supports **x86-64** architecture and as such we do not recommend deploying the project on devices with other architectures. Though if you still want to do it then **do it at your own risk**.
315
 
316
  ### Unstable/Edge/Rolling
 
327
  ```lua
328
  -- ### General ###
329
  logging = true -- an option to enable or disable logs.
330
+ debug = false -- an option to enable or disable debug mode.
331
+ threads = 10 -- the amount of threads that the app will use to run (the value should be greater than 0).
332
 
333
  -- ### Server ###
334
+ port = "8080" -- port on which server should be launched
335
+ binding_ip = "127.0.0.1" --ip address on the which server should be launched.
336
+ production_use = false -- whether to use production mode or not (in other words this option should be used if it is to be used to host it on the server to provide a service to a large number of users (more than one))
337
  -- if production_use is set to true
338
  -- There will be a random delay before sending the request to the search engines, this is to prevent DDoSing the upstream search engines from a large number of simultaneous requests.
339
+ request_timeout = 30 -- timeout for the search requests sent to the upstream search engines to be fetched (value in seconds).
340
  rate_limiter = {
341
+ number_of_requests = 20, -- The number of request that are allowed within a provided time limit.
342
+ time_limit = 3, -- The time limit in which the quantity of requests that should be accepted.
343
  }
344
 
345
  -- ### Search ###
 
370
  -- tomorrow-night
371
  -- }}
372
  colorscheme = "catppuccin-mocha" -- the colorscheme name which should be used for the website theme
373
+ theme = "simple" -- the theme name which should be used for the website
374
 
375
  -- ### Caching ###
376
+ redis_url = "redis://127.0.0.1:8082" -- redis connection url address on which the client should connect on.
377
+ cache_expiry_time = 600 -- This option takes the expiry time of the search results (value in seconds and the value should be greater than or equal to 60 seconds).
378
  -- ### Search Engines ###
379
  upstream_search_engines = {
380
+ DuckDuckGo = true,
381
+ Searx = false,
382
+ Brave = false,
383
+ Startpage = false,
384
+ LibreX = false,
385
  } -- select the upstream search engines from which the results should be fetched.
386
  ```
387
 
 
391
  $ docker compose up -d --build
392
  ```
393
 
394
+ > [!Note]
395
  > In the above command the dollar sign(**$**) refers to running the command in privileged mode by using utilities `sudo`, `doas`, `pkgexec`, or any other privileged access methods.
396
 
397
  This will take around 5-10 mins for the first deployment, afterwards, the docker build stages will be cached so it will be faster to build from next time onwards. After the above step finishes launch your preferred browser and then navigate to `http://<ip_address_of_the_device>:<whatever_port_you_provided_in_the_config>`.
docs/theming.md CHANGED
@@ -1,17 +1,25 @@
1
- # Colorschemes
2
 
3
- ## Built-in
4
 
5
- By default `websurfx` comes with 9 colorschemes to choose from which can be easily chosen using the config file. To how to change colorschemes please view the [Configuration](https://github.com/neon-mmd/websurfx/wiki/configuration) section of the wiki.
6
 
7
- ## Custom
8
 
9
- Creating coloschemes is as easy as it gets it requires the user to have a theme file name with the colorscheme in which every space should be replaced with a `-` (dash) and it should end with a `.css` file extension. After creating the file you need to add the following code with the `colors` you want:
 
 
 
 
 
 
10
 
11
  ```css
12
  :root {
13
  --background-color: <background color>;
14
  --foreground-color: <foreground color (text color on the website) >;
 
 
15
  --color-one: <color 1>;
16
  --color-two: <color 2>;
17
  --color-three: <color 3>;
@@ -22,7 +30,7 @@ Creating coloschemes is as easy as it gets it requires the user to have a theme
22
  }
23
  ```
24
 
25
- > **Note**
26
  > Please infer the theme file located under `public/static/themes` to better understand where each color is being used.
27
 
28
  **Example of `catppuccin-mocha` colorscheme:**
@@ -31,6 +39,7 @@ Creating coloschemes is as easy as it gets it requires the user to have a theme
31
  :root {
32
  --background-color: #1e1e2e;
33
  --foreground-color: #cdd6f4;
 
34
  --color-one: #45475a;
35
  --color-two: #f38ba8;
36
  --color-three: #a6e3a1;
@@ -41,21 +50,31 @@ Creating coloschemes is as easy as it gets it requires the user to have a theme
41
  }
42
  ```
43
 
44
- # Themes
 
 
 
 
45
 
46
- ## Built-in
47
 
48
- By default `websurfx` comes with 1 theme to choose from which can be easily chosen using the config file. To how to change themes please view the [Configuration](https://github.com/neon-mmd/websurfx/wiki/configuration) section of the wiki.
49
 
50
- ## Custom
51
 
52
- To write custom color scheme, it requires the user to have some knowledge of `css stylesheets`.
53
 
54
- **Here is an example of `simple theme` (which we provide by default with the app) which will give the user a better idea on how to create a custom theme using it as a template:**
55
 
56
- ### General
57
 
58
  ```css
 
 
 
 
 
 
59
  * {
60
  padding: 0;
61
  margin: 0;
@@ -72,11 +91,17 @@ body {
72
  justify-content: space-between;
73
  align-items: center;
74
  height: 100vh;
75
- background: var(--color-one);
 
 
 
 
 
 
76
  }
77
  ```
78
 
79
- ### Styles for the index page
80
 
81
  ```css
82
  .search-container {
@@ -87,44 +112,69 @@ body {
87
  align-items: center;
88
  }
89
 
 
 
 
 
90
  .search-container div {
91
  display: flex;
92
  }
93
  ```
94
 
95
- ### Styles for the search box and search button
96
 
97
  ```css
98
  .search_bar {
99
  display: flex;
 
 
100
  }
101
 
102
  .search_bar input {
103
- padding: 1rem;
 
104
  width: 50rem;
105
  height: 3rem;
106
  outline: none;
107
  border: none;
108
- box-shadow: rgba(0, 0, 0, 1);
109
- background: var(--foreground-color);
 
 
 
 
 
 
 
 
 
 
 
 
110
  }
111
 
112
  .search_bar button {
113
- padding: 1rem;
114
- border-radius: 0;
115
  height: 3rem;
116
  display: flex;
117
  justify-content: center;
118
  align-items: center;
119
- outline: none;
 
120
  border: none;
 
121
  gap: 0;
122
- background: var(--background-color);
123
- color: var(--color-three);
124
  font-weight: 600;
125
  letter-spacing: 0.1rem;
126
  }
127
 
 
 
 
 
128
  .search_bar button:active,
129
  .search_bar button:hover {
130
  filter: brightness(1.2);
@@ -141,13 +191,19 @@ body {
141
  width: 20rem;
142
  background-color: var(--color-one);
143
  color: var(--foreground-color);
144
- padding: 1rem 2rem;
145
  border-radius: 0.5rem;
146
- outline: none;
 
147
  border: none;
148
  text-transform: capitalize;
149
  }
150
 
 
 
 
 
 
151
  .search_area .search_options option:hover {
152
  background-color: var(--color-one);
153
  }
@@ -170,9 +226,7 @@ body {
170
  .result_not_found img {
171
  width: 40rem;
172
  }
173
- ```
174
 
175
- ```css
176
  /* styles for the error box */
177
  .error_box .error_box_toggle_button {
178
  background: var(--foreground-color);
@@ -188,9 +242,11 @@ body {
188
  min-height: 20rem;
189
  min-width: 22rem;
190
  }
 
191
  .error_box .dropdown_error_box.show {
192
  display: flex;
193
  }
 
194
  .error_box .dropdown_error_box .error_item,
195
  .error_box .dropdown_error_box .no_errors {
196
  display: flex;
@@ -200,22 +256,25 @@ body {
200
  padding: 1rem;
201
  font-size: 1.2rem;
202
  }
 
203
  .error_box .dropdown_error_box .error_item {
204
  justify-content: space-between;
205
  }
 
206
  .error_box .dropdown_error_box .no_errors {
207
  min-height: 18rem;
208
  justify-content: center;
209
  }
210
 
211
  .error_box .dropdown_error_box .error_item:hover {
212
- box-shadow: inset 0 0 100px 100px rgba(255, 255, 255, 0.1);
213
  }
214
 
215
  .error_box .error_item .severity_color {
216
  width: 1.2rem;
217
  height: 1.2rem;
218
  }
 
219
  .results .result_disallowed,
220
  .results .result_filtered,
221
  .results .result_engine_not_selected {
@@ -225,7 +284,7 @@ body {
225
  gap: 10rem;
226
  font-size: 2rem;
227
  color: var(--foreground-color);
228
- margin: 0rem 7rem;
229
  }
230
 
231
  .results .result_disallowed .user_query,
@@ -251,16 +310,34 @@ body {
251
  }
252
  ```
253
 
254
- ### Styles for the footer and header
255
 
256
  ```css
257
  header {
 
258
  background: var(--background-color);
 
 
 
 
 
 
 
259
  width: 100%;
 
260
  display: flex;
261
- justify-content: right;
262
  align-items: center;
263
- padding: 1rem;
 
 
 
 
 
 
 
 
 
 
264
  }
265
 
266
  header ul,
@@ -301,39 +378,9 @@ footer div {
301
  display: flex;
302
  gap: 1rem;
303
  }
304
-
305
- footer {
306
- background: var(--background-color);
307
- width: 100%;
308
- padding: 1rem;
309
- display: flex;
310
- flex-direction: column;
311
- justify-content: center;
312
- align-items: center;
313
- }
314
-
315
- footer div span {
316
- font-size: 1.5rem;
317
- color: var(--4);
318
- }
319
-
320
- footer div {
321
- display: flex;
322
- gap: 1rem;
323
- }
324
-
325
- footer {
326
- background: var(--bg);
327
- width: 100%;
328
- padding: 1rem;
329
- display: flex;
330
- flex-direction: column;
331
- justify-content: center;
332
- align-items: center;
333
- }
334
  ```
335
 
336
- ### Styles for the search page
337
 
338
  ```css
339
  .results {
@@ -341,6 +388,11 @@ footer {
341
  display: flex;
342
  flex-direction: column;
343
  justify-content: space-around;
 
 
 
 
 
344
  }
345
 
346
  .results .search_bar {
@@ -352,6 +404,7 @@ footer {
352
  flex-direction: column;
353
  justify-content: space-between;
354
  margin: 2rem 0;
 
355
  }
356
 
357
  .results_aggregated .result {
@@ -361,10 +414,10 @@ footer {
361
  }
362
 
363
  .results_aggregated .result h1 a {
364
- font-size: 1.5rem;
 
365
  color: var(--color-two);
366
  text-decoration: none;
367
- letter-spacing: 0.1rem;
368
  }
369
 
370
  .results_aggregated .result h1 a:hover {
@@ -377,14 +430,15 @@ footer {
377
 
378
  .results_aggregated .result small {
379
  color: var(--color-three);
380
- font-size: 1.1rem;
381
  word-wrap: break-word;
382
  line-break: anywhere;
383
  }
384
 
385
  .results_aggregated .result p {
386
  color: var(--foreground-color);
387
- font-size: 1.2rem;
 
388
  margin-top: 0.3rem;
389
  word-wrap: break-word;
390
  line-break: anywhere;
@@ -395,10 +449,13 @@ footer {
395
  font-size: 1.2rem;
396
  padding: 1rem;
397
  color: var(--color-five);
 
 
 
398
  }
399
  ```
400
 
401
- ### Styles for the 404 page
402
 
403
  ```css
404
  .error_container {
@@ -448,11 +505,11 @@ footer {
448
  }
449
  ```
450
 
451
- ### Styles for the previous and next button on the search page
452
 
453
  ```css
454
  .page_navigation {
455
- padding: 0 0 2rem 0;
456
  display: flex;
457
  justify-content: space-between;
458
  align-items: center;
@@ -472,7 +529,7 @@ footer {
472
  }
473
  ```
474
 
475
- ### Styles for the about page
476
 
477
  This part is only available right now in the **rolling/edge/unstable** version
478
 
@@ -517,7 +574,7 @@ This part is only available right now in the **rolling/edge/unstable** version
517
  }
518
  ```
519
 
520
- ### Styles for the Settings Page
521
 
522
  This part is only available right now in the **rolling/edge/unstable** version
523
 
@@ -526,6 +583,7 @@ This part is only available right now in the **rolling/edge/unstable** version
526
  display: flex;
527
  justify-content: space-around;
528
  width: 80dvw;
 
529
  }
530
 
531
  .settings h1 {
@@ -533,9 +591,18 @@ This part is only available right now in the **rolling/edge/unstable** version
533
  font-size: 2.5rem;
534
  }
535
 
 
 
 
 
 
536
  .settings hr {
537
  border-color: var(--color-three);
538
- margin: 0.3rem 0 1rem 0;
 
 
 
 
539
  }
540
 
541
  .settings_container .sidebar {
@@ -548,7 +615,6 @@ This part is only available right now in the **rolling/edge/unstable** version
548
  margin-left: -0.7rem;
549
  padding: 0.7rem;
550
  border-radius: 5px;
551
- font-weight: bold;
552
  margin-bottom: 0.5rem;
553
  color: var(--foreground-color);
554
  text-transform: capitalize;
@@ -556,18 +622,30 @@ This part is only available right now in the **rolling/edge/unstable** version
556
  }
557
 
558
  .settings_container .sidebar .btn {
559
- padding: 0.5rem;
560
  border-radius: 0.5rem;
 
 
 
 
 
 
 
 
 
 
561
  }
562
 
563
  .settings_container .sidebar .btn.active {
564
  background-color: var(--color-two);
 
565
  }
566
 
567
  .settings_container .main_container {
568
  width: 70%;
569
  border-left: 1.5px solid var(--color-three);
570
  padding-left: 3rem;
 
571
  }
572
 
573
  .settings_container .tab {
@@ -576,6 +654,7 @@ This part is only available right now in the **rolling/edge/unstable** version
576
 
577
  .settings_container .tab.active {
578
  display: flex;
 
579
  flex-direction: column;
580
  justify-content: space-around;
581
  }
@@ -623,7 +702,7 @@ This part is only available right now in the **rolling/edge/unstable** version
623
  .settings_container .general select {
624
  margin: 0.7rem 0;
625
  width: 20rem;
626
- background-color: var(--background-color);
627
  color: var(--foreground-color);
628
  padding: 1rem 2rem;
629
  border-radius: 0.5rem;
@@ -641,16 +720,19 @@ This part is only available right now in the **rolling/edge/unstable** version
641
  display: flex;
642
  flex-direction: column;
643
  justify-content: center;
644
- gap: 1rem;
645
  padding: 1rem 0;
 
 
646
  }
647
 
648
  .settings_container .engines .toggle_btn {
649
  color: var(--foreground-color);
650
  font-size: 1.5rem;
651
  display: flex;
652
- gap: 0.5rem;
653
  align-items: center;
 
 
 
654
  }
655
 
656
  .settings_container .engines hr {
@@ -658,11 +740,11 @@ This part is only available right now in the **rolling/edge/unstable** version
658
  }
659
 
660
  .settings_container .cookies input {
661
- margin: 1rem 0rem;
662
  }
663
  ```
664
 
665
- ### Styles for the Toggle Button
666
 
667
  This part is only available right now in the **rolling/edge/unstable** version
668
 
@@ -686,25 +768,26 @@ This part is only available right now in the **rolling/edge/unstable** version
686
  .slider {
687
  position: absolute;
688
  cursor: pointer;
689
- top: 0;
690
- left: 0;
691
- right: 0;
692
- bottom: 0;
693
- background-color: var(--background-color);
694
- -webkit-transition: 0.4s;
695
- transition: 0.4s;
 
 
696
  }
697
 
698
- .slider:before {
699
  position: absolute;
700
  content: '';
701
  height: 2.6rem;
702
  width: 2.6rem;
703
  left: 0.4rem;
704
  bottom: 0.4rem;
705
- background-color: var(--foreground-color);
706
- -webkit-transition: 0.4s;
707
- transition: 0.4s;
708
  }
709
 
710
  input:checked + .slider {
@@ -715,9 +798,7 @@ input:focus + .slider {
715
  box-shadow: 0 0 1px var(--color-three);
716
  }
717
 
718
- input:checked + .slider:before {
719
- -webkit-transform: translateX(2.6rem);
720
- -ms-transform: translateX(2.6rem);
721
  transform: translateX(2.6rem);
722
  }
723
 
@@ -726,9 +807,79 @@ input:checked + .slider:before {
726
  border-radius: 3.4rem;
727
  }
728
 
729
- .slider.round:before {
730
  border-radius: 50%;
731
  }
732
  ```
733
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
734
  [⬅️ Go back to Home](./README.md)
 
1
+ # Theming
2
 
3
+ ## Colorschemes
4
 
5
+ ### Built-in
6
 
7
+ By default `websurfx` comes with 12 colorschemes to choose from which can be easily chosen using the config file or via the settings page on the website.
8
 
9
+ > To how to change colorschemes using the config file. See: [**Configuration**](https://github.com/neon-mmd/websurfx/wiki/configuration)
10
+
11
+ ### Custom
12
+
13
+ To write a custom theme for the website, you will first need to create a new file under the `public/static/themes` folder with name of the theme containing each word seperated with a hyphen (**-**). Then after that edit the newly created file as required with new css code.
14
+
15
+ Creating coloschemes is as easy as it gets it requires the user to have a colorscheme file name with the name of the colorscheme that is to be provided in which every space should be replaced with a `-` (dash) and it should end with a `.css` file extension. After creating the file you need to add the following code with the `colors` you want to include:
16
 
17
  ```css
18
  :root {
19
  --background-color: <background color>;
20
  --foreground-color: <foreground color (text color on the website) >;
21
+ --logo-color: <logo color
22
+ (the color of the logo svg image on the website homepage) >;
23
  --color-one: <color 1>;
24
  --color-two: <color 2>;
25
  --color-three: <color 3>;
 
30
  }
31
  ```
32
 
33
+ > [!Note]
34
  > Please infer the theme file located under `public/static/themes` to better understand where each color is being used.
35
 
36
  **Example of `catppuccin-mocha` colorscheme:**
 
39
  :root {
40
  --background-color: #1e1e2e;
41
  --foreground-color: #cdd6f4;
42
+ --logo-color: #f5c2e7;
43
  --color-one: #45475a;
44
  --color-two: #f38ba8;
45
  --color-three: #a6e3a1;
 
50
  }
51
  ```
52
 
53
+ ## Themes
54
+
55
+ ### Built-in
56
+
57
+ By default `websurfx` comes with 1 theme to choose from which can be easily chosen using the config file or via the settings page on the website.
58
 
59
+ > To how to change themes using the config file. See: [**Configuration**](https://github.com/neon-mmd/websurfx/wiki/configuration)
60
 
61
+ ### Custom
62
 
63
+ > This section expects the user to have some knowledge of `css`.
64
 
65
+ To write a custom theme for the website, you will first need to create a new file under the `public/static/themes` folder with name of the theme containing each word seperated with a hyphen (**-**). Then after that edit the newly created file as required with new css code.
66
 
67
+ Here is an example of `simple theme` (which we provide by default with the app) which will give you a better idea on how you can create your own custom theme for the website:
68
 
69
+ #### General
70
 
71
  ```css
72
+ @font-face {
73
+ font-family: Rubik;
74
+ src: url('https://fonts.googleapis.com/css2?family=Rubik:wght@400;500;600;700;800&display=swap');
75
+ fallback: sans-serif;
76
+ }
77
+
78
  * {
79
  padding: 0;
80
  margin: 0;
 
91
  justify-content: space-between;
92
  align-items: center;
93
  height: 100vh;
94
+ font-family: Rubik, sans-serif;
95
+ background-color: var(--background-color);
96
+ }
97
+
98
+ /* enforce font for buttons */
99
+ button {
100
+ font-family: Rubik, sans-serif;
101
  }
102
  ```
103
 
104
+ #### Styles for the index page
105
 
106
  ```css
107
  .search-container {
 
112
  align-items: center;
113
  }
114
 
115
+ .search-container svg {
116
+ color: var(--logo-color);
117
+ }
118
+
119
  .search-container div {
120
  display: flex;
121
  }
122
  ```
123
 
124
+ #### Styles for the search box and search button
125
 
126
  ```css
127
  .search_bar {
128
  display: flex;
129
+ gap: 10px;
130
+ align-items: center;
131
  }
132
 
133
  .search_bar input {
134
+ border-radius: 6px;
135
+ padding: 2.6rem 2.2rem;
136
  width: 50rem;
137
  height: 3rem;
138
  outline: none;
139
  border: none;
140
+ box-shadow: rgb(0 0 0 / 1);
141
+ background-color: var(--color-one);
142
+ color: var(--foreground-color);
143
+ outline-offset: 3px;
144
+ font-size: 1.6rem;
145
+ }
146
+
147
+ .search_bar input:focus {
148
+ outline: 2px solid var(--foreground-color);
149
+ }
150
+
151
+ .search_bar input::placeholder {
152
+ color: var(--foreground-color);
153
+ opacity: 1;
154
  }
155
 
156
  .search_bar button {
157
+ padding: 2.6rem 3.2rem;
158
+ border-radius: 6px;
159
  height: 3rem;
160
  display: flex;
161
  justify-content: center;
162
  align-items: center;
163
+ outline-offset: 3px;
164
+ outline: 2px solid transparent;
165
  border: none;
166
+ transition: 0.1s;
167
  gap: 0;
168
+ background-color: var(--color-six);
169
+ color: var(--background-color);
170
  font-weight: 600;
171
  letter-spacing: 0.1rem;
172
  }
173
 
174
+ .search_bar button:active {
175
+ outline: 2px solid var(--color-three);
176
+ }
177
+
178
  .search_bar button:active,
179
  .search_bar button:hover {
180
  filter: brightness(1.2);
 
191
  width: 20rem;
192
  background-color: var(--color-one);
193
  color: var(--foreground-color);
194
+ padding: 1.2rem 2rem;
195
  border-radius: 0.5rem;
196
+ outline-offset: 3px;
197
+ outline: 2px solid transparent;
198
  border: none;
199
  text-transform: capitalize;
200
  }
201
 
202
+ .search_area .search_options select:active,
203
+ .search_area .search_options select:hover {
204
+ outline: 2px solid var(--color-three);
205
+ }
206
+
207
  .search_area .search_options option:hover {
208
  background-color: var(--color-one);
209
  }
 
226
  .result_not_found img {
227
  width: 40rem;
228
  }
 
229
 
 
230
  /* styles for the error box */
231
  .error_box .error_box_toggle_button {
232
  background: var(--foreground-color);
 
242
  min-height: 20rem;
243
  min-width: 22rem;
244
  }
245
+
246
  .error_box .dropdown_error_box.show {
247
  display: flex;
248
  }
249
+
250
  .error_box .dropdown_error_box .error_item,
251
  .error_box .dropdown_error_box .no_errors {
252
  display: flex;
 
256
  padding: 1rem;
257
  font-size: 1.2rem;
258
  }
259
+
260
  .error_box .dropdown_error_box .error_item {
261
  justify-content: space-between;
262
  }
263
+
264
  .error_box .dropdown_error_box .no_errors {
265
  min-height: 18rem;
266
  justify-content: center;
267
  }
268
 
269
  .error_box .dropdown_error_box .error_item:hover {
270
+ box-shadow: inset 0 0 100px 100px rgb(255 255 255 / 0.1);
271
  }
272
 
273
  .error_box .error_item .severity_color {
274
  width: 1.2rem;
275
  height: 1.2rem;
276
  }
277
+
278
  .results .result_disallowed,
279
  .results .result_filtered,
280
  .results .result_engine_not_selected {
 
284
  gap: 10rem;
285
  font-size: 2rem;
286
  color: var(--foreground-color);
287
+ margin: 0 7rem;
288
  }
289
 
290
  .results .result_disallowed .user_query,
 
310
  }
311
  ```
312
 
313
+ #### Styles for the footer and header
314
 
315
  ```css
316
  header {
317
+ width: 100%;
318
  background: var(--background-color);
319
+ display: flex;
320
+ align-items: center;
321
+ justify-content: space-between;
322
+ padding: 2rem 3rem;
323
+ }
324
+
325
+ footer {
326
  width: 100%;
327
+ background: var(--background-color);
328
  display: flex;
 
329
  align-items: center;
330
+ padding: 1.7rem 1.7rem 4rem;
331
+ gap: 1.8rem;
332
+ flex-direction: column;
333
+ justify-content: center;
334
+ }
335
+
336
+ header h1 a {
337
+ text-transform: capitalize;
338
+ text-decoration: none;
339
+ color: var(--foreground-color);
340
+ letter-spacing: 0.1rem;
341
  }
342
 
343
  header ul,
 
378
  display: flex;
379
  gap: 1rem;
380
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
381
  ```
382
 
383
+ #### Styles for the search page
384
 
385
  ```css
386
  .results {
 
388
  display: flex;
389
  flex-direction: column;
390
  justify-content: space-around;
391
+ gap: 1rem;
392
+ }
393
+
394
+ .result {
395
+ gap: 1rem;
396
  }
397
 
398
  .results .search_bar {
 
404
  flex-direction: column;
405
  justify-content: space-between;
406
  margin: 2rem 0;
407
+ content-visibility: auto;
408
  }
409
 
410
  .results_aggregated .result {
 
414
  }
415
 
416
  .results_aggregated .result h1 a {
417
+ font-size: 1.7rem;
418
+ font-weight: normal;
419
  color: var(--color-two);
420
  text-decoration: none;
 
421
  }
422
 
423
  .results_aggregated .result h1 a:hover {
 
430
 
431
  .results_aggregated .result small {
432
  color: var(--color-three);
433
+ font-size: 1.3rem;
434
  word-wrap: break-word;
435
  line-break: anywhere;
436
  }
437
 
438
  .results_aggregated .result p {
439
  color: var(--foreground-color);
440
+ font-size: 1.4rem;
441
+ line-height: 2.4rem;
442
  margin-top: 0.3rem;
443
  word-wrap: break-word;
444
  line-break: anywhere;
 
449
  font-size: 1.2rem;
450
  padding: 1rem;
451
  color: var(--color-five);
452
+ display: flex;
453
+ gap: 1rem;
454
+ justify-content: right;
455
  }
456
  ```
457
 
458
+ #### Styles for the 404 page
459
 
460
  ```css
461
  .error_container {
 
505
  }
506
  ```
507
 
508
+ #### Styles for the previous and next button on the search page
509
 
510
  ```css
511
  .page_navigation {
512
+ padding: 0 0 2rem;
513
  display: flex;
514
  justify-content: space-between;
515
  align-items: center;
 
529
  }
530
  ```
531
 
532
+ #### Styles for the about page
533
 
534
  This part is only available right now in the **rolling/edge/unstable** version
535
 
 
574
  }
575
  ```
576
 
577
+ #### Styles for the Settings Page
578
 
579
  This part is only available right now in the **rolling/edge/unstable** version
580
 
 
583
  display: flex;
584
  justify-content: space-around;
585
  width: 80dvw;
586
+ margin: 5rem 0;
587
  }
588
 
589
  .settings h1 {
 
591
  font-size: 2.5rem;
592
  }
593
 
594
+ .settings > h1 {
595
+ margin-bottom: 4rem;
596
+ margin-left: 2rem;
597
+ }
598
+
599
  .settings hr {
600
  border-color: var(--color-three);
601
+ margin: 0.3rem 0 1rem;
602
+ }
603
+
604
+ .settings > hr {
605
+ margin-left: 2rem;
606
  }
607
 
608
  .settings_container .sidebar {
 
615
  margin-left: -0.7rem;
616
  padding: 0.7rem;
617
  border-radius: 5px;
 
618
  margin-bottom: 0.5rem;
619
  color: var(--foreground-color);
620
  text-transform: capitalize;
 
622
  }
623
 
624
  .settings_container .sidebar .btn {
625
+ padding: 2rem;
626
  border-radius: 0.5rem;
627
+ outline-offset: 3px;
628
+ outline: 2px solid transparent;
629
+ }
630
+
631
+ .settings_container .sidebar .btn:active {
632
+ outline: 2px solid var(--color-two);
633
+ }
634
+
635
+ .settings_container .sidebar .btn:not(.active):hover {
636
+ color: var(--color-two);
637
  }
638
 
639
  .settings_container .sidebar .btn.active {
640
  background-color: var(--color-two);
641
+ color: var(--background-color);
642
  }
643
 
644
  .settings_container .main_container {
645
  width: 70%;
646
  border-left: 1.5px solid var(--color-three);
647
  padding-left: 3rem;
648
+ border: none;
649
  }
650
 
651
  .settings_container .tab {
 
654
 
655
  .settings_container .tab.active {
656
  display: flex;
657
+ gap: 1.2rem;
658
  flex-direction: column;
659
  justify-content: space-around;
660
  }
 
702
  .settings_container .general select {
703
  margin: 0.7rem 0;
704
  width: 20rem;
705
+ background-color: var(--color-one);
706
  color: var(--foreground-color);
707
  padding: 1rem 2rem;
708
  border-radius: 0.5rem;
 
720
  display: flex;
721
  flex-direction: column;
722
  justify-content: center;
 
723
  padding: 1rem 0;
724
+ margin-bottom: 2rem;
725
+ gap: 2rem;
726
  }
727
 
728
  .settings_container .engines .toggle_btn {
729
  color: var(--foreground-color);
730
  font-size: 1.5rem;
731
  display: flex;
 
732
  align-items: center;
733
+ border-radius: 100px;
734
+ gap: 1.5rem;
735
+ letter-spacing: 1px;
736
  }
737
 
738
  .settings_container .engines hr {
 
740
  }
741
 
742
  .settings_container .cookies input {
743
+ margin: 1rem 0;
744
  }
745
  ```
746
 
747
+ #### Styles for the Toggle Button
748
 
749
  This part is only available right now in the **rolling/edge/unstable** version
750
 
 
768
  .slider {
769
  position: absolute;
770
  cursor: pointer;
771
+ inset: 0;
772
+ background-color: var(--foreground-color);
773
+ transition: 0.2s;
774
+ outline-offset: 3px;
775
+ outline: 2px solid transparent;
776
+ }
777
+
778
+ .slider:active {
779
+ outline: 2px solid var(--foreground-color);
780
  }
781
 
782
+ .slider::before {
783
  position: absolute;
784
  content: '';
785
  height: 2.6rem;
786
  width: 2.6rem;
787
  left: 0.4rem;
788
  bottom: 0.4rem;
789
+ background-color: var(--background-color);
790
+ transition: 0.2s;
 
791
  }
792
 
793
  input:checked + .slider {
 
798
  box-shadow: 0 0 1px var(--color-three);
799
  }
800
 
801
+ input:checked + .slider::before {
 
 
802
  transform: translateX(2.6rem);
803
  }
804
 
 
807
  border-radius: 3.4rem;
808
  }
809
 
810
+ .slider.round::before {
811
  border-radius: 50%;
812
  }
813
  ```
814
 
815
+ ## Animations
816
+
817
+ ### Built-in
818
+
819
+ By default `websurfx` comes with 1 animation to choose from which can be easily chosen using the config file or via the settings page on the website.
820
+
821
+ > To how to change animations using the config file. See: [**Configuration**](https://github.com/neon-mmd/websurfx/wiki/configuration)
822
+
823
+ ### Custom
824
+
825
+ To write custom animation, it requires the user to have some knowledge of `themes` and the `HTML of the page for which the animation is being provided for`.
826
+
827
+ The animations can be of 2 categories:
828
+
829
+ - Theme specific animations
830
+ - Universal animations
831
+
832
+ #### Theme Specific Animations
833
+
834
+ These animations can only be used with a specific theme and should not be used with other themes otherwise it either won't look good or won't work at all or would work partially.
835
+
836
+ Here is an example of `simple-frosted-glow` animation for the `simple theme` (which we provide by default with the app) which will give you a better idea on how to create a custom animation for a specific theme:
837
+
838
+ ```css
839
+ .results_aggregated .result {
840
+ margin: 1rem;
841
+ padding: 1rem;
842
+ border-radius: 1rem;
843
+ }
844
+
845
+ .results_aggregated .result:hover {
846
+ box-shadow:
847
+ inset 0 0 3rem var(--color-two),
848
+ inset 0 0 6rem var(--color-five),
849
+ inset 0 0 9rem var(--color-three),
850
+ 0 0 0.25rem var(--color-two),
851
+ 0 0 0.5rem var(--color-five),
852
+ 0 0 0.75rem var(--color-three);
853
+ }
854
+ ```
855
+
856
+ #### Universal Animations
857
+
858
+ These animations are independent of the theme being used and can be used with all the themes.
859
+
860
+ Here is an example of `text-tilt` animation which will give you an idea on how to create universal animations for the search engine website.
861
+
862
+ ```css
863
+ .results_aggregated .result:hover {
864
+ transform: skewX(10deg);
865
+ }
866
+ ```
867
+
868
+ > [!Note]
869
+ > 1. The above-mentioned examples of animations was covered for the search page of the search engine website. While the same way of creating custom animations can also be done for other pages also.
870
+ > 2. While the naming the file for the new theme file. Follow the following naming conventions:
871
+ > 1. If the animation is theme specfic then name of the animation file should look like this:
872
+ > `<name of the theme which these animation is for><seperated by a hyphen or dash><name of the animation with whitespaces replaced with hyphens>`
873
+ > **For example:**
874
+ > If the animation to make search results frosty glow on hover was to be created for the `simple` theme then the name of the file would look something like this:
875
+ > `simple-frosted-glow`
876
+ > Where `simple` is the name of the theme the animation targets and `frosted-glow` is the name of the animation where each word has been seperated by a hyphen.
877
+ > 2. If the animation is not theme specfic (univeral theme) then name of the animation file should look like this:
878
+ > `<name of the animation with whitespaces replaced with hyphens>`
879
+ > **For example:**
880
+ > If the animation to make search results text tilt on hover was to be created then the name of the file would look something like this:
881
+ > `text-tilt`
882
+ > Where `text-tilt` is the name of the animation where each word has been seperated by a hyphen. (While naming the files for these types of themes, You do not need to add a theme name in frontend of the file name.).
883
+
884
+
885
  [⬅️ Go back to Home](./README.md)
flake.nix CHANGED
@@ -32,23 +32,32 @@
32
  buildInputs = [
33
  actionlint
34
  cargo
 
35
  haskellPackages.hadolint
 
36
  nodePackages_latest.cspell
37
  nodePackages_latest.eslint
38
  nodePackages_latest.markdownlint-cli2
39
  nodePackages_latest.stylelint
40
  redis
41
  rustPackages.clippy
 
 
42
  rustc
 
43
  yamllint
44
  openssl
45
  pkg-config
46
  ];
47
  RUST_SRC_PATH = rustPlatform.rustLibSrc;
 
 
 
 
48
  };
49
 
50
  # Build via "nix build .#websurfx", which is basically just
51
  # calls the build function
52
  packages.websurfx = packages.default;
53
  });
54
- }
 
32
  buildInputs = [
33
  actionlint
34
  cargo
35
+ docker
36
  haskellPackages.hadolint
37
+ nodejs
38
  nodePackages_latest.cspell
39
  nodePackages_latest.eslint
40
  nodePackages_latest.markdownlint-cli2
41
  nodePackages_latest.stylelint
42
  redis
43
  rustPackages.clippy
44
+ rust-analyzer
45
+ cargo-watch
46
  rustc
47
+ rustfmt
48
  yamllint
49
  openssl
50
  pkg-config
51
  ];
52
  RUST_SRC_PATH = rustPlatform.rustLibSrc;
53
+ shellHook = ''
54
+ export PATH="$PATH:$HOME/.cargo/bin"
55
+ export NODE_PATH="$NODE_PATH:./node_modules"
56
+ '';
57
  };
58
 
59
  # Build via "nix build .#websurfx", which is basically just
60
  # calls the build function
61
  packages.websurfx = packages.default;
62
  });
63
+