Skip to content

Commit a3ced56

Browse files
authored
Update README.md
1 parent 4ff4b16 commit a3ced56

File tree

1 file changed

+50
-94
lines changed

1 file changed

+50
-94
lines changed

README.md

Lines changed: 50 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,123 +1,79 @@
1-
Adv Keeper — «еле-еле, но работает»
1+
# ADV Keeper (CLI/TUI)
22

3-
Маленький демо-проект: gRPC-сервер + TUI-клиент (Go) для регистрации/логина и загрузки/скачивания файлов.
4-
План был «сделать за неделю», получилось «сделали — и это уже праздник»
3+
Лёгкий офлайн-клиент для загрузки и скачивания файлов через gRPC с удобным TUI-интерфейсом на Bubble Tea.
4+
**Ничего ставить не нужно, кроме `make` и вашей ОС.**
55

6-
Что умеет
6+
## Быстрый старт
77

8-
Регистрация и логин (пароли в БД, клиент хранит только сессию).
8+
```bash
9+
# 1) Запуск сервера
10+
make server # или make run-server / make run — смотрите цели в Makefile
11+
```
12+
# 2) В другом терминале — запуск TUI-клиента
13+
make tui # или make run-tui / make client — по Makefile
14+
Если в вашем Makefile другие имена целей — используйте их. Смысл простой: одна цель стартует сервер, другая — клиент.
915

10-
JWT-авторизация на сервере.
16+
Учётная запись (демо)
17+
Войти можно тестовым аккаунтом:
1118

12-
Загрузка/скачивание файлов с прогрессом.
19+
makefile
20+
Copy code
21+
Логин: admin
22+
Пароль: admin
23+
Как пользоваться
24+
Загрузка файла (Upload)
25+
В главном меню выберите Upload (стрелки ↑/↓, Enter).
1326

14-
Кроссплатформенный TUI (Linux / macOS / Windows).
27+
Выберите файл через встроенный файловый диалог.
1528

16-
Автомиграции БД при старте сервера.
29+
Во время загрузки увидите:
1730

18-
systemd-юнит для деплоя (чтобы «само вставало и работало… ну почти»).
31+
прогресс-бар, проценты,
1932

20-
Быстрый старт (клиент)
33+
скорость передачи и ETA,
2134

22-
Клиенту нужна одна переменная окружения: AK_GRPC_ADDR — адрес gRPC сервера, например 89.207.255.214:8080.
35+
подсказку ESC — отмена.
2336

24-
Windows (PowerShell)
25-
$env:AK_GRPC_ADDR = "89.207.255.214:8080"
26-
.\tui_windows_amd64.exe
37+
По завершении вернёт в список файлов (FileList).
2738

39+
Скачивание файла (Download)
40+
Откройте FileList.
2841

29-
Сделать навсегда:
42+
Стрелками выберите нужный файл, Enter → Download.
3043

31-
[Environment]::SetEnvironmentVariable(
32-
"AK_GRPC_ADDR","89.207.255.214:8080",[EnvironmentVariableTarget]::User
33-
)
44+
Прогресс отображается так же, как при upload.
3445

35-
macOS / Linux
36-
export AK_GRPC_ADDR=89.207.255.214:8080
37-
./tui # или ./tui_darwin_arm64, ./tui_linux_amd64
46+
Готовый файл сохраняется рядом с приложением (в текущей папке, где запущен клиент/бинарь).
3847

48+
Если не уверены, где окажется файл — посмотрите текущую директорию (pwd на macOS/Linux или cd без аргументов в Windows).
3949

40-
Опционально: куда сохранять скачанные файлы
50+
Клавиши
51+
↑ / ↓ / j / k — навигация по меню/таблицам
4152

42-
export AK_FILES_DIR="$HOME/Downloads/adv-keeper"
53+
Enter — выбрать
4354

55+
ESC — назад/отмена/снять фокус
4456

45-
Навигация в TUI: ↑/↓ и Enter. После логина сессия лежит в:
57+
Ctrl+C — выход
4658

47-
Linux/macOS: ~/.config/adv-keeper/session.json
59+
Во время загрузки/скачивания:
4860

49-
Windows: %AppData%\adv-keeper\session.json
61+
ESC — отменить операцию
5062

51-
Сборка клиента
63+
Что внутри (коротко)
64+
gRPC сервер и TUI-клиент.
5265

53-
Требуется Go 1.22+.
66+
Передача файлов чанками, с расчётом прогресса/скорости/ETA.
5467

55-
make build # текущая платформа -> ./dist/tui
56-
make linux # linux_amd64
57-
make mac # darwin_arm64 (Apple Silicon)
58-
make windows # windows_amd64.exe
68+
Сессия сохраняется и очищается при Logout.
5969

60-
Сервер (шпаргалка владельцу)
61-
.env
62-
# /etc/adv-keeper.env
63-
AK_GRPC_ADDR=0.0.0.0:8080
64-
DB_DSN=postgres://admin:admin@127.0.0.1:5432/adv?sslmode=disable
65-
JWT_SECRET=super-secret-not-for-git
66-
FILES_DIR=/opt/adv-keeper/data
67-
MIGRATIONS_PATH=file:///opt/adv-keeper/migrations
70+
Демо-видео
71+
В качестве примера можно взять видео с Дуэйном Джонсоном (The Rock):
72+
https://www.youtube.com/watch?v=skeQ9C7JuG4
6873

69-
systemd unit
70-
# /etc/systemd/system/adv-keeper.service
71-
[Unit]
72-
Description=Adv Keeper Server
73-
After=network.target
74-
Requires=postgresql.service
74+
Траблшутинг
75+
“Висит загрузка” — убедитесь, что сервер запущен до старта клиента.
7576

76-
[Service]
77-
User=ak
78-
Group=ak
79-
EnvironmentFile=/etc/adv-keeper.env
80-
WorkingDirectory=/opt/adv-keeper
81-
ExecStart=/opt/adv-keeper/current
82-
Restart=always
83-
RestartSec=2
84-
LimitNOFILE=65535
77+
“Не логинится” — проверьте демо-логин/пароль admin/admin.
8578

86-
[Install]
87-
WantedBy=multi-user.target
88-
89-
90-
Развёртывание (у нас через GitHub Actions) кладёт бинарь в /opt/adv-keeper/releases/<server-TS>, двигает current и рестартит сервис.
91-
Миграции берутся из MIGRATIONS_PATH.
92-
93-
Проверки:
94-
95-
sudo systemctl status adv-keeper --no-pager
96-
journalctl -u adv-keeper -n 100 --no-pager
97-
ss -ltnp 'sport = :8080' # слушает ли порт
98-
99-
100-
Открыть порт наружу (UFW):
101-
102-
sudo ufw allow 8080/tcp
103-
sudo ufw status
104-
105-
FAQ
106-
107-
connection refused
108-
На сервере AK_GRPC_ADDR=0.0.0.0:8080, порт открыт, сервис запущен.
109-
110-
Дисклеймер безопасности
111-
112-
Это демо. Порт 8080 может быть открыт, JWT секрет — в переменных окружения, логика — нарочно упрощена.
113-
Не храните чувствительные данные, только тестовые!!!
114-
115-
Статус
116-
117-
«Работает у меня на облаке»
118-
119-
⚠️ «Улучшить можно всё»
120-
121-
🥳 «Но оно живёт, и это главное»
122-
123-
Если что-то не взлетело — заводите issue. Если взлетело — тоже заводите, нам нужна моральная поддержка. 🙌
79+
“Не вижу скачанного файла” — проверьте текущую директорию клиента; файл сохраняется рядом с бинарём.

0 commit comments

Comments
 (0)