Upstream is a simple logging platform for developers. View your events in a beautifully designed dashboard with powerful searching capabilities.
{
"id": "pi_3O1234567890abcdef",
"object": "payment_intent",
"amount": 4999,
"currency": "usd",
"status": "requires_action",
"fraud_details": {
"stripe_report": "fraudulent",
"user_report": null
}
}3 events. 0 secs.
{
"id": "1234567890abcdef",
"object": "user",
"email": "user@example.com"
}look. managing your SaSS events in a project is not easy. every project needs an logs viewer, searching APIs, ingestion endpoints, SDKs, and analytics. there are a lot of moving parts.
we've all been there before, its a pain to set up and maintain. this is why developers pay for logging platforms.
however, most platforms like datadog, seq, signoz, and many others aren't designed for your critical product events, which need to be viewed at a glance.
thats why i built this solution.
heres what it looks like.
import { Upstream } from "@uplabs/sdk"
const up = new Upstream({
apiKey: "YOUR_API_KEY",
})
up.events.log({
title: "hello, world!",
icon: "👋",
})
8 lines of code, and you can easily start logging critical events to our dashboard. heres what the event looks like.
or, are you selfhosting? no problem, just add the host variable to your initialisation function:
const up = new Upstream({
apiKey: "YOUR_API_KEY",
host: "https://your.upstream-instance.com"
})need to add more details to the event? no problem. here is the code to add fields, and a description.
up.events.log({
title: "hello, world!",
icon: "👋",
description: "this is a more detailed event",
fields: [
{
title: "this is a field",
value: "you can add some info here",
},
{
title: "this is another field",
value: "you can add some more info here",
},
],
})
now, the event is a dropdown!
what if you need to trigger workflows or have actions for your events? no problem. Upstream has those features too. Simply add a category to the event and setup webhooks in the dashboard.
oh, and theres event actions too.
or, do you need to add stack traces to events? do you need push notifications to send important events direct to your phone? Upstream can do that too.
await ups.events.ingest({
title: "This triggered a push notification!",
pushNotify: true,
contextId: "contextId-example-notifications",
contextStart: true
})
await ups.events.ingest({
title: "This triggered a notification inside the event!",
contextId: "contextId-example-notifications",
pushNotify: true,
data: {
"test": "This is a test with contextId and data.",
"contextId": "contextId-example-notifications",
"contextStart": true
},
actions: [
{
title: "View",
url: "https://upstream.dev",
variant: "primary"
},
{
title: "Dismiss",
url: "https://upstream.dev",
variant: "secondary"
}
]
})
now you have a stack trace inside of an event with push notifications to your devices!
{
"test": "This is a test with contextId and data.",
"contextId": "contextId-example-notifications",
"contextStart": true
}1 event. 0 secs.
and here is a full example with all event fields into 1 log entry.
checkout.session.completed delivered to /api/webhooks/stripe
{
"id": "wh_3O1234567890",
"type": "checkout.session.completed",
"livemode": false
}Signature verified before dispatch.
1 event. 0 secs.
New license issued to customer. Push notification sent.
4 events. 0 secs.
{
"id": "evt_1QyXfK2eZvKYlo2C",
"object": "checkout.session.completed",
"amount_total": 1900,
"currency": "usd",
"payment_status": "paid",
"customer_email": "linus@upstream.dev",
"metadata": {
"plan": "pro",
"interval": "monthly",
"coupon": "LAUNCH50"
},
"fraud_details": null
}we are just scratching the surface. Upstream also has features like query APIs, a mobile app with pager and push notification features, and much more.
i also built this to be completely open source, so you can go self-host it if you want.
if you want to see more, check out the playground for more information. documentation is coming soon once i finish writing it.
in case you still have questions:
thats it. go try it out!