diff --git a/offers/microservice-catalog/README.md b/offers/microservice-catalog/README.md new file mode 100644 index 0000000..48e53b2 --- /dev/null +++ b/offers/microservice-catalog/README.md @@ -0,0 +1,23 @@ +# Microservice Catalog + +Welcome to the **Microservice Catalog**. This directory contains a collection of 5 small, technical services designed to be delivered in a single session. These services are optimized for efficiency, clarity, and immediate value for technical projects. + +## Included Services + +1. **README Polish**: Improve the clarity, structure, and professional appearance of your project's main documentation. +2. **API Docs QA**: Identifying inconsistencies between your OpenAPI specification and the actual API behavior. +3. **JSON Schema Cleanup**: Optimizing and validating JSON schemas for better data integrity. +4. **Broken Link Sweep**: A comprehensive scan of your documentation or website to find and report dead links. +5. **Security Headers & Web Config Review**: A quick audit of your web server's security headers and basic configuration. + +## Catalog Files + +- [**listings.json**](./listings.json): The machine-readable catalog containing service details, pricing, and schemas. +- [**sample-deliverables.md**](./sample-deliverables.md): Examples of what the input and output look like for each service. + +## Usage + +Each service defines an `input_schema` and an `output_schema` in `listings.json`. To request a service, ensure your input data matches the required schema. Deliverables will follow the structure defined in the `output_schema`. + +--- +*Note: All prices are suggested in USDC/USD. These services are designed for quick turnaround and specific technical tasks.* diff --git a/offers/microservice-catalog/listings.json b/offers/microservice-catalog/listings.json new file mode 100644 index 0000000..b29c96b --- /dev/null +++ b/offers/microservice-catalog/listings.json @@ -0,0 +1,144 @@ +[ + { + "id": "readme-polish", + "title": "README Polish", + "price_suggestion": "50 USDC", + "turnaround": "24 hours", + "input_schema": { + "type": "object", + "properties": { + "readme_url": { "type": "string", "description": "Link to the raw README.md file or repository" }, + "project_goal": { "type": "string", "description": "Short description of what the project does" } + }, + "required": ["readme_url"] + }, + "output_schema": { + "type": "object", + "properties": { + "improved_readme": { "type": "string", "description": "The revised Markdown content" }, + "changes_made": { "type": "array", "items": { "type": "string" } } + } + }, + "out_of_scope": [ + "Writing documentation for missing features", + "Creating complex diagrams", + "Translating to other languages" + ] + }, + { + "id": "api-docs-qa", + "title": "API Docs QA", + "price_suggestion": "75 USDC", + "turnaround": "48 hours", + "input_schema": { + "type": "object", + "properties": { + "openapi_spec_url": { "type": "string", "description": "URL to OpenAPI/Swagger JSON or YAML" }, + "base_url": { "type": "string", "description": "Base URL for the API to test against" } + }, + "required": ["openapi_spec_url"] + }, + "output_schema": { + "type": "object", + "properties": { + "inconsistencies_found": { "type": "array", "items": { "type": "string" } }, + "typo_fixes": { "type": "array", "items": { "type": "string" } }, + "validation_report": { "type": "string" } + } + }, + "out_of_scope": [ + "Fixing bugs in the API code", + "Writing integration tests", + "Load testing" + ] + }, + { + "id": "json-schema-cleanup", + "title": "JSON Schema Cleanup", + "price_suggestion": "40 USDC", + "turnaround": "24 hours", + "input_schema": { + "type": "object", + "properties": { + "json_data": { "type": "object", "description": "A sample JSON object" }, + "existing_schema": { "type": "object", "description": "Optional existing schema" } + }, + "required": ["json_data"] + }, + "output_schema": { + "type": "object", + "properties": { + "optimized_schema": { "type": "object" }, + "validation_results": { "type": "array", "items": { "type": "string" } } + } + }, + "out_of_scope": [ + "Generating code from schema", + "Database migration scripts", + "Large-scale data cleaning" + ] + }, + { + "id": "broken-link-sweep", + "title": "Broken Link Sweep", + "price_suggestion": "30 USDC", + "turnaround": "12 hours", + "input_schema": { + "type": "object", + "properties": { + "target_url": { "type": "string", "description": "The website or documentation root URL" }, + "depth": { "type": "integer", "description": "How many levels deep to crawl (default 2)" } + }, + "required": ["target_url"] + }, + "output_schema": { + "type": "object", + "properties": { + "broken_links": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source": { "type": "string" }, + "target": { "type": "string" }, + "status": { "type": "integer" } + } + } + }, + "total_links_scanned": { "type": "integer" } + } + }, + "out_of_scope": [ + "Fixing the broken links on the server", + "SEO analysis", + "Testing behind login walls" + ] + }, + { + "id": "web-config-review", + "title": "Security Headers & Web Config Review", + "price_suggestion": "100 USDC", + "turnaround": "48 hours", + "input_schema": { + "type": "object", + "properties": { + "domain": { "type": "string", "description": "The domain to inspect" } + }, + "required": ["domain"] + }, + "output_schema": { + "type": "object", + "properties": { + "header_score": { "type": "string" }, + "missing_headers": { "type": "array", "items": { "type": "string" } }, + "misconfigured_headers": { "type": "array", "items": { "type": "string" } }, + "recommendations": { "type": "array", "items": { "type": "string" } } + } + }, + "out_of_scope": [ + "Penetration testing", + "Implementing changes in server config", + "SSL certificate issuance" + ] + } +] diff --git a/offers/microservice-catalog/sample-deliverables.md b/offers/microservice-catalog/sample-deliverables.md new file mode 100644 index 0000000..3a5877f --- /dev/null +++ b/offers/microservice-catalog/sample-deliverables.md @@ -0,0 +1,118 @@ +# Sample Deliverables + +This document provides fictional sample deliveries for each service in the microservice catalog. + +## 1. README Polish + +**Input:** +- `readme_url`: `https://github.com/fictional-user/sample-project/blob/main/README.md` +- `project_goal`: "A simple command-line tool for tracking daily water intake." + +**Output:** +```markdown +# HydroTrack 💧 + +HydroTrack is a lightweight command-line interface (CLI) tool designed to help you monitor and achieve your daily hydration goals. + +## Features +- Quick logging of water intake. +- Daily progress visualization. +- Customizable daily goals. + +## Installation +`npm install -g hydrotrack` + +## Usage +`hydrotrack add 500ml` +``` + +**Changes Made:** +- Added professional title and emoji. +- Structured with clear headers. +- Included quick-start usage examples. + +--- + +## 2. API Docs QA + +**Input:** +- `openapi_spec_url`: `https://api.fictional-service.com/v1/openapi.json` +- `base_url`: `https://api.fictional-service.com/v1` + +**Output:** +- **Inconsistencies Found:** + - `POST /users` documentation says it returns `201 Created`, but the server actually returns `200 OK`. + - Field `last_login` is documented as a `string` (date-time), but returns `null` when never logged in, which isn't specified in the schema. +- **Typo Fixes:** + - "retreive" corrected to "retrieve" in 3 endpoint descriptions. +- **Validation Report:** OpenAPI 3.0.1 validation passed with 2 warnings. + +--- + +## 3. JSON Schema Cleanup + +**Input:** +- `json_data`: + ```json + { + "user_id": 101, + "username": "jdoe", + "meta": { + "signup_date": "2023-01-01", + "flags": [1, 0, 1] + } + } + ``` + +**Output:** +- **Optimized Schema:** + ```json + { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "user_id": { "type": "integer" }, + "username": { "type": "string", "minLength": 3 }, + "meta": { + "type": "object", + "properties": { + "signup_date": { "type": "string", "format": "date" }, + "flags": { "type": "array", "items": { "type": "integer", "enum": [0, 1] } } + } + } + } + } + ``` +- **Validation Results:** Input data matches the optimized schema perfectly. + +--- + +## 4. Broken Link Sweep + +**Input:** +- `target_url`: `https://docs.fictional-project.io` +- `depth`: 2 + +**Output:** +- **Broken Links:** + - Source: `https://docs.fictional-project.io/intro` -> Target: `https://docs.fictional-project.io/setup-guide` (Status: 404) + - Source: `https://docs.fictional-project.io/footer` -> Target: `https://twitter.com/old_account_link` (Status: 404) +- **Total Links Scanned:** 142 + +--- + +## 5. Security Headers & Web Config Review + +**Input:** +- `domain`: `https://secure-app.fictional-fintech.com` + +**Output:** +- **Header Score:** B- +- **Missing Headers:** + - `Content-Security-Policy` + - `Permissions-Policy` +- **Misconfigured Headers:** + - `X-Frame-Options`: Set to `ALLOWALL`, should be `SAMEORIGIN` or `DENY`. +- **Recommendations:** + - Implement a basic CSP to mitigate XSS. + - Set `Strict-Transport-Security` with a longer max-age (current is only 3600).