A collection of browser-based tools built as a modern monorepo using Vue 3, TypeScript, and pnpm workspaces.
InBrowser Web provides a suite of utility tools that run entirely in your browser, including UUID generators, PDF processors, favicon generators, and more. All tools are designed to work offline and protect your privacy by processing data locally.
inbrowser-web/
βββ apps/ # Main applications
βββ shared/ # Shared packages and components
βββ tools/ # Tool implementations
βββ utils/ # Core business logic and algorithms
βββ registry/ # Registry of tools
βββ pnpm-workspace.yaml
βββ package.json
apps/
- Main web application that serves the user interfaceshared/
- Shared packages (UI components, icons, i18n, tool interfaces)tools/
- Complete tool implementations with UI and routingutils/
- Pure TypeScript utilities and algorithmsregistry/
- Registry of tools
- Node.js >= 18.0.0
- pnpm >= 8.0.0
-
Install dependencies:
pnpm install
-
Start development server:
pnpm dev
-
Build for production:
pnpm build
pnpm dev
- Start the development serverpnpm build
- Build the web application for productionpnpm test
- Run tests across all packagespnpm test:unit
- Run unit testspnpm test:e2e
- Run end-to-end testspnpm lint
- Run linting (oxlint + eslint)pnpm format
- Format code with Prettierpnpm type-check
- Run TypeScript type checking
- Code Sharing: Shared components and utilities across tools
- Consistent Dependencies: Centralized dependency management
- Type Safety: Full TypeScript support with shared types
- Atomic Changes: Cross-package changes in single commits
graph TD
A[Web App] --> B[Tools UUID]
A --> C[Tools PDF]
A --> D[Tools Favicon]
B --> E[Utils UUID]
C --> F[Utils PDF]
D --> G[Utils Image]
B --> H[Shared UI]
C --> H
D --> H
B --> I[Shared Tools]
C --> I
D --> I
H --> J[Shared Icons]
H --> K[Shared Locale]
- Create utility package in
utils/
for core logic - Create tool package in
tools/
for UI implementation - Export tool info using
@shared/tools
interface - Tool automatically appears in the main application
- Run script in specific package:
pnpm -F <package-name> <script>
- Add dependency to package:
pnpm -F <package-name> add <dependency>
- Run script in all packages:
pnpm -r <script>
- π Privacy First: All processing happens locally in your browser
- β‘ Fast: Optimized for performance with modern web technologies
- π Offline Ready: Most tools work without internet connection
- π± Responsive: Works on desktop, tablet, and mobile devices
- π¨ Modern UI: Built with Vue 3 and Naive UI components
- π Internationalized: Support for multiple languages
- π§ Developer Friendly: Full TypeScript support and comprehensive testing
- Fork and clone the repository
- Create a feature branch:
git checkout -b feature/amazing-tool
- Make your changes following the existing patterns
- Run tests:
pnpm test
- Run linting:
pnpm lint
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.