Šepot — end-to-end encrypted messenger

Initial public release. Anonymous on-device identity (no phone number,
e-mail, or password), Signal-protocol cryptography (X3DH + PQXDH, Double
Ratchet, sealed sender) via libsignal, a metadata-minimizing relay,
group chats, disappearing messages, encrypted local storage, optional
Tor transport, and a UI localized into Czech, English, German, Russian,
and Italian.

Monorepo: Flutter client (app/), Rust relay + wire types (rust/),
protobuf definitions (proto/), self-host deploy (deploy/).

Licensed under AGPL-3.0 with an app-store distribution exception (§7).
This commit is contained in:
Julius Joska
2026-07-11 17:06:39 +02:00
commit 8081d98c67
309 changed files with 44102 additions and 0 deletions
+60
View File
@@ -0,0 +1,60 @@
import 'package:flutter/material.dart';
import 'package:sepot/core/l10n/l10n.dart';
import 'package:sepot/core/theme/app_theme.dart';
/// Logo Šepot — brand mark „Š s tečkami" (nokturno-ikona-B2).
///
/// Používá STEJNÝ obrázek jako launcher ikona
/// (`assets/icon/icon-1024.png`), aby logo na ploše, na splash i uvnitř
/// appky bylo jednotné.
class SepotLogo extends StatelessWidget {
final double size;
final bool showText;
const SepotLogo({
super.key,
this.size = 80,
this.showText = true,
});
@override
Widget build(BuildContext context) {
return Column(
mainAxisSize: MainAxisSize.min,
children: [
ClipRRect(
borderRadius: BorderRadius.circular(size * 0.24),
child: Image.asset(
'assets/icon/icon-1024.png',
width: size,
height: size,
fit: BoxFit.cover,
),
),
if (showText) ...[
const SizedBox(height: 16),
Text(
context.l10n.commonAppName,
style: TextStyle(
fontFamily: kFontSans,
fontSize: size * 0.35,
fontWeight: FontWeight.w700,
color: SepotColors.textPrimary,
letterSpacing: -0.5,
),
),
const SizedBox(height: 4),
Text(
context.l10n.commonAppTagline,
style: TextStyle(
fontFamily: kFontSans,
fontSize: size * 0.15,
fontWeight: FontWeight.w400,
color: SepotColors.textSecondary,
),
),
],
],
);
}
}