[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-74762":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":16,"starSnapshotCount":16,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},74762,"fluxer","fluxerapp\u002Ffluxer","fluxerapp","A free and open source instant messaging and VoIP platform built for friends, groups, and communities. Self-hosting and more activity in this repository is coming very soon! See the README.","https:\u002F\u002Ffluxer.app",null,"TypeScript",8832,505,115,339,0,116,136,262,348,39.11,"GNU Affero General Public License v3.0",false,"refactor",[5,7],"2026-06-12 02:03:27","> [!CAUTION]\n> I'm repeating it again: Holy smokes, what a ride. Fluxer is taking off much earlier than I'd expected.\n>\n> I know it's hard to resist, but please wait a little longer before you dive deep into the current codebase or try to set up self-hosting. I'm aware the current stack isn't very lightweight. I'm working on making self-hosting as straightforward as possible and the development environment likewise.\n>\n> Self-hosted deployments won't include any traces of Plutonium, and nothing is paywalled. You can still configure your own tiers and limits in the admin panel.\n>\n> Thanks for bearing with me. Development on Fluxer is about to get much easier, and the project will be made sustainable through community contributions and bounties for development work. Stay tuned – there's not much left now.\n>\n> I thought I could take it a bit easier while shipping this stabilising update, but Discord's announcement in Februrary has changed things.\n>\n> There's just been a lot of work involved in keeping the production deployment up and running, handling trust & safety concerns, answering support emails, handling billing issues, and working on the refactor at the same time. I'm really excited to open up development and make it easier for others to contribute, and I can't wait to see what the community builds on Fluxer!\n>\n> As soon as the refactor is ready (not much longer now!), I'll enable PRs and interact more actively and push updates to this repository more frequently. The remaining parts of the refactor are currently being worked on and being tested live in production that has over 125,000 users (and we're only two full-time employees for now). After that, all work will happen openly in public.\n>\n> The team is also growing, though we remain small and can't offer very competitive salaries just yet – but if you want to work part-time or contract on projects, or you think you're a great fit for the roles we're hiring for (though not as actively across all roles at this time, but we'll keep you on file for when we are), check out the [careers page](https:\u002F\u002Ffluxer.app\u002Fcareers) :D\n>\n> ❤️\n\n> [!NOTE]\n> Learn about the developer behind Fluxer, the goals of the project, the tech stack, and what's coming next.\n>\n> [Read the launch blog post](https:\u002F\u002Fblog.fluxer.app\u002Fhow-i-built-fluxer-a-discord-like-chat-app\u002F) · [View full roadmap](https:\u002F\u002Fblog.fluxer.app\u002Froadmap-2026\u002F)\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\".\u002Fmedia\u002Flogo-graphic.png\" alt=\"Fluxer graphic logo\" width=\"400\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Ffluxer.app\u002Fdonate\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDonate-fluxer.app%2Fdonate-brightgreen\" alt=\"Donate\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdocs.fluxer.app\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocs-docs.fluxer.app-blue\" alt=\"Documentation\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\".\u002FLICENSE\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-AGPLv3-purple\" alt=\"AGPLv3 License\" \u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n\n# Fluxer\n\nFluxer is a **free and open source instant messaging and VoIP platform** for friends, groups, and communities. Self-host it and every feature is unlocked.\n\n## Quick links\n\n- [Self-hosting guide](https:\u002F\u002Fdocs.fluxer.app\u002Fself-hosting)\n- [Documentation](https:\u002F\u002Fdocs.fluxer.app)\n- [Donate to support development](https:\u002F\u002Ffluxer.app\u002Fdonate)\n- [Security](https:\u002F\u002Ffluxer.app\u002Fsecurity)\n\n## Features\n\n\u003Cimg src=\".\u002Fmedia\u002Fapp-showcase.png\" alt=\"Fluxer showcase\" align=\"right\" width=\"45%\" \u002F>\n\n**Real-time messaging** – typing indicators, reactions, and threaded replies.\n\n**Voice & video** – calls in communities and DMs with screen sharing, powered by LiveKit.\n\n**Rich media** – link previews, image and video attachments, and GIF search via KLIPY.\n\n**Communities and channels** – text and voice channels organised into categories with granular permissions.\n\n**Custom expressions** – upload custom emojis and stickers for your community.\n\n**Self-hostable** – run your own instance with full control of your data and no vendor lock-in.\n\n> [!NOTE]\n> Native mobile apps and federation are top priorities. If you'd like to support this work, [donations](https:\u002F\u002Ffluxer.app\u002Fdonate) are greatly appreciated. You can also share feedback by emailing developers@fluxer.app.\n\n## Self-hosting\n\n> [!NOTE]\n> New to Fluxer? Follow the [self-hosting guide](https:\u002F\u002Fdocs.fluxer.app\u002Fself-hosting) for step-by-step setup instructions.\n\nTBD\n\n### Deployment helpers\n\n- [`livekitctl`](.\u002Ffluxer_devops\u002Flivekitctl\u002FREADME.md) – bootstrap a LiveKit SFU for voice and video\n\n## Development\n\n### Tech stack\n\n- [TypeScript](https:\u002F\u002Fwww.typescriptlang.org\u002F) and [Node.js](https:\u002F\u002Fnodejs.org\u002F) for backend services\n- [Hono](https:\u002F\u002Fhono.dev\u002F) as the web framework for all HTTP services\n- [Erlang\u002FOTP](https:\u002F\u002Fwww.erlang.org\u002F) for the real-time WebSocket gateway (message routing and presence)\n- [React](https:\u002F\u002Freact.dev\u002F) and [Electron](https:\u002F\u002Fwww.electronjs.org\u002F) for the desktop and web client\n- [Rust](https:\u002F\u002Fwww.rust-lang.org\u002F) compiled to WebAssembly for performance-critical client code\n- [SQLite](https:\u002F\u002Fwww.sqlite.org\u002F) for storage by default, with optional [Cassandra](https:\u002F\u002Fcassandra.apache.org\u002F) for distributed deployments\n- [Meilisearch](https:\u002F\u002Fwww.meilisearch.com\u002F) for full-text search and indexing\n- [Valkey](https:\u002F\u002Fvalkey.io\u002F) (Redis-compatible) for caching, rate limiting, and ephemeral coordination\n- [LiveKit](https:\u002F\u002Flivekit.io\u002F) for voice and video infrastructure\n\n### Devenv development environment\n\nFluxer supports development through **devenv** only. It provides a reproducible Nix environment and a single, declarative process manager for the dev stack.\n\n1. Install Nix and devenv using the [devenv getting started guide](https:\u002F\u002Fdevenv.sh\u002Fgetting-started\u002F).\n2. Enter the environment:\n\n```bash\ndevenv shell\n```\n\nIf you use direnv, the repo includes a `.envrc` that loads devenv automatically – run `direnv allow` once.\n\n### Getting started\n\nStart all services and the development server with:\n\n```bash\ndevenv up\n```\n\nOpen the instance in a browser at your dev server URL (e.g. `http:\u002F\u002Flocalhost:48763\u002F`).\n\nEmails sent during development (verification codes, notifications, etc.) are captured by a local Mailpit instance. Access the inbox at your dev server URL + `\u002Fmailpit\u002F` (e.g. `http:\u002F\u002Flocalhost:48763\u002Fmailpit\u002F`).\n\n### Voice on a remote VM\n\nIf you develop on a remote VM behind Cloudflare Tunnels (or a similar HTTP-only tunnel), voice and video won't work out of the box. Cloudflare Tunnels only proxy HTTP\u002FWebSocket traffic, so WebRTC media transport needs a direct path to the server. Open these ports on the VM's firewall:\n\n| Port        | Protocol | Purpose          |\n| ----------- | -------- | ---------------- |\n| 3478        | UDP      | TURN\u002FSTUN        |\n| 7881        | TCP      | ICE-TCP fallback |\n| 50000-50100 | UDP      | RTP\u002FRTCP media   |\n\nThe bootstrap script configures LiveKit automatically based on `domain.base_domain` in your `config.json`. When set to a non-localhost domain, it enables external IP discovery so clients can connect directly for media while signaling continues through the tunnel.\n\n### Devcontainer (experimental)\n\nThere is experimental support for developing in a **VS Code Dev Container** \u002F GitHub Codespace without Nix. The `.devcontainer\u002F` directory provides a Docker Compose setup with all required tooling and backing services.\n\n```bash\n# Inside the dev container, start all processes:\nprocess-compose -f .devcontainer\u002Fprocess-compose.yml up\n```\n\nOpen the app at `http:\u002F\u002Flocalhost:48763` and the dev email inbox at `http:\u002F\u002Flocalhost:48763\u002Fmailpit\u002F`. Predefined VS Code debugging targets are available in `.vscode\u002Flaunch.json`.\n\n> [!WARNING]\n> Bluesky OAuth is disabled in the devcontainer because it requires HTTPS. All other features work normally.\n\n### Documentation\n\nTo develop the documentation site with live preview:\n\n```bash\npnpm dev:docs\n```\n\n## Contributing\n\nFluxer is **free and open source software** licensed under **AGPLv3**. Contributions are welcome.\n\nSee [`CONTRIBUTING.md`](.\u002FCONTRIBUTING.md) for development processes and how to propose changes, and [`CODE_OF_CONDUCT.md`](.\u002FCODE_OF_CONDUCT.md) for community guidelines.\n\n## Security\n\nReport vulnerabilities at [fluxer.app\u002Fsecurity](https:\u002F\u002Ffluxer.app\u002Fsecurity). Do not use public issues for security reports.\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>License\u003C\u002Fstrong>\u003C\u002Fsummary>\n\u003Cbr>\n\nCopyright (c) 2026 Fluxer Contributors\n\nLicensed under the [GNU Affero General Public License v3](.\u002FLICENSE):\n\n```text\nCopyright (c) 2026 Fluxer Contributors\n\nThis program is free software: you can redistribute it and\u002For modify it under\nthe terms of the GNU Affero General Public License as published by the Free\nSoftware Foundation, either version 3 of the License, or (at your option) any\nlater version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT\nANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\nFOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\ndetails.\n\nYou should have received a copy of the GNU Affero General Public License along\nwith this program. If not, see https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002F\n```\n\nSee [`LICENSING.md`](.\u002FLICENSING.md) for details on commercial licensing and the CLA.\n\n\u003C\u002Fdetails>\n","Fluxer 是一个免费且开源的即时通讯和VoIP平台，专为朋友、群组和社区设计。其核心功能包括即时消息传递和语音通话，并支持自托管部署。技术上采用TypeScript编写，确保了代码的现代性和可维护性。适合需要高度定制化和隐私保护的场景使用，如企业内部沟通或特定兴趣小组。项目正处于快速发展阶段，未来将更加注重社区贡献和支持。",2,"2026-06-11 03:50:42","high_star"]