____ ___ _ _ _____ _ ____ | _ \ / _ \| | | | ____| | | | __ ) | |_) | | | | |_| | _| | | | _ \ | __/| |_| | _| | |___ _____| |____ | |_) | |_| \___/ \_| |____|_____|______| |____/
19 stdlib-only Python micro-services with a unified gateway. Zero dependencies, zero API keys. Runs on a Raspberry Pi or a VPS.
Each service is a single Python file with no external dependencies. Start them individually or behind the gateway.
| service | port | description | endpoint |
|---|---|---|---|
| gateway | 8700 | unified API entry point — routes to all services | POST /api/{service}/{action} |
| sentiment | 8777 | analyzes text sentiment (positive/negative/neutral) | POST /api/analyze |
| link-preview | 8765 | extracts title, description, image from URLs | POST /api/preview |
| keyword-extractor | 8766 | extracts keywords and key phrases from text | POST /api/extract |
| qr-generator | 8767 | generates QR codes as SVG | POST /api/qr |
| dns-lookup | 8768 | resolves domain names to IP addresses (A/AAAA) | POST /api/resolve |
| color-palette | 8769 | generates harmonious color palettes | POST /api/generate |
| text-summary | 8770 | extracts key sentences from text | POST /api/summarize |
| url-shortener | 8771 | creates short codes for long URLs | POST /api/shorten |
| password-generator | 8772 | generates secure random passwords | POST /api/generate |
| timestamp-converter | 8773 | converts Unix timestamps to human dates | POST /api/convert |
| json-formatter | 8774 | validates, formats, minifies JSON | POST /api/format |
| base64-tool | 8775 | encodes and decodes base64 | POST /api/encode |
| markdown-render | 8776 | converts Markdown to HTML | POST /api/render |
| hash-gen | 8779 | generates hashes (md5, sha1, sha256, sha512, blake2b) | POST /api/hash |
| uuid-gen | 8780 | generates UUID v4 | POST /api/generate |
| timestamp-conv | 8781 | converts between date formats | POST /api/convert |
| barcode-gen | 8782 | generates barcodes (code39, code128, ean13) | POST /api/generate |
| status-dashboard | 8790 | live health monitor for all services | GET /api/status |
All services expose POST endpoints with JSON. The gateway routes for you — or call services directly.
# via gateway (recommended) $ curl -X POST http://localhost:8700/api/sentiment/analyze \ -H "Content-Type: application/json" \ -d '{"text": "this is amazing"}' $ curl -X POST http://localhost:8700/api/password/generate \ -H "Content-Type: application/json" \ -d '{"length": 20}' # direct service call $ curl -X POST http://localhost:8767/api/qr \ -H "Content-Type: application/json" \ -d '{"data": "https://pokelabs.org"}' # every service has a health endpoint $ curl http://localhost:8774/api/health {"ok": true, "v": 1, "service": "json-formatter"}
Zero npm installs. Zero API keys. Zero framework lock-in.
Gateway on :8700 proxies requests to individual services. Each service is a single Python file you can run, modify, or replace independently.
client
↓ POST /api/sentiment/analyze
gateway (:8700)
↓ proxy to localhost:8777
sentiment (:8777) → lexicon analysis → JSON response
# each service is independent
link-preview (:8765) → fetch URL → extract metadata
keyword-extractor (:8766) → TF scoring → ranked keywords
dns-lookup (:8768) → socket.getaddrinfo → IP list
qr-generator (:8767) → SVG generation → inline data
color-palette (:8769) → chroma math → hex/rgb list
...
# add a service: create server.py → register in gateway → done