Simple and open event logs for your next project.

Upstream is a simple logging platform for developers. View your events in a beautifully designed dashboard with powerful searching capabilities.

👋

7:33 am

hello, world!

🔗

7:33 am

webhook delivered

Endpoint/api/webhooks/stripe
Status200 OK
🚨

7:33 am

stripe: early fraud warning

Stripe has detected a potential fraud on your account.
{
  "id": "pi_3O1234567890abcdef",
  "object": "payment_intent",
  "amount": 4999,
  "currency": "usd",
  "status": "requires_action",
  "fraud_details": {
    "stripe_report": "fraudulent",
    "user_report": null
  }
}
🙅

7:33 am

user signed up

A new user has signed up for your service.
User ID1234567890abcdef
Emailuser@example.com
IP Address192.168.1.1
User AgentChrome/58.0.3029.110 Safari/537.3
🆕

10:00 am

user: account created

📧

10:05 am

user: email sent

10:10 am

user: email verified

{
  "id": "1234567890abcdef",
  "object": "user",
  "email": "user@example.com"
}

look. managing your most critical event in a project is not easy. every project needs an logs viewer, searching APIs, 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, they are extremely expensive, and not designed for small projects with critical events.

thats why i built this solution.

heres what it looks like.

import { Upstream } from "@uplabs/sdk"
const up = new Upstream("my_api_key")

up.events.log({
    title: "hello, world!",
    icon: "👋",
})

6 lines of code, and you can easily start logging critical events to our dashboard. heres what the event looks like.

👋

7:33 am

hello, world!

need to add more details to the event? no problem. here is the code to add fields, description, and events.

up.events.log({
    title: "hello, world!",
    icon: "👋",
    description: "this is a more detailed event",
    fields: [
        {
            name: "this is a field",
            value: "you can add some info here",
        },
        {
            name: "this is another field",
            value: "you can add some more info here",
        },
    ],
    events: [
        {
            content: "you can add some content here",
            icon: "📝",
            time: new Date().toISOString(),
        },
        {
            content: "another event",
            icon: "📄",
            time: new Date().toISOString(),
        },
    ],
})

now, the event is a dropdown!

👋

7:33 am

hello, world!

this is a more detailed event
this is a fieldyou can add some info here
this is another fieldyou can add some more info here
📝

10:00

you can add some content here

📄

10:05

another event

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.

🚨

7:33 am

sophisticated event with actions

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.

in case you still have questions:

thats it. go try it out!