This sample application displays the five most recent commits from a set of GitHub repositories. The application gets the set of repositories from a table in a Postgresql database.
The application is written using Slight and uses the SQL and HTTP Client capabilities released in version 0.3.
PicoCSS is used for styling the HTML.
IMPORTANT This application is a demo app and is not intended to be run in a production environment. It is intended for demonstrating the features and capabilities of Slight only. Use at your own risk.
To run this sample application, at minimum you'll need:
If you don't have access to a postgresql database, you can run one locally using Docker Desktop and the postgres image. The README for the image has instructions for running the image, but does not expose the port to the host by default. Use the -p
flag to expose the port to the host, for example:
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres
You can also use a hosted database service, such as Azure Database for PostgreSQL.
IMPORTANT At this time, the demo application can't connect to a database that requires SSL. Make sure your database is configured to not prefer, but not require SSL.
You can run the Slight demo application directly on your development computer.
Clone the sample repo and navigate to the root directory:
git clone https://github.com/deislabs/spiderlightning-gh-latest-commits-demo.git
cd spiderlightning-gh-latest-commits-demo
Set the DB_URL
environment variable to your postgresql database connection string, then build and run the application:
export DB_URL="YOUR_CONNECTION_STRING"
cargo build --target wasm32-wasi
slight -c slightfile.toml run target/wasm32-wasi/debug/gh-latest-commits-demo.wasm
Navigate to localhost:3000/init_db
to initialize the database for the sample application.
Navigate to localhost:3000/show_feeds
to show the latest commits for the default sample repos added during database initialization.
Add or remove entries in the repos table and refresh localhost:3000/show_feeds
to see your changes. The newest entries in repos should be at the top.
NOTE: When adding entries to the repo table, use the format
gh-user/repo
. For example, the repository athttps://github.com/deislabs/containerd-wasm-shims
would have the entrydeislabs/containerd-wasm-shims
.
You can run the Slight demo application in a Kubernetes cluster.
In addition to Slight and a postgresql database, you'll need:
- Docker Desktop installed
- Access to a Kubernetes cluster that can run WebAssembly modules, such as k3d
- Access to a container registry, such as Dockerhub, ORAS registry, or Azure Container Registry
Clone the sample repo and navigate to the root directory:
git clone URL
cd gh-latest-commits-demo
Build an image for the sample and push it to your registry:
docker buildx build --platform=wasi/wasm -t REGISTRY_URL/gh-latest-commits-demo .
docker push REGISTRY_URL/gh-latest-commits-demo:latest
Update gh-latest-commits-demo.yaml
with registry URL:
spec:
runtimeClassName: wasmtime-slight
containers:
- name: gh-latest-commits-demo
image: REGISTRY_URL/gh-latest-commits-demo:latest
Create a secret with your database connection URL:
kubectl create secret generic gh-latest-commits-demo-database --from-literal=connection-url='YOUR_CONNECTION_STRING'
Run the application in Kubernetes using gh-latest-commits-demo.yaml
:
kubectl apply -f gh-latest-commits-demo.yaml
Navigate to DEMO_APP_IP/init_db
to initialize the database for the sample application.
Navigate to DEMO_APP_IP/show_feeds
to show the latest commits for the default sample repos added during database initialization.
Add or remove entries in the repos table and refresh DEMO_APP_IP/show_feeds
to see your changes. The newest entries in repos should be at the top.
NOTE: When adding entries to the repo table, use the format
gh-user/repo
. For example, the repository athttps://github.com/deislabs/containerd-wasm-shims
would have the entrydeislabs/containerd-wasm-shims
.