mirror of
https://github.com/J3vb/OwnCord.git
synced 2026-09-03 03:50:00 +03:00
4bdc83a3680a8e8d1531aa667c119e730ea8dd7f
Server fixes: - Move ATTACH_FILES permission check before CreateMessage to prevent orphaned messages on permission denial - Fix hardcoded /api/files/ URL to /api/v1/files/ per spec - Add error logging for GetAttachmentsByMessageIDs failure - Set 1MB WebSocket read limit to match client-side limit - Extract requireChannelPerm helper, replacing 8 repeated patterns Client fixes: - Wire onUnauthorized callback to clear auth on 401 responses - Store auth token in authStore before WS connect - Reset WS state to disconnected when Tauri APIs unavailable - Add connectivity guard and 200ms send debounce on message send - Add toast container to MainPage with error feedback on 5 API failures - Clear voice currentChannelId on server-driven voice_leave for current user - Apply stored theme/font/compact preferences at app startup - Fix infinite scroll throttle to use store subscription instead of fixed timer Tests: - Add TestChatSend_AttachmentsDeniedNoMessageCreated - Add attachments table to handler test schema
OwnCord
Self-hosted Windows chat platform with voice, video, and an admin panel.
Features
- Real-time text chat with threads and reactions
- Voice and video channels (WebRTC)
- Role-based permissions with custom roles
- File sharing with inline previews
- Full-text message search
- Web-based admin panel
- Invite-only registration
- TLS encryption (self-signed or custom cert)
Quick Start
- Download the latest release from GitHub Releases
- Run
chatserver.exe-- generatesconfig.yamlon first run - Open
https://localhost:8443/adminto access the admin panel - Generate an invite code, share it with friends
- Friends download the client installer and connect using your server address
Building from Source
Server
cd Server
go build -o chatserver.exe -ldflags "-s -w -X main.version=1.0.0" .
Client (Tauri v2)
cd Client/tauri-client
npm install
npm run tauri build
The installer is output to
Client/tauri-client/src-tauri/target/release/bundle/nsis/.
Architecture
OwnCord consists of a Go server and a Tauri v2 desktop client. The server handles all business logic, storage, and real-time communication. Clients connect over WebSocket for chat events, REST for history and uploads, and WebRTC for voice/video.
+---------------------+ +---------------------+
| OwnCord Client | | OwnCord Server |
| (Tauri v2) | | (Go) |
| | | |
| +---------------+ | WSS | +---------------+ |
| | Chat UI |--+------->| | WebSocket Hub| |
| +---------------+ | | +---------------+ |
| +---------------+ | HTTPS | +---------------+ |
| | REST Client |--+------->| | REST API | |
| +---------------+ | | +---------------+ |
| +---------------+ | WebRTC | +---------------+ |
| | Voice/Video |--+------->| | TURN/STUN | |
| +---------------+ | | +---------------+ |
+---------------------+ | +---------------+ |
| | SQLite DB | |
| +---------------+ |
+---------------------+
Documentation
- Quick Start Guide
- Port Forwarding Guide
- Tailscale Guide
- Client Architecture
- Migration Plan
- Testing Strategy
- Contributing
- Security
License
MIT
Languages
TypeScript
48.7%
Go
44%
JavaScript
2.2%
Rust
2.1%
CSS
1.4%
Other
1.5%