{"id":28361595,"url":"https://github.com/lykosai/litepost","last_synced_at":"2025-10-29T03:02:49.438Z","repository":{"id":275137824,"uuid":"920454419","full_name":"LykosAI/LitePost","owner":"LykosAI","description":"A lightweight, cross-platform API testing application. Streamline your API development 🦀","archived":false,"fork":false,"pushed_at":"2025-02-10T17:19:13.000Z","size":5228,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-14T20:57:44.910Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LykosAI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-22T07:15:21.000Z","updated_at":"2025-02-10T17:19:14.000Z","dependencies_parsed_at":"2025-01-31T13:02:37.628Z","dependency_job_id":"bd8de4ee-0330-4f27-990e-3ff2c0d30c8d","html_url":"https://github.com/LykosAI/LitePost","commit_stats":null,"previous_names":["lykosai/litepost"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/LykosAI/LitePost","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LykosAI%2FLitePost","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LykosAI%2FLitePost/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LykosAI%2FLitePost/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LykosAI%2FLitePost/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LykosAI","download_url":"https://codeload.github.com/LykosAI/LitePost/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LykosAI%2FLitePost/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260944673,"owners_count":23086856,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-28T13:40:56.307Z","updated_at":"2025-10-29T03:02:44.402Z","avatar_url":"https://github.com/LykosAI.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LitePost\n\nA lightweight, cross-platform API testing application built with Tauri, React, and TypeScript.\n\n![image](https://github.com/user-attachments/assets/f0dc8163-c10c-4d71-9b19-99d92a448a1b)\n\n\n\u003cdiv align=\"center\"\u003e\n\n### 📥 Download LitePost\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\" colspan=\"3\"\u003e\n\u003ch1\u003e🪟\u003c/h1\u003e\n\u003cb\u003eWindows\u003c/b\u003e\u003cbr/\u003e\n\u003csub\u003e64-bit Installer\u003c/sub\u003e\u003cbr/\u003e\n\u003ca href=\"https://github.com/LykosAI/LitePost/releases/latest/download/litepost_x64-setup.exe\"\u003e\n⬇️ Download\n\u003c/a\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\n\u003ch1\u003e🍎\u003c/h1\u003e\n\u003cb\u003emacOS\u003c/b\u003e \u003csup\u003e\u003ccode\u003ebeta\u003c/code\u003e\u003c/sup\u003e\u003cbr/\u003e\n\u003csub\u003eApple Silicon\u003c/sub\u003e\u003cbr/\u003e\n\u003ca href=\"https://github.com/LykosAI/LitePost/releases/latest/download/litepost_aarch64.app.tar.gz\"\u003e\n⬇️ Download\n\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003ch1\u003e🍎\u003c/h1\u003e\n\u003cb\u003emacOS\u003c/b\u003e \u003csup\u003e\u003ccode\u003ebeta\u003c/code\u003e\u003c/sup\u003e\u003cbr/\u003e\n\u003csub\u003eIntel Processor\u003c/sub\u003e\u003cbr/\u003e\n\u003ca href=\"https://github.com/LykosAI/LitePost/releases/latest/download/litepost_x64.app.tar.gz\"\u003e\n⬇️ Download\n\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003ch1\u003e🐧\u003c/h1\u003e\n\u003cb\u003eLinux\u003c/b\u003e \u003csup\u003e\u003ccode\u003ebeta\u003c/code\u003e\u003c/sup\u003e\u003cbr/\u003e\n\u003csub\u003eAppImage (64-bit)\u003c/sub\u003e\u003cbr/\u003e\n\u003ca href=\"https://github.com/LykosAI/LitePost/releases/latest/download/litepost_amd64.AppImage\"\u003e\n⬇️ Download\n\u003c/a\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n\u003e 🔄 All downloads are automatically updated to the latest version. [View all releases](https://github.com/LykosAI/LitePost/releases)\n\n\u003c/div\u003e\n\n## Prerequisites\n\n- [Node.js](https://nodejs.org/) (v18 or later)\n- [pnpm](https://pnpm.io/) (v8 or later)\n- [Rust](https://www.rust-lang.org/) (latest stable)\n- Platform-specific dependencies for Tauri:\n  - **Windows**: Microsoft Visual Studio C++ Build Tools\n  - **macOS**: Xcode Command Line Tools\n  - **Linux**: `build-essential`, `libwebkit2gtk-4.0-dev`, `curl`, `wget`, `libssl-dev`, `libgtk-3-dev`, `libayatana-appindicator3-dev`, `librsvg2-dev`\n\n## Development Setup\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/LykosAI/LitePost.git\n   cd LitePost\n   ```\n\n2. Install dependencies:\n   ```bash\n   pnpm install\n   ```\n\n3. Start the development server:\n   ```bash\n   pnpm tauri dev\n   ```\n\n## Building for Production\n\nTo create a production build:\n```bash\npnpm tauri build\n```\n\nThe built applications will be available in `src-tauri/target/release/bundle/`.\n\n## Project Structure\n\n```\nlitepost/\n├── src/                     # React frontend source\n│   ├── components/          # React components\n│   │   └── ui/              # Reusable UI components (shadcn/ui)\n│   ├── hooks/               # Custom React hooks\n│   ├── store/               # Zustand state management\n│   ├── utils/               # Utility functions\n│   ├── types/               # TypeScript type definitions\n│   └── test/                # Test files\n├── src-tauri/               # Rust backend source\n│   ├── src/                 # Rust source code\n│   └── capabilities/        # Tauri capability configurations\n├── public/                  # Static assets\n├── coverage/                # Test coverage reports\n└── dist/                    # Production build output\n```\n\nKey directories:\n- `src/components/`: React components organized by feature\n- `src/hooks/`: Custom hooks for API requests, state management, etc.\n- `src/store/`: Zustand stores for collections, environments, and settings\n- `src/test/`: Unit tests using Vitest and React Testing Library\n- `src-tauri/`: Rust backend with HTTP client and file system operations\n\n## Features 🚀\n\n- 🎨 Modern, native UI built with React, Tailwind CSS, and Shadcn UI\n- 💻 Cross-platform support (Windows, macOS, Linux)\n\n### Request \u0026 Authentication 🔐\n- Multiple request tabs with history\n- Authentication support:\n  - Basic Auth\n  - Bearer Token\n  - API Key (header and query parameter)\n- Custom request headers and parameters\n- 📝 Code generation for multiple languages (curl, Python, JavaScript, C#, Go, Ruby)\n\n### Response Handling 📊\n- Advanced response visualization:\n  - ✨ JSON prettification with syntax highlighting\n  - 📄 XML formatting\n  - 🌐 HTML preview\n  - 🖼️ Image preview\n- Response metrics:\n  - 📏 Size measurements\n  - ⚡ Request/response timing\n  - 📈 Network timing breakdown (DNS, First byte, Download time)\n\n### Environment Management 🌍\n- Create, edit, and delete environments\n- Variable substitution\n- Environment switching\n- Environment-specific variables\n\n### Collections 📁\n- Save and organize requests in collections\n- Basic folder organization\n- Import/export collections\n- Postman format compatibility\n\n### Testing ✅\n- JavaScript-based test scripts\n- Comprehensive test assertions:\n  - Status code validation\n  - JSON value verification\n  - Header checks\n  - Response time validation\n- Test execution with results display\n\n## Testing 🧪\n\nThe project uses Vitest for testing. Here are the available test commands:\n\n```bash\n# Run all tests\npnpm test\n\n# Run tests in watch mode (useful during development)\npnpm test:watch\n\n# Run tests with coverage report\npnpm test:coverage\n\n# Run tests for a specific file\npnpm test RequestUrlBar\n```\n\nThe test suite currently includes:\n- Unit tests for React components using React Testing Library\n- Component mocking (e.g., Radix UI components)\n- Event handling tests\n- State management tests\n- Coverage reporting with v8\n\nCoverage reports can be found in:\n- Terminal output (text format)\n- `coverage/` directory (HTML and JSON formats)\n\n### Planned Test Improvements 🎯\n\nWe plan to add:\n- Integration tests for API request/response flows\n- End-to-end tests for critical user journeys\n- Performance testing for large responses\n- Cross-platform compatibility tests\n\n### Writing Tests 📝\n\nTests are located in `src/test/` and follow the naming convention `*.test.tsx`. Each test file should:\n- Import necessary testing utilities from `vitest` and `@testing-library/react`\n- Mock external dependencies when needed\n- Use React Testing Library's best practices for component testing\n\nExample test structure:\n```typescript\nimport { describe, it, expect, vi } from 'vitest'\nimport { render, screen } from '@testing-library/react'\nimport userEvent from '@testing-library/user-event'\nimport { YourComponent } from '@/components/YourComponent'\n\ndescribe('YourComponent', () =\u003e {\n  interface SetupOptions {\n    initialValue?: string\n    isDisabled?: boolean\n  }\n\n  const setup = (options: SetupOptions = {}) =\u003e {\n    const user = userEvent.setup()\n    const props = {\n      value: options.initialValue || '',\n      isDisabled: options.isDisabled || false,\n      onChange: vi.fn(),\n      onSubmit: vi.fn(),\n    }\n\n    const utils = render(\u003cYourComponent {...props} /\u003e)\n\n    return {\n      user,\n      ...utils,\n      ...props,\n    }\n  }\n\n  it('renders with default props', () =\u003e {\n    setup()\n    expect(screen.getByRole('textbox')).toBeInTheDocument()\n    expect(screen.getByRole('button')).toBeEnabled()\n  })\n\n  it('handles user input and submission', async () =\u003e {\n    const { user, onChange, onSubmit } = setup()\n    \n    const input = screen.getByRole('textbox')\n    const button = screen.getByRole('button')\n    \n    await user.type(input, 'Hello')\n    expect(onChange).toHaveBeenCalledWith('Hello')\n    \n    await user.click(button)\n    expect(onSubmit).toHaveBeenCalled()\n  })\n\n  it('respects disabled state', () =\u003e {\n    setup({ isDisabled: true })\n    expect(screen.getByRole('textbox')).toBeDisabled()\n    expect(screen.getByRole('button')).toBeDisabled()\n  })\n})\n```\n## Contributing 🤝\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add some amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## License ⚖️\n\nThis project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). This means:\n\n- You can use this software for any purpose\n- You can modify this software\n- You can distribute this software\n- You must include the license and copyright notice with each copy\n- You must disclose your source code when you distribute the software\n- You must state changes made to the code\n- If you use this software over a network, you must make your modified version available to users of that network\n\nSee the [LICENSE](LICENSE) file for the full license text.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flykosai%2Flitepost","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flykosai%2Flitepost","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flykosai%2Flitepost/lists"}