toolkit/README.md
2026-03-15 16:34:31 -03:00

86 lines
2.2 KiB
Markdown

# toolkit
A collection of browser-based tools for developers.
No server, no tracking, no external dependencies — everything runs locally in your browser.
## Tools
| Route | Description |
|--------------|------------------------------------------------------------------|
| `/` | About |
| `/object-id` | MongoDB ObjectId generator & parser |
| `/uuid` | UUID v1/v4/v6/v7 generator & parser |
| `/hash` | MD5, SHA-1, SHA-256, SHA-512 |
| `/cron` | Interactive crontab expression builder with presets |
| `/api-key` | High-entropy API key generator (hex, base62, base64url, …) |
| `/json` | Prettify, compact, tab-indent, validate JSON |
| `/base` | Encode & decode Base64, Base64url, Base32, Base58, Base16 |
| `/string` | String transforms: lower, UPPER, snake_case, camelCase, … |
## Stack
- [SvelteKit 2](https://kit.svelte.dev) + [Svelte 5](https://svelte.dev)
- JavaScript with JSDoc — no TypeScript
- No runtime dependencies
---
## Development
```sh
npm install
npm run dev
```
App runs at `http://localhost:5173`.
## Production build
```sh
npm run build
node build # listens on PORT (default 3000)
```
## Type check
```sh
npm run check
```
---
## Deploy with Docker
### Build and run
```sh
docker build -t toolkit .
docker run -p 3000:3000 -e ORIGIN=http://localhost:3000 toolkit
```
### docker-compose
```sh
docker compose up -d
```
App runs at `http://localhost:3000`.
### Behind a reverse proxy
Set `ORIGIN` to your public URL in `docker-compose.yml`:
```yaml
environment:
- ORIGIN=https://your-domain.com
```
Then proxy traffic to port `3000`.
### Environment variables
| Variable | Default | Description |
|----------|------------|---------------------------------------|
| `PORT` | `3000` | Port the server listens on |
| `HOST` | `0.0.0.0` | Interface to bind |
| `ORIGIN` | — | Public URL (required in production) |