A desktop version of the Tella app made to share files offline via p2p. This application enables secure, encrypted file transfers between devices without relying on external servers, prioritizing privacy and security for sensitive data exchange.
- Go 1.24 or later
- Node.js 20.11.1 or later
- Wails CLI (v2.10.1+)
To install Wails:
go install github.com/wailsapp/wails/v2/cmd/wails@latest
- Clone the repository
- Install frontend dependencies:
cd frontend
npm install
- Run in development mode:
wails dev
For Linux systems, you may need to use:
wails dev -tags webkit2_41
This will start both the backend server and frontend development server with hot reload.
To build a production version:
wails build
The built application will be in the build/bin
directory.
We can leverage the Zig toolchain to easily cross-compile golang projects with CGO dependencies, as demonstrated in article 1, article 2 and combine that with Wails manual builds.
- Install the Zig compiler
- Run the script
build-for-windows.sh
The Windows executable will be saved as tella.exe
.
build-for-windows.sh
#!/bin/bash
CGO_ENABLED=1 GOOS=windows GOARCH=amd64 CC="zig cc -target x86_64-windows" CXX="zig cc -target x86_64-windows" go build -tags desktop,production -ldflags "-w -s -H windowsgui" -o tella.exe
The application implements the Tella P2P protocol with the following endpoints:
- Default Port: 53317 (user configurable if unavailable)
POST /api/v1/ping
- Initial handshake for manual connectionsPOST /api/v1/register
- Device registration with PIN authenticationPOST /api/v1/prepare-upload
- Prepare file transfer sessionPUT /api/v1/upload
- File upload with binary data
The application is configured for code signing on macOS for distribution outside the App Store:
- Uses Developer ID Application certificate for notarization
- Includes hardened runtime options for security
- Requires valid Apple Developer account for signing
To build a signed version for macOS:
- Update the identity in wails.json with your Developer ID
- Ensure you have a valid Developer ID Application certificate
- Run wails build - the app will be automatically signed during build
- Mobile: Compatible with Tella iOS and Android apps using the same P2P protocol
- Network: Requires devices to be on the same local network (Wi-Fi)