# Roster A modern HTTP client for GNOME, built with GTK 4 and libadwaita. ## Features - Send HTTP requests (GET, POST, PUT, DELETE) - Configure custom headers and request bodies - View response headers and bodies with syntax highlighting - Track request history with persistence - Organize requests into projects - Environment variables with secure credential storage - JavaScript preprocessing and postprocessing scripts - Export requests (cURL and more) - **Git-based collaboration** — projects are stored as plain JSON files, one per request, making it easy to share and version-control your API collections with a team - GNOME-native UI ## Screenshots ### Main Interface ![Main Interface](screenshots/main.png) ### Request History ![Request History](screenshots/history.png) ### Environment Variables ![Environment Variables](screenshots/variables.png) ## Quick Start ### Installation **Build from source:** ```bash git clone https://git.bugsy.cz/beval/roster.git cd roster meson setup builddir meson compile -C builddir sudo meson install -C builddir ``` **Flatpak:** ```bash flatpak-builder --user --install --force-clean build-dir cz.bugsy.roster.json flatpak run cz.bugsy.roster ``` See the [Installation Guide](https://git.bugsy.cz/beval/roster/wiki/Installation) for detailed instructions. ### Usage Launch Roster from your application menu or run `roster` from the command line. See the [Getting Started Guide](https://git.bugsy.cz/beval/roster/wiki/Getting-Started) for a walkthrough. Complete documentation is available in the [Wiki](https://git.bugsy.cz/beval/roster/wiki): ## Key Features ### Multi-Environment Support Manage multiple environments (development, staging, production) with different variable values. Switch environments with one click. [Learn more about Variables](https://git.bugsy.cz/beval/roster/wiki/Variables) ### Secure Credential Storage Store API keys, passwords, and tokens securely in GNOME Keyring with one-click encryption. Regular variables are stored in JSON, while sensitive variables are encrypted. [Learn more about Sensitive Variables](https://git.bugsy.cz/beval/roster/wiki/Sensitive-Variables) ### Git-Based Collaboration Every project and request is stored as a plain JSON file under `~/.local/share/cz.bugsy.roster/projects/`. This makes it straightforward to share your API collections with a team: ```bash # Put your Roster data directory under version control cd ~/.local/share/cz.bugsy.roster/projects git init git remote add origin git@example.com:your-team/api-collections.git git add . git commit -m "Add API collections" git push ``` Team members can then clone the repository into their own data directory and get the full set of projects and requests instantly. Changes to requests show up as clean, reviewable diffs — each request is a separate file, so there are no merge conflicts from unrelated edits. ### JavaScript Automation Use preprocessing and postprocessing scripts to: - Extract authentication tokens from responses - Add dynamic headers (timestamps, signatures) - Chain requests together - Validate responses [Learn more about Scripts](https://git.bugsy.cz/bavel/roster/wiki/Scripts) ## Dependencies ### Runtime - GTK 4 - libadwaita 1 - Python 3 - libsoup3 (provided by GNOME Platform) - libsecret (provided by GNOME Platform) - GJS (GNOME JavaScript) ### Build - Meson (>= 1.0.0) - Ninja - pkg-config - gettext See the [Installation Guide](https://git.bugsy.cz/beval/roster/wiki/Installation) for platform-specific dependencies. ## Platform Roster is built specifically for the GNOME desktop using native technologies: - **GTK 4** - Modern UI toolkit - **libadwaita** - GNOME design patterns - **libsoup3** - HTTP networking - **libsecret** - Secure credential storage - **GJS** - JavaScript runtime for scripts ## License GPL-3.0-or-later ## Support - **Issues**: [git.bugsy.cz/beval/roster/issues](https://git.bugsy.cz/beval/roster/issues) - **Wiki**: [git.bugsy.cz/beval/roster/wiki](https://git.bugsy.cz/bavel/roster/wiki) - **Source**: [git.bugsy.cz/beval/roster](https://git.bugsy.cz/beval/roster) ## Contributing Contributions are welcome! Please open an issue or pull request.