A modern, lightweight REST API client built with Kotlin and Compose Multiplatform.
- HTTP Methods - Support for GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
- Request Builder - Headers, query parameters, and body editor
- Body Types - JSON, form data, multipart, raw text, binary
- Authentication - Basic Auth, Bearer Token, API Key
- Collections - Organize requests into collections and folders
- Environments - Manage variables across different environments
- Variable Substitution - Use
{{variable}}syntax in URLs, headers, and body - History - Track and replay previous requests
- Response Viewer - Formatted JSON, headers, cookies, and timing info
- Dark Theme - Modern dark UI design
Postest showing an imported OpenAI API collection with request builder and JSON body editor
brew tap kidoz/postest
brew install --cask postestDownload the latest Postest-<version>.dmg from GitHub Releases and open it.
cd packaging/archlinux
cp PKGBUILD.local PKGBUILD
makepkg -si./gradlew packageDeb
sudo dpkg -i build/compose/binaries/main/deb/postest_1.0.0_amd64.deb./gradlew packageMsi- JDK 21 or higher
- Gradle (wrapper included)
# Clone the repository
git clone https://github.com/kidoz/postest.git
cd postest
# Build the project
./gradlew build
# Run the application
./gradlew run
# Create distributable
./gradlew createDistributable./gradlew ktlintCheck detekt # Lint and static analysis
./gradlew ktlintFormat # Auto-format Kotlin sources- Select HTTP method (GET, POST, etc.)
- Enter the URL
- Add headers, query params, or body as needed
- Click Send
Define variables in an environment and reference them with {{variable}} syntax:
URL: {{baseUrl}}/api/users
Header: Authorization: Bearer {{token}}
- Create collections to organize related requests
- Use folders for hierarchical organization
- Apply collection-level authentication
- Language - Kotlin
- UI Framework - Compose Multiplatform
- HTTP Client - Ktor
- Database - SQLDelight (SQLite)
- DI - Koin
- Serialization - Kotlinx Serialization
- Logging - kotlin-logging + Logback
src/main/kotlin/su/kidoz/postest/
├── data/
│ ├── db/ # SQLDelight database
│ ├── http/ # HTTP client and request executor
│ └── repository/ # Data repositories
├── di/ # Koin dependency injection
├── domain/
│ ├── model/ # Domain models
│ └── usecase/ # Business logic
├── ui/
│ ├── components/ # Reusable UI components
│ ├── screens/ # Application screens
│ └── theme/ # Colors, typography, theme
├── util/ # Utilities
├── viewmodel/ # ViewModel (MVI)
├── App.kt # Main composable
└── Main.kt # Entry point
Application data is stored in ~/.postest/:
~/.postest/
├── postest.db # SQLite database
└── logs/
├── postest.log # Application logs
└── error.log # Error logs only
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Ktor - Asynchronous HTTP client
- Compose Multiplatform - Declarative UI framework
- SQLDelight - Type-safe SQL
- Koin - Dependency injection
