# 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)
- 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)

### 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.
