> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sharedgraph.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Reference applications

> Porch and Lantern: two working examples on the pilot.

Porch and Lantern are two small applications built on SharedGraph. They run on the hosted pilot at [porch.sharedgraph.com](https://porch.sharedgraph.com) and [lantern.sharedgraph.com](https://lantern.sharedgraph.com). They exist to show what can be built, not to be the application people settle into.

Each is a client of a distinct registered application, and neither has privileged access. Both obey the same contract as any independent application: the same OAuth authorization, the same scopes, the same public and following reads, the same availability rules. What one of them can do, yours can do.

Both run on the live pilot network. Posts, replies, likes and follows made there are real public records, visible through every application on the network.

## What each application offers

**Porch** is an everyday client. It opens on the following feed, offers the public feed as a second view, and supports the complete basic social loop. Signed out it shows the public feed read-only.

**Lantern** is a public explorer. Signed out it shows the public feed, threads and profiles, and names the originating application on every post. Signed in it adds replying, following, a following filter and reporting.

| Capability | Porch | Lantern |
| - | - | - |
| Public feed, threads, profiles | Yes | Yes, signed out |
| Exact handle lookup | Yes | Yes |
| Following feed | Home | Filter, once signed in |
| Compose a root post | Yes | No |
| Reply | Yes | Yes |
| Edit and delete own posts | Yes | No |
| Like | Yes | No |
| Follow | Yes | Yes |
| Notification inbox | Yes | No |
| Report a post, person or app | Yes | Yes |
| Hide a person within the app | Yes | No |
| Originating application on posts | Shown | Shown prominently |

## The scopes each one requests

Each application requests only the scopes its capabilities need, so the two consent screens differ visibly. Porch requests:

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
openid profile offline_access read post:create post:edit post:delete like:write follow:write inbox:read inbox:write report:write
```

Lantern requests:

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
openid profile offline_access read post:create follow:write report:write
```

Lantern holds `post:create` for replies only, since a reply is a post with a parent. It never requests `like:write`, `post:edit`, `post:delete` or either inbox scope. See [scopes](/scopes) for what each one permits.

## Why Lantern omits likes, compose and an inbox

Lantern's missing controls are deliberate. An application may omit a capability without removing or privatising the canonical record. A like made in Porch is a network record; Lantern simply offers no control for it and the like remains when the same post is opened there. The omission demonstrates two of the contract's acceptance scenarios: follow in one application and see it in another, and like in one application while the other shows no like control.

Adding likes or compose to Lantern would reverse a recorded decision, so they are not defects to report.

## Walk through the cross-application scenarios

The sequence below takes about five minutes and leaves public posts on the pilot network.

1. Open [Lantern](https://lantern.sharedgraph.com) signed out. Read the public feed, open a thread and a profile, and note the originating application on each post. No account is needed for any of this.
2. Create a pilot account at [api.sharedgraph.com/signup](https://api.sharedgraph.com/signup). Choose a handle; it is fixed once chosen. Verify your email, then sign in.
3. Open [Porch](https://porch.sharedgraph.com) and select **Sign in**. The consent screen names Porch and lists the scopes above. Approve it.
4. In Porch, follow someone from the public feed, like one of their posts, and publish a root post of your own.
5. Open [Lantern](https://lantern.sharedgraph.com) and sign in. The consent screen names Lantern and lists a shorter scope set. The person you followed in Porch is already followed here, and the following filter shows them, with no second follow.
6. Open the post you liked in Porch. Lantern shows no like control. Return to Porch: the like is still there. Nothing left the network; one application chose not to show it.
7. Reply to your own root post from Lantern, then read the thread in Porch. The reply names Lantern as its originating application.
8. Sign out of one application. The other stays signed in, because each authorization grant is yours to manage separately. Your account controls and network blocks live on [api.sharedgraph.com/account](https://api.sharedgraph.com/account), independent of either application.

## The developer panel

Each application carries a collapsed **For developers** panel. It shows the application's name, the scopes the current session actually holds, and a link to this documentation. Signed out it says so, since reading public posts needs no authorization grant. Sign in to see the scopes you granted, and compare the two panels to see the difference between the applications' grants.

## Build your own

The reference applications are built on the same server-backed boundary as the [starter](/starter-guide): a confidential client that keeps credentials and tokens on the server, validates the session before each protected view, and never retries an authorized refusal anonymously. Clone the [starter repository](https://github.com/matjazv/sharedgraph-starter), [register your application](/registration) with the scopes it needs, and begin from there.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.