Commit 8a52a60b14

8a52a60b14aa510983c173825e16636fca73dac9

parent: 210c69e48c

Unregistered key

cmc <hello@cleberg.net> · 2026-07-14 21:50 UTC
committer: <noreply@github.com>

documentation & metadata cleanup (#1)

* hard wrap LICENSE for readability
* translate TODO.md from Russian to English
* clean up TODO.md into a proper GFM todo list
* fix: remove dead service links and add working links
* update README to reflect new repository and structure

Layout: unified · split

INSTANCES.md +3 −8
@@ -1,11 +1,6 @@
1JSON variant should be used from master — https://git.macaw.me/skunky/SkunkyArt/raw/branch/master/instances.json
1JSON variant should be used from main:
2[instances.json](https://github.com/zerolabsco/SkunkyArt/blob/dev/instances.json)
23
34|Instance|Yggdrasil|I2P|Tor|NSFW|Proxifying|Modified Sources|Country|
45|:------:|:-------:|:-:|:-:|:--:|:--------:|:--------------:|:-----:|
5|[lost-skunk.cc](https://lost-skunk.cc/skunkyart)|[Yes](http://[201:f137:d1ac:920e:cd42:bfd1:1e83:da1d]/skunkyart)|No|No| No | Yes | No | Finland |
6|[orehus.club](https://sa.orehus.club)|No|No|No| Yes | No | No | Germany |
7|[bloat.cat](https://skunky.bloat.cat)|No|No|No| Yes | Yes | No | Germany |
8|[lumaeris.com](https://skunkyart.lumaeris.com)|No|No|No| Yes | Yes | No | Germany |
9|[art.bloat.cat](https://art.bloat.cat)|No|No|No| Yes | Yes | No | Germany |
10|[dc09.ru](https://sa.dc09.ru)|No|No|No| No | Yes | No | Russia |
11|[opnxng.com](https://da.opnxng.com)|No|No|No| Yes | Yes | No | Singapore |
6|[zerolabs.sh](https://art.zerolabs.sh)|No|No|[Yes](http://mplqs2jxkjd5wxak3zjv55oxyadf4vwzx6ksgj4ztftndjl6elgsf4qd.onion)| Yes | No | No | United States |
LICENSE +17 −4
@@ -2,12 +2,25 @@ X11 License
22
33Copyright (C) 1996 X Consortium
44
5Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
5Permission is hereby granted, free of charge, to any person obtaining a copy of
6this software and associated documentation files (the "Software"), to deal in
7the Software without restriction, including without limitation the rights to
8use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9the Software, and to permit persons to whom the Software is furnished to do so,
10subject to the following conditions:
611
7The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
12The above copyright notice and this permission notice shall be included in all
13copies or substantial portions of the Software.
814
9THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
15THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM
18BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
19CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1021
11Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium.
22Except as contained in this notice, the name of the X Consortium shall not be
23used in advertising or otherwise to promote the sale, use or other dealings in
24this Software without prior written authorization from the X Consortium.
1225
1326X Window System is a trademark of X Consortium, Inc.
README.md +48 −26
@@ -1,51 +1,73 @@
11> [!NOTE]
2> Currently, due to school, I cannot actively develop this project :(
3> However, this does not mean that development has stopped. Just wait for the summer. For questions, write either to the Matrix room or to me in DM.
2> This is a fork of [SkunkyArt](https://git.macaw.me/skunky/SkunkyArt). The
3> upstream repository has not been updated in over a year, contains a number of
4> unresolved bugs, and all of its previously listed instances were found to be
5> dead links. This fork exists to keep the project maintained.
46
57<img src="static/images/logo.png" alt="SkunkyArt" title="SkunkyArt Logo" width="20%" loading="lazy"/>
68
7[![Matrix room](https://img.shields.io/badge/matrix-000000?style=for-the-badge&logo=Matrix&logoColor=white)](https://go.kde.org/matrix/#/#skunkyart:gnulinux.club)
8
9Instances: [`INSTANCES.md`](/skunky/SkunkyArt/src/branch/master/INSTANCES.md)
9Instances: [`INSTANCES.md`](INSTANCES.md)
1010
1111# EN 🇺🇸
1212## Description
13SkunkyArt 🦨 — alternative frontend for DevianArt, which works without JS.
14## Build (translated via DeepL)
15It is recommended to build with the 'embed' tag because it embeds the presets in the binary. If you plan to modify the templates, then do not use this tag. You can also add the `-ldflags "-w -s"` argument (GCCGO has a different name for it — `gccgoflags`) to reduce the size of the output file. Here is an example:
13SkunkyArt 🦨 — an alternative frontend for DeviantArt that works entirely
14without JavaScript.
15
16## Build
17It is recommended to build with the 'embed' tag because it embeds the presets in
18the binary. If you plan to modify the templates, then do not use this tag. You
19can also add the `-ldflags "-w -s"` argument (GCCGO has a different name for it
20— `gccgoflags`) to reduce the size of the output file. Here is an example:
1621
1722`go build -tags embed -ldflags "-w -s"`
1823
19Pre-compiled binaries can be found in the [Releases](https://git.macaw.me/skunky/skunkyart/releases) tab.
2024## Setup
21The sample config is in the `config.example.json` file. For custom config, use `--config` option.
22See the [`SETUP.md`](/skunky/SkunkyArt/src/branch/master/SETUP.md) file for more info about directives.
25The sample config is in the `config.example.json` file. For custom config, use
26the `--config` option.
27
28See the [`SETUP.md`](SETUP.md) file for more info about directives.
29
2330## Adding instance to the list
24To do this, you must either make a PR by adding your instance to the `instances.json` and `INSTANCES.md` files (you can use `--add-instance` cli-argument to automatically add the instance to these files), or create an Issue, or report it to the room in Matrix. Keep in mind that your instance must comply with the following rules:
251. the Instance must not use Cloudflare.
262. If your instance has modified source code, you need to publish it to any free platform. For example, Github and Gitlab are not.
31To do this, you must either make a PR by adding your instance to the
32`instances.json` and `INSTANCES.md` files (you can use `--add-instance`
33cli-argument to automatically add the instance to these files) or create an
34Issue.
35
2736## Acknowledgements
2837* [vlnst](https://git.bloat.cat/vlnst) — wrote a Docker file.
29* [Лис⚛](https://go.kde.org/matrix/#/@fox:matrix.org) — helped me understand Go and gave me a lot of useful advice on this language.
30* [meoww](https://codeberg.org/meoww) — translated some sentences into English and wrote a service for openrc
38* [Лис⚛](https://go.kde.org/matrix/#/@fox:matrix.org) — helped me understand Go
39 and gave me a lot of useful advice on this language.
40* [meoww](https://codeberg.org/meoww) — translated some sentences into English
41 and wrote a service for openrc
3142
3243# RU 🇷🇺
3344## Описание
34SkunkyArt 🦨 — альтернативный фронтенд к DeviantArt, который полностью работает без JS (JavaScript).
45SkunkyArt 🦨 — альтернативный фронтенд к DeviantArt, который полностью работает
46без JS (JavaScript).
47
3548## Сборка
36Рекомендуется производить сборку с тегом 'embed', поскольку он встраивает заготовки в бинарный файл. Если вы планируете изменять заготовки, то не используйте этот тег. Также вы можете добавить аргумент `-ldflags "-w -s"` (у GCCGO он называется по-другому — `gccgoflags`) для уменьшения размера выходного файла. Вот пример:
49Рекомендуется производить сборку с тегом 'embed', поскольку он встраивает
50заготовки в бинарный файл. Если вы планируете изменять заготовки, то не
51используйте этот тег. Также вы можете добавить аргумент `-ldflags "-w -s"` (у
52GCCGO он называется по-другому — `gccgoflags`) для уменьшения размера выходного
53файла. Вот пример:
3754
3855`go build -tags embed -ldflags "-w -s"`
3956
40Готовые бинари находятся во вкладке [Releases](https://git.macaw.me/skunky/skunkyart/releases).
4157## Настройка
42Пример конфига находится в файле `config.example.json`. Чтобы указать свой конфиг, используйте cli-аргумент `--config`.
43См. [`SETUP-RU.md`](/skunky/SkunkyArt/src/branch/master/SETUP-RU.md) для информации о настройки фронтенда.
58Пример конфига находится в файле `config.example.json`. Чтобы указать свой
59конфиг, используйте cli-аргумент `--config`.
60
61См. [`SETUP-RU.md`](SETUP-RU.md) для информации о настройки фронтенда.
62
4463## Добавление инстанса в список
45Чтобы это сделать, вы должны либо сделать PR, добавив в файлы `instances.json` и `INSTANCES.md` свой инстанс (можете воспользоваться cli-аргументом `--add-instance`, который автоматически это сделает), либо создать Issue, или сообщить о нём в комнате в Matrix. Учтите, что ваш инстанс должен соблюсти следущие правила:
461. Инстанс не должен использовать Cloudflare итп.
472. Если ваш инстанс имеет модифицированный исходный код, то вам нужно опубликовать его на любую свободную площадку. Например, Github и Gitlab таковыми не являются.
64Чтобы это сделать, вы должны либо сделать PR, добавив в файлы `instances.json` и
65`INSTANCES.md` свой инстанс (можете воспользоваться cli-аргументом
66`--add-instance`, который автоматически это сделает), либо создать Issue.
67
4868## Благодарности
4969* [vlnst](https://git.bloat.cat/vlnst) — написал Docker-файл.
50* [Лис⚛](https://go.kde.org/matrix/#/@fox:matrix.org) — помог разобраться в Go и много чего полезного посоветовал по этому языку.
51* [meoww](https://codeberg.org/meoww) — перевела некоторые предложения на английский язык и написала сервис для openrc
\ No newline at end of file
70* [Лис⚛](https://go.kde.org/matrix/#/@fox:matrix.org) — помог разобраться в Go и
71 много чего полезного посоветовал по этому языку.
72* [meoww](https://codeberg.org/meoww) — перевела некоторые предложения на
73 английский язык и написала сервис для openrc
TODO.md +26 −22
@@ -1,23 +1,27 @@
1# v1.3.x
2* Почистить говнокод
3* Добавить фильтры поиска
4* ~~Сделать порт под FreeBSD~~ ✔️
5* **Доделать парсинг описания**
6* ~~Реализовать стрипы в ежедневных артах~~ ✔️
7* ~~Исправить баг с навигацией по страницам~~ ✔️
8* ~~Сделать нормальное отображение ошибок~~ ✔️
9* ~~Сделать единицы в конфиге более понятными~~ ✔️
10* Добавить чекер инстанса на работоспособность
11* ~~Добавить просмотр понравившихся артов пользователю~~ ✔️
12* Добавить возможность включить темплейты в бинарник [P]
13* ~~Реализовать миниатюры и оптимизировать CSS под маленькие экраны~~ ✔️
14* Написать Makefile и скрипт для автоматического развёртывания инстанса
15* Исправить баг с эмоджи, когда некоторые кастомные эмоции могут не отображаться
16* ~~Добавить аргумент &filename, который будет выдавать файл с нормально выглядещем именем~~ ✔️
17* ~~Улучшить систему кеширования: добавить рейтинг для удаления и копирование изображений в ОЗУ~~ ✔️
18# v1.4
19* Реализовать API
20* Реализовать темы
21* Перейти на арены в кеше
22* Реализовать многоязычный интерфейс
1# TODO
232
3## v1.3.x
4
5- [ ] Clean up the messy code
6- [ ] Add search filters
7- [x] Make a port for FreeBSD
8- [ ] **Finish parsing the description**
9- [x] Implement strips in daily arts
10- [x] Fix the page navigation bug
11- [x] Make proper error display
12- [x] Make the units in the config more understandable
13- [ ] Add an instance checker for availability
14- [x] Add viewing of a user's liked arts
15- [ ] Add the ability to embed templates into the binary `[P]`
16- [x] Implement thumbnails and optimize CSS for small screens
17- [ ] Write a Makefile and a script for automatic instance deployment
18- [ ] Fix the emoji bug where some custom emotes may not display
19- [x] Add a `&filename` argument that serves the file with a properly formatted name
20- [x] Improve the caching system: add a rating for eviction and copy images into RAM
21
22## v1.4
23
24- [ ] Implement an API
25- [ ] Implement themes
26- [ ] Switch to arenas in the cache
27- [ ] Implement a multilingual interface
instances.json +4 −70
@@ -1,82 +1,16 @@
11{
22 "instances": [
33 {
4 "title": "lost-skunk.cc",
5 "country": "Finland",
4 "title": "zerolabs.sh",
5 "country": "United States",
66 "urls": {
7 "ygg": "http://[201:f137:d1ac:920e:cd42:bfd1:1e83:da1d]/skunkyart",
8 "clearnet": "https://lost-skunk.cc/skunkyart"
9 },
10 "settings": {
11 "proxy": true,
12 "nsfw": false
13 }
14 },
15 {
16 "title": "orehus.club",
17 "country": "Germany",
18 "urls": {
19 "clearnet": "https://sa.orehus.club"
7 "tor": "http://mplqs2jxkjd5wxak3zjv55oxyadf4vwzx6ksgj4ztftndjl6elgsf4qd.onion",
8 "clearnet": "https://art.zerolabs.sh"
209 },
2110 "settings": {
2211 "proxy": false,
2312 "nsfw": true
2413 }
25 },
26 {
27 "title": "bloat.cat",
28 "country": "Germany",
29 "urls": {
30 "clearnet": "https://skunky.bloat.cat"
31 },
32 "settings": {
33 "proxy": true,
34 "nsfw": true
35 }
36 },
37 {
38 "title": "lumaeris.com",
39 "country": "Germany",
40 "urls": {
41 "clearnet": "https://skunkyart.lumaeris.com"
42 },
43 "settings": {
44 "proxy": true,
45 "nsfw": true
46 }
47 },
48 {
49 "title": "art.bloat.cat",
50 "country": "Germany",
51 "urls": {
52 "clearnet": "https://art.bloat.cat"
53 },
54 "settings": {
55 "proxy": true,
56 "nsfw": true
57 }
58 },
59 {
60 "title": "dc09.ru",
61 "country": "Russia",
62 "urls": {
63 "clearnet": "https://sa.dc09.ru"
64 },
65 "settings": {
66 "proxy": true,
67 "nsfw": false
68 }
69 },
70 {
71 "title": "opnxng.com",
72 "country": "Singapore",
73 "urls": {
74 "clearnet": "https://da.opnxng.com"
75 },
76 "settings": {
77 "proxy": true,
78 "nsfw": true
79 }
8014 }
8115 ]
8216}