build prospect intelligence platform MVP

This commit is contained in:
Marco0300
2026-09-02 17:38:50 +02:00
commit 44be4efc82
29 changed files with 973 additions and 0 deletions
+12
View File
@@ -0,0 +1,12 @@
FROM python:3.13-alpine
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1
RUN addgroup -S app && adduser -S -G app app
WORKDIR /app
COPY infrastructure/docker/api/server.py /app/server.py
RUN chown -R app:app /app
USER app
EXPOSE 8000
CMD ["python", "/app/server.py"]
+34
View File
@@ -0,0 +1,34 @@
"""Small stdlib-only MVP API/container smoke-test service."""
import json
import os
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
class Handler(BaseHTTPRequestHandler):
server_version = "ProspectPlatformMVP/0.1"
def do_GET(self): # noqa: N802
if self.path == "/healthz":
self.respond(200, {"status": "ok", "outreach_enabled": False})
elif self.path == "/":
self.respond(200, {"service": "api", "status": "ok"})
else:
self.respond(404, {"error": "not_found"})
def respond(self, status, payload):
body = json.dumps(payload).encode("utf-8")
self.send_response(status)
self.send_header("Content-Type", "application/json")
self.send_header("Content-Length", str(len(body)))
self.end_headers()
self.wfile.write(body)
def log_message(self, format, *args):
if os.environ.get("LOG_LEVEL", "INFO").upper() != "QUIET":
super().log_message(format, *args)
if __name__ == "__main__":
host = os.environ.get("API_HOST", "0.0.0.0")
port = int(os.environ.get("API_PORT", "8000"))
ThreadingHTTPServer((host, port), Handler).serve_forever()
+13
View File
@@ -0,0 +1,13 @@
FROM python:3.13-alpine
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1
RUN addgroup -S app && adduser -S -G app app
WORKDIR /srv
COPY infrastructure/docker/web/index.html /srv/index.html
COPY infrastructure/docker/web/healthz /srv/healthz
RUN chown -R app:app /srv
USER app
EXPOSE 8080
CMD ["python", "-m", "http.server", "8080", "--bind", "0.0.0.0", "--directory", "/srv"]
+1
View File
@@ -0,0 +1 @@
ok
+6
View File
@@ -0,0 +1,6 @@
<!doctype html>
<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
<title>Prospect Platform</title>
<h1>Prospect Platform</h1>
<p>MVP static web container is running.</p>
<p>Automated outreach is <strong>disabled</strong>.</p>