Contributing

Contributions are welcome! Samvad is open source and built with the community in mind. Whether you’re fixing a typo, reporting a bug, or building a new feature — all contributions are appreciated.


Ways to Contribute

  • 🐛 Bug Reports — Found something broken? Open an issue
  • 💡 Feature Requests — Have an idea? Share it in GitHub Discussions
  • 📝 Documentation — Improve or expand these docs
  • 🔧 Code — Fix a bug or implement a feature

Development Setup

Prerequisites

Tool Version
Node.js 18+
Bun Latest
Rust 1.70+
Xcode CLT (macOS) Latest

Setup

# Clone the repo
git clone https://github.com/iamdhakrey/samvad.git
cd samvad

# Install JS dependencies
bun install

# Start in development mode
bun run tauri dev

The app opens automatically after the Vite dev server starts.


Project Structure

samvad/
├── src/                   # React frontend
│   ├── components/        # UI components
│   │   ├── RequestEditor/ # URL bar, params, headers, auth, body
│   │   ├── ResponsePanel/ # Status, headers, body viewer
│   │   ├── Sidebar/       # Collections, history
│   │   └── WebSocketPanel/# WS connection UI
│   ├── hooks/             # Custom React hooks
│   ├── services/          # Tauri invoke wrappers
│   ├── store/             # Zustand state management
│   └── types.ts           # Shared TypeScript types
├── src-tauri/             # Rust backend
│   ├── src/
│   │   ├── lib.rs         # Tauri app setup
│   │   └── ...            # Command handlers
│   └── Cargo.toml         # Rust dependencies
└── www/                   # This docs site (Astro)

Contribution Guidelines

Branching

# Create a feature branch
git checkout -b feature/my-new-feature

# Or a bugfix branch
git checkout -b fix/issue-123

Commit Style

Use conventional commits:

feat: add timeout configuration to settings panel
fix: resolve crash when sending request with empty URL
docs: add keyboard shortcuts reference
chore: bump reqwest to 0.13.4

Pull Request Process

  1. Fork the repository
  2. Create your feature branch from main
  3. Make your changes with tests/docs as appropriate
  4. Ensure the app builds successfully:
    bun run tauri build
  5. Submit a PR with a clear description of the changes

Frontend Tech Notes

  • State management: Use Zustand stores in src/store/
  • Tauri calls: All Rust commands go through invoke() — wrap them in src/services/
  • Styling: Tailwind CSS 4 utility classes
  • Types: All shared types live in src/types.ts — extend it for new data shapes

Backend Tech Notes

  • Rust edition: 2021
  • HTTP client: reqwest 0.13 with Tokio async
  • Serialization: serde + serde_json
  • Error handling: thiserror for typed errors

Reporting Bugs

Please include:

  • Samvad version
  • OS and version
  • Steps to reproduce
  • Expected vs actual behavior
  • Logs (if relevant — check the Tauri dev console)

Open a bug report →


Code of Conduct

Be respectful and constructive. We’re all here to build something great together.


Author

Hrithik Dhakrey (@iamdhakrey)