Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
143 changes: 121 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,43 +2,142 @@

**[https://configdev.com/](https://configdev.com/)**

**Modern, client-side developer utilities for DevOps and backend engineers.**
**Modern, client-side developer utilities for DevOps engineers, cloud architects, and SREs.**

ConfigDev is a suite of zero-latency, privacy-first tools designed to help developers solve everyday problems without compromising data security or infrastructure integrity.
ConfigDev is a suite of zero-latency, privacy-first tools that solve everyday infrastructure problems without compromising data security. All processing runs 100% inside your browser — no uploads, no server round-trips, no logs.

## 🛡️ The Local-First, Privacy-First Philosophy
---

In modern engineering, pasting sensitive data (like stack traces, configuration files, and API logs) into random online utilities or generative AI interfaces is a massive security risk.
## The Local-First, Privacy-First Philosophy

ConfigDev solves this by adhering strictly to a **Local-First, Privacy-First** philosophy:
- **Zero Ingress**: Data never leaves your machine. All parsing, formatting, and scrubbing happens natively inside your browser's local sandbox (V8 runtime).
- **No Backend Databases**: We don't store your history, logs, or configurations.
- **100% Network Isolation**: Once the app loads, you can disable your internet connection, and the tools will continue to function perfectly.
Pasting sensitive data — stack traces, Kubernetes manifests, API keys, server logs — into random online utilities is a real security risk. Most tools process your input on a backend server, meaning your production secrets transit infrastructure you don't control.

## 🚀 Hero Tools
ConfigDev eliminates this entirely:

- [**PII Masker & Log Scrubber**](https://configdev.com/pii-masker-log-scrubber): A powerful regex-driven engine that strips sensitive PII (emails, IPs, JWTs, Secrets, Credit Cards) out of raw logs locally so you can safely share them with LLMs.
- [**CIDR Subnet Calculator**](https://configdev.com/cidr-subnet-calculator): A fast, visual subnet mask calculator for DevOps and networking engineers to plan IP ranges locally without internet connection.
- [**Cron to Systemd Converter**](https://configdev.com/cron-to-systemd-converter): Easily translate legacy crontab expressions into modern Systemd timer units and service files.
- [**CSV to JSON Schema**](https://configdev.com/csv-to-json-schema): Instantly convert flat CSV data into nested JSON schemas directly in your browser.
- [**ENV to JSON**](https://configdev.com/env-to-json): Convert flat `.env` variable lists into structured JSON objects.
- [**JSON to ENV**](https://configdev.com/json-to-env): Transform nested or flat JSON objects back into flattened `.env` variable syntax.
- **Zero Ingress** — Data never leaves your machine. All parsing, encoding, and scrubbing runs inside your browser's V8 sandbox.
- **No Backend** — No databases, no history, no analytics on your input.
- **Offline Capable** — Once the page loads, disconnect from the internet. Every tool keeps working.
- **Verifiable** — Open DevTools → Network tab while using any tool. Zero outbound requests.

## 💻 Development
---

This project is built with [Astro](https://astro.build/) for exceptional performance and zero-JS static rendering by default.
## Tools

### Setup
### Security & DevSecOps

| Tool | URL | Description |
|---|---|---|
| PII Masker & Log Scrubber | [/pii-masker-log-scrubber](https://configdev.com/pii-masker-log-scrubber) | Strip emails, IPs, JWTs, credit cards, and secrets from raw logs locally before sharing with LLMs or issue trackers |
| K8s Manifest Sanitizer | [/k8s-manifest-sanitizer](https://configdev.com/k8s-manifest-sanitizer) | Base64 encode/decode Kubernetes Secret data blocks, convert stringData to data, and scrub manifests for safe Git commits |

### Infrastructure & Config

| Tool | URL | Description |
|---|---|---|
| Crontab to Systemd Converter | [/cron-to-systemd-converter](https://configdev.com/cron-to-systemd-converter) | Translate legacy crontab expressions into production-ready systemd `.service` and `.timer` unit files |
| Env to JSON Converter | [/env-to-json](https://configdev.com/env-to-json) | Parse standard `.env` key-value files into clean, formatted JSON objects ready for any pipeline |
| JSON to Env Converter | [/json-to-env](https://configdev.com/json-to-env) | Flatten nested JSON objects into standard `.env` key-value lines with configurable delimiter formatting |

### Networking & Data

| Tool | URL | Description |
|---|---|---|
| CIDR Subnet Calculator | [/cidr-subnet-calculator](https://configdev.com/cidr-subnet-calculator) | Compute subnet boundaries, usable host ranges, broadcast addresses, and network masks for any IPv4 block |
| CSV to JSON Schema Builder | [/csv-to-json-schema](https://configdev.com/csv-to-json-schema) | Inspect CSV column structures and auto-generate a valid JSON Schema Draft-07 specification file |

---

## Tech Stack

| Layer | Technology |
|---|---|
| Framework | [Astro](https://astro.build/) v7 — static output, zero-JS by default |
| UI Components | React 19 (islands, `client:load`) |
| Styling | Tailwind CSS v4 |
| Deployment | Cloudflare Pages |
| Sitemap | `@astrojs/sitemap` |

---

## Development

```bash
# Install dependencies
npm install

# Start dev server
npm run dev

# Type-check and lint
npm run lint

# Production build
npm run build
```

### Deployment
The project uses flat file routing (`build.format: 'file'`), so pages emit as `/page-name.html` rather than `/page-name/index.html`. This eliminates the trailing-slash duplicate-URL issue in Google Search Console.

---

## Project Structure

```
src/
├── components/
│ ├── shared/
│ │ ├── Navbar.astro # Site-wide navigation with grouped tool categories
│ │ ├── Footer.astro
│ │ └── RelatedTools.astro # Cross-linking widget used on all tool pages
│ └── tools/
│ ├── CIDRCalculator.tsx
│ ├── CronToSystemd.tsx
│ ├── CsvToSchema.tsx
│ ├── EnvToJson.tsx
│ ├── JsonToEnv.tsx
│ ├── K8sManifestSanitizer.tsx
│ └── PiiScrubber.tsx
├── layouts/
│ └── Layout.astro # Base HTML shell, meta, canonical, JSON-LD
├── pages/
│ ├── index.astro # Homepage with category grid and search/filter
│ ├── k8s-manifest-sanitizer.astro
│ ├── pii-masker-log-scrubber.astro
│ ├── cidr-subnet-calculator.astro
│ ├── cron-to-systemd-converter.astro
│ ├── csv-to-json-schema.astro
│ ├── env-to-json.astro
│ ├── json-to-env.astro
│ └── ...
└── styles/
└── global.css
public/
├── robots.txt # Crawl directives — error/legal pages blocked
├── llms.txt # LLM-readable site manifest
└── _redirects # Cloudflare Pages redirect rules
astro.config.mjs # Site config, sitemap priorities, build format
```

---

## Deployment

Configured for Cloudflare Pages. Set environment variables in your Pages dashboard before deploying:

| Variable | Purpose |
|---|---|
| `PUBLIC_GA_ID` | Google Analytics measurement ID (optional) |
| `PUBLIC_YANDEX_VERIFICATION` | Yandex Webmaster verification (optional) |

Deploy command: `npm run build` → output directory: `dist/`

---

## Contributing

See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.

ConfigDev is configured for seamless deployment to Cloudflare Pages. Make sure to define your environment variables (like `PUBLIC_GA_ID`) in your platform settings before deploying!
---

## 📜 License
## License

This project is open-source and licensed under the [MIT License](LICENSE).
MIT — see [LICENSE](LICENSE).
11 changes: 8 additions & 3 deletions astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -32,25 +32,30 @@ export default defineConfig({
integrations: [
react(),
sitemap({
// Exclude legal/utility pages — not useful for search indexers
// Exclude legal/utility pages and error pages — not useful for search indexers
filter: (page) =>
!page.includes('/terms') &&
!page.includes('/privacy') &&
!page.includes('/contact'),
!page.includes('/contact') &&
!page.includes('/404') &&
!page.includes('/500'),

// Priority tiers: hero tools at 1.0, all others at 0.9
customPages: [],
serialize(item) {
const heroTools = [
'https://configdev.com/cidr-subnet-calculator',
'https://configdev.com/pii-masker-log-scrubber',
'https://configdev.com/k8s-manifest-sanitizer',
'https://configdev.com/env-to-json',
'https://configdev.com/json-to-env',
'https://configdev.com/cron-to-systemd-converter',
'https://configdev.com/csv-to-json-schema',
];
const isHero = heroTools.some((url) => item.url === url || item.url === url + '/');
return {
...item,
priority: isHero ? 1.0 : 0.9,
priority: isHero ? 1.0 : 0.8,
changefreq: isHero ? EnumChangefreq.WEEKLY : EnumChangefreq.MONTHLY,
};
},
Expand Down
1 change: 1 addition & 0 deletions public/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ ConfigDev is a high-performance web utility suite designed for systems administr
- [Env to JSON Converter](https://configdev.com/env-to-json): Parse standard key-value `.env` files into clean structured JSON configuration objects with type-casting.
- [JSON to Env Converter](https://configdev.com/json-to-env): Flatten nested JSON objects into standard flat `.env` key-value lines with custom delimiters.
- [PII Masker & Log Scrubber](https://configdev.com/pii-masker-log-scrubber): Redact emails, secrets, tokens, and IP strings out of raw log dumps locally.
- [Kubernetes Secret Encoder/Decoder & Manifest Sanitizer](https://configdev.com/k8s-manifest-sanitizer): Base64 encode/decode Kubernetes Secret data blocks and sanitize manifests for safe Git commits — 100% client-side using native btoa/atob.
- [CIDR Subnet Calculator](https://configdev.com/cidr-subnet-calculator): Compute subnet boundaries, usable host ranges, broadcast addresses, and masks for IPv4.
- [CSV to JSON Schema Builder](https://configdev.com/csv-to-json-schema): Inspect CSV columns and auto-infer valid JSON Schema Draft-07 specification files.

Expand Down
13 changes: 12 additions & 1 deletion public/robots.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,19 @@
User-agent: *
Allow: /

# Block error pages from indexing
# Block error pages — no indexing value
Disallow: /404
Disallow: /404.html
Disallow: /500
Disallow: /500.html

# Block legal/utility pages from wasting crawl budget
Disallow: /terms
Disallow: /terms.html
Disallow: /privacy
Disallow: /privacy.html
Disallow: /contact
Disallow: /contact.html

# Sitemap location
Sitemap: https://configdev.com/sitemap-index.xml
1 change: 1 addition & 0 deletions src/components/shared/Navbar.astro
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ const toolCategories = [
label: 'Security & DevSecOps',
tools: [
{ href: '/pii-masker-log-scrubber', label: 'PII Masker & Scrubber' },
{ href: '/k8s-manifest-sanitizer', label: 'K8s Manifest Sanitizer' },
]
},
{
Expand Down
Loading
Loading