A full-stack, container-based serverless platform inspired by Beam.cloud. This clone enables developers to run python functions in containers and also deploy any container using any image present on Docker Hub. The platform supports user authentication, API key generation, and HTTP routing to user containers using Kubernetes, Nginx Ingress, and HTTPS.
This monorepo consists of five core services:
A Python SDK that enables developers to:
- Authenticate using API keys.
- Define serverless functions using the
@functiondecorator. - Deploy and run functions inside isolated containers (pods).
- Receives and authenticates SDK requests.
- Builds and deploys containers (pods) on the Kubernetes cluster.
- Manages container lifecycles.
- Built using React, TypeScript, TailwindCSS, ShadCN UI.
- Allows users to register, log in, and view their API keys.
- Dashboard for monitoring deployed containers.
- Built with Node.js, TypeScript, Express.
- Handles authentication, user management, and API key issuance.
- Interacts with a PostgreSQL database via Prisma ORM.
- Proxies incoming pod requests to the appropriate container.
- Example:
https://pod.<BASE_URL>/<ContainerID>forwards to the correct container’s/route. - Built with Node.js, TypeScript, Express.
| Layer | Stack & Tools |
|---|---|
| Container Orchestration | Google Kubernetes Engine (GKE), kubectl, @kubernetes/client-node |
| Frontend | React, TypeScript, TailwindCSS, ShadCN UI |
| Backend APIs | Node.js, TypeScript, Express, Prisma ORM |
| Reverse Proxy | Nginx Ingress Controller |
| Containerization | Docker, Docker Hub |
| SDK | Python |
| Database | PostgreSQL (hosted on Neon) |
| Certificate Management | cert-manager, Let's Encrypt |
- All services are containerized using Docker and pushed to Docker Hub.
- Deployed on a GKE cluster using
DeploymentandServiceYAML manifests. - External traffic is routed using an Nginx Ingress Controller with HTTPS enabled via cert-manager and Let's Encrypt.
- Each service is exposed internally via Kubernetes services, and externally (if needed) via Ingress.
from sdk import Client
from sdk.pod import Pod
client = Client(api_key="YOUR_API_KEY")
pod = Pod(client, image="nginx:latest", ports=[80])
response = pod.create()
print(response)from sdk import Client
from sdk.function import function
client = Client(api_key="YOUR_API_KEY")
@function(client=client)
def test():
print("Hello from the function")
return "Hello World"
print(test())
res = test.remote()
if(res['success']):
print(res['result'])
else:
print(res['message'])
