From b9f3e5c4cde47d59df0b4c3b44071e729e5852c0 Mon Sep 17 00:00:00 2001 From: rayanahmax Date: Mon, 27 Jul 2026 11:38:31 +0530 Subject: [PATCH] docs: rewrite README with accurate project structure, no emojis, navigation categories documented --- README.md | 194 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 171 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 2321409..89a67ea 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,192 @@ # ConfigDev -**[https://configdev.com/](https://configdev.com/)** +**Live site: [https://configdev.com](https://configdev.com)** -**Modern, client-side developer utilities for DevOps and backend engineers.** +A collection of free, client-side infrastructure utilities for DevOps engineers, cloud architects, SREs, and backend developers. Every tool runs entirely inside the browser — no uploads, no server round-trips, no data egress. -ConfigDev is a suite of zero-latency, privacy-first tools designed to help developers solve everyday problems without compromising data security or infrastructure integrity. +--- -## 🛡️ The Local-First, Privacy-First Philosophy +## Tools -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. +### Security & DevSecOps -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. +| Tool | URL | Description | +|---|---|---| +| PII Masker & Log Scrubber | `/pii-masker-log-scrubber` | Redact emails, IPs, JWTs, API keys, and secrets from raw log dumps using local regex execution | -## 🚀 Hero Tools +### Infrastructure & Config -- [**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. +| Tool | URL | Description | +|---|---|---| +| Crontab to Systemd Converter | `/cron-to-systemd-converter` | Translate legacy crontab expressions into production-ready systemd `.service` and `.timer` unit files | +| Env to JSON Converter | `/env-to-json` | Parse standard `.env` key-value assignment files into clean, formatted JSON objects | +| JSON to Env Converter | `/json-to-env` | Flatten nested JSON objects into standard `.env` key-value lines with configurable delimiter formatting | -## 💻 Development +### Networking & Data -This project is built with [Astro](https://astro.build/) for exceptional performance and zero-JS static rendering by default. +| Tool | URL | Description | +|---|---|---| +| CIDR Subnet Calculator | `/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` | Inspect CSV column structures and auto-generate a valid JSON Schema Draft-07 specification file | -### Setup +--- + +## Architecture + +All tools follow the same pattern: a static Astro page wraps a React component mounted with `client:load`. The Astro layer handles all static output — layout, SEO metadata, JSON-LD structured data, educational content, and FAQ sections. The React component handles all interactive state — inputs, transformations, copy/download actions. + +No tool makes any outbound network request after page load. Transformations use only browser-native APIs: `btoa`, `atob`, `TextEncoder`, `URL`, `FileReader`, `Blob`. You can verify this by opening DevTools Network tab while using any tool. + +--- + +## Tech Stack + +| Layer | Choice | +|---|---| +| Framework | Astro v7, static output mode | +| Interactive components | React 19 with `client:load` hydration | +| Styling | Tailwind CSS v4 | +| Deployment | Cloudflare Pages | +| Sitemap | `@astrojs/sitemap` with per-page priority config | +| Type checking | TypeScript via `@astrojs/check` | + +--- + +## Navigation Categories + +The site organises tools into three categories used consistently across the navbar dropdown, homepage filter tabs, and homepage section headings: + +| Category | Tools | +|---|---| +| Infrastructure & Config | Crontab to Systemd, Env to JSON, JSON to Env | +| Security & DevSecOps | PII Masker & Log Scrubber | +| Networking & Data | CIDR Subnet Calculator, CSV to JSON Schema Builder | + +These category labels are defined in two places: + +- `src/components/shared/Navbar.astro` — `toolCategories` array drives the desktop dropdown and mobile menu +- `src/pages/index.astro` — filter tab labels and section `

` headings + +--- + +## Project Structure + +``` +src/ +├── components/ +│ ├── shared/ +│ │ ├── Navbar.astro # Site-wide nav, tools grouped by category +│ │ ├── Footer.astro +│ │ └── RelatedTools.astro # Cross-linking widget on every tool page +│ └── tools/ +│ ├── CIDRCalculator.tsx +│ ├── CronToSystemd.tsx +│ ├── CsvToSchema.tsx +│ ├── EnvToJson.tsx +│ ├── JsonToEnv.tsx +│ └── PiiScrubber.tsx +├── layouts/ +│ └── Layout.astro # HTML shell, canonical URL, meta tags, GA/Yandex +├── pages/ +│ ├── index.astro # Homepage: category grid, search/filter tabs +│ ├── cidr-subnet-calculator.astro +│ ├── pii-masker-log-scrubber.astro +│ ├── cron-to-systemd-converter.astro +│ ├── csv-to-json-schema.astro +│ ├── env-to-json.astro +│ ├── json-to-env.astro +│ ├── about-us.astro +│ ├── contact.astro +│ ├── privacy.astro +│ ├── terms.astro +│ ├── 404.astro +│ └── 500.astro +└── styles/ + └── global.css +public/ +├── robots.txt +├── llms.txt +├── _redirects +├── favicon.svg +└── icon.png +astro.config.mjs +``` + +--- + +## Development + +**Prerequisites:** Node.js >= 20.0.0 ```bash +# Install dependencies npm install + +# Start local dev server (http://localhost:4321) npm run dev + +# Type-check all Astro and TSX files +npm run lint + +# Production build (outputs to dist/) +npm run build + +# Preview production build locally +npm run preview ``` -### Deployment +--- + +## Environment Variables + +Copy `.env.example` to `.env`. Both variables are optional — the site builds and runs fully without them. + +```bash +cp .env.example .env +``` + +| Variable | Purpose | +|---|---| +| `PUBLIC_GA_ID` | Google Analytics 4 measurement ID (e.g. `G-XXXXXXXXXX`) | +| `PUBLIC_YANDEX_VERIFICATION` | Yandex Webmaster verification token | + +--- + +## Deployment + +The project deploys to Cloudflare Pages. + +- Build command: `npm run build` +- Output directory: `dist/` +- Node version: 22 + +Manual deploy via Wrangler: + +```bash +npm run deploy +``` + +--- + +## CI Pipeline + +GitHub Actions runs on every push to `main` and every pull request targeting `main`. + +Two jobs run sequentially: + +1. **Lint** — runs `npm run lint` (`astro check`) to catch type errors and Astro diagnostics +2. **Build** — runs `npm run build` after lint passes; uploads `dist/` as an artifact (7-day retention) + +Both jobs use Node 22 and `npm ci` for reproducible installs. In-progress runs for the same branch are cancelled when new commits arrive. + +--- + +## Contributing + +See [CONTRIBUTING.md](CONTRIBUTING.md). -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).