Приватный семейный мессенджер — закрытое пространство для общения, фото, видео и совместной жизни.
Lentik — это self-hosted платформа для одной или нескольких семей: безопасное место, где можно переписываться в реальном времени, делиться фото и видео, вести общий календарь, бюджет и даже строить семейное древо. Всё под вашим контролем — данные живут на вашем сервере.
Веб-приложение (Next.js) и мобильное приложение (React Native / Expo) работают с одним backend на FastAPI.
- 💬 Чаты в реальном времени — вложения, голосовые, реакции, ответы, поиск, статусы прочтения
- 📢 Каналы с постами
- 🖼️ Галерея фото и видео + файловое хранилище
- 📅 Календарь событий с напоминаниями
- ⏰ Напоминания — личные и семейные
- 📝 Заметки
- 💰 Бюджет и учёт расходов с балансами участников
- 🌳 Семейное древо с произвольным расположением узлов
- 🛡️ Роли и права доступа с индивидуальными оверрайдами
- 📜 Журнал аудита действий
- 👥 Управление участниками — инвайты, исключение, передача владения
- 🏠 Несколько семей для одного пользователя
- 🔑 Авторизация по логину + PIN, presence-статусы онлайн
- 📱 Мобильное приложение на React Native (Expo)
| Слой | Технологии |
|---|---|
| Frontend | Next.js 15, TypeScript, React |
| Mobile | React Native 0.74, Expo 51, React Navigation |
| Backend | FastAPI, Python, WebSocket |
| База данных | PostgreSQL 16 |
| Realtime | WebSocket + Redis pub/sub (fan-out, кросс-инстанс) |
| Инфра | Docker Compose, reverse-proxy |
Lentik/
├── services/
│ ├── api/ # FastAPI backend
│ └── web/ # Next.js frontend
├── mobile/ # React Native (Expo) приложение
├── infra/
│ └── docker-compose.yml
├── DEPLOY.md # Руководство по развёртыванию
└── README.md
cp infra/.env.example infra/.env
# Отредактируйте infra/.env
cd infra
docker compose build
docker compose upПриложение доступно на http://localhost:3000
Запустите базу данных:
docker run -d \
-e POSTGRES_DB=lentik \
-e POSTGRES_USER=lentik \
-e POSTGRES_PASSWORD=lentik \
-p 5432:5432 postgres:16-alpineЗатем запустите backend и frontend по отдельности — инструкции в
services/api/README.md и
services/web/README.md.
cd mobile
npm install
npm start # запуск Expo dev-сервера
npm run android # или npm run iosПодробнее — в mobile/README.md.
Скопируйте .env.example в .env и заполните:
cp infra/.env.example infra/.env| Переменная | Описание | Пример |
|---|---|---|
POSTGRES_PASSWORD |
Пароль PostgreSQL | supersecret |
JWT_SECRET |
Секрет для JWT токенов | random-64-char-string |
UPLOAD_DIR |
Папка для загрузок | /uploads |
DEVELOPER_USERNAME |
Логин аккаунта разработчика (god-mode + /admin) |
admin |
BACKUP_ENCRYPTION_KEY |
Ключ AES-256 для шифрования бэкапов | openssl rand -base64 48 |
🔐 Бэкапы. Сервис
backupв Compose делает зашифрованные (AES-256) снимки БД и загрузок по расписанию (BACKUP_INTERVAL_HOURS, ротацияBACKUP_RETENTION_*, опц. offsiteBACKUP_S3_*). БезBACKUP_ENCRYPTION_KEYсервис не стартует. Восстановление и нюансы приватности — вDEPLOY.md.
Полное руководство по развёртыванию в продакшене (reverse-proxy, security headers,
WebSocket upgrade, масштабирование через Redis) — в DEPLOY.md.