A small tool to view real-world ActivityPub objects as JSON! Enter a URL
or username from Mastodon or a similar service below, and we'll send a
request with
the right
Accept
header
to the server to view the underlying object.
{
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://w3id.org/security/v1"
],
"attachment": [],
"attributedTo": "https://piefed.social/u/harrisonerd",
"audience": "https://programming.dev/c/python",
"cc": [],
"commentsEnabled": true,
"content": "<h3>MicroPie is a small and very fast Python web framework. It is designed with flexability and simplicity in mind. Check out the <a href=\"https://patx.github.io/micropie\" rel=\"nofollow ugc\" target=\"_blank\">website</a> or the <a href=\"https://github.com/patx/micropie\" rel=\"nofollow ugc\" target=\"_blank\">GitHub project</a>.</h3>\n<pre><code>\nfrom MicroPie import App \n\nclass MyApp(App): \n\n async def index(self): \n return 'Hello ASGI World!' \n\napp = MyApp() # Run with `uvicorn app:app` \n</code></pre>\n",
"id": "https://piefed.social/post/456278",
"language": {
"identifier": "en",
"name": "English"
},
"mediaType": "text/html",
"name": "MicroPie - \"ultra-micro\" ASGI web framework",
"published": "2025-02-04T22:40:41.450882+00:00",
"replies": [
{
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://w3id.org/security/v1"
],
"attributedTo": "https://programming.dev/u/logging_strict",
"audience": "https://programming.dev/c/python",
"cc": [
"https://programming.dev/c/python",
"https://programming.dev/u/logging_strict/followers"
],
"content": "<p>Thanks for the explanation.</p>\n",
"distinguished": false,
"id": "https://programming.dev/comment/14829293",
"inReplyTo": "https://piefed.social/comment/4614280",
"language": {
"identifier": "en",
"name": "English"
},
"mediaType": "text/html",
"published": "2025-02-07T02:36:15.071301+00:00",
"source": {
"content": "Thanks for the explanation.",
"mediaType": "text/markdown"
},
"to": [
"https://www.w3.org/ns/activitystreams#Public",
"https://piefed.social/u/harrisonerd"
],
"type": "Note"
},
{
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://w3id.org/security/v1"
],
"attributedTo": "https://piefed.social/u/harrisonerd",
"audience": "https://programming.dev/c/python",
"cc": [
"https://programming.dev/c/python",
"https://piefed.social/u/harrisonerd/followers"
],
"content": "<p>Uvicorn and nginx are two completely different things in your web stack. For production, you typically don't expose Uvicorn directly to the public. Instead, nginx receives all traffic, serves static assets efficiently, and forwards dynamic requests to Uvicorn. Uvicorn's website explains each components role in your stack:<br/>\n\"Using Nginx as a proxy in front of your Uvicorn processes may not be necessary, but is recommended for additional resilience. Nginx can deal with serving your static media and buffering slow requests, leaving your application servers free from load as much as possible. In managed environments such as Heroku, you won't typically need to configure Nginx, as your server processes will already be running behind load balancing proxies.\"</p>\n<p>The question is not \"What's the difference between running uvicorn vs nginx?\" But \"When should I use Nginx to deploy with Uvicorn?\" Hope this makes sense.</p>\n",
"distinguished": false,
"id": "https://piefed.social/comment/4614280",
"inReplyTo": "https://programming.dev/comment/14809645",
"language": {
"identifier": "en",
"name": "English"
},
"mediaType": "text/html",
"published": "2025-02-06T15:19:55.213249+00:00",
"source": {
"content": "Uvicorn and nginx are two completely different things in your web stack. For production, you typically don't expose Uvicorn directly to the public. Instead, nginx receives all traffic, serves static assets efficiently, and forwards dynamic requests to Uvicorn. Uvicorn's website explains each components role in your stack:\n\"Using Nginx as a proxy in front of your Uvicorn processes may not be necessary, but is recommended for additional resilience. Nginx can deal with serving your static media and buffering slow requests, leaving your application servers free from load as much as possible. In managed environments such as Heroku, you won't typically need to configure Nginx, as your server processes will already be running behind load balancing proxies.\"\n\nThe question is not \"What's the difference between running uvicorn vs nginx?\" But \"When should I use Nginx to deploy with Uvicorn?\" Hope this makes sense.",
"mediaType": "text/markdown"
},
"to": [
"https://www.w3.org/ns/activitystreams#Public",
"https://programming.dev/u/logging_strict"
],
"type": "Note"
},
{
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://w3id.org/security/v1"
],
"attributedTo": "https://programming.dev/u/logging_strict",
"audience": "https://programming.dev/c/python",
"cc": [
"https://programming.dev/c/python",
"https://programming.dev/u/logging_strict/followers"
],
"content": "<p>What's the difference between running uvicorn vs nginx?</p>\n<p>Yes could just do a web search, but would like to hear the OP's perspective</p>\n",
"distinguished": false,
"id": "https://programming.dev/comment/14809645",
"inReplyTo": "https://piefed.social/post/456278",
"language": {
"identifier": "en",
"name": "English"
},
"mediaType": "text/html",
"published": "2025-02-06T06:19:13.897732+00:00",
"source": {
"content": "What's the difference between running uvicorn vs nginx?\n\nYes could just do a web search, but would like to hear the OP's perspective",
"mediaType": "text/markdown"
},
"to": [
"https://www.w3.org/ns/activitystreams#Public",
"https://piefed.social/u/harrisonerd"
],
"type": "Note",
"updated": "2025-02-06T06:36:25.981364+00:00"
}
],
"sensitive": false,
"source": {
"content": "### MicroPie is a small and very fast Python web framework. It is designed with flexability and simplicity in mind. Check out the [website](https://patx.github.io/micropie) or the [GitHub project](https://github.com/patx/micropie). \r\n```python \r\n\r\nfrom MicroPie import App \r\n\r\nclass MyApp(App): \r\n\r\n async def index(self): \r\n return 'Hello ASGI World!' \r\n\r\napp = MyApp() # Run with `uvicorn app:app` \r\n```",
"mediaType": "text/markdown"
},
"stickied": false,
"tag": [
{
"href": "https://piefed.social/tag/python",
"name": "#python",
"type": "Hashtag"
},
{
"href": "https://piefed.social/tag/web",
"name": "#web",
"type": "Hashtag"
},
{
"href": "https://piefed.social/tag/framework",
"name": "#framework",
"type": "Hashtag"
},
{
"href": "https://piefed.social/tag/async",
"name": "#async",
"type": "Hashtag"
},
{
"href": "https://piefed.social/tag/asgi",
"name": "#asgi",
"type": "Hashtag"
},
{
"href": "https://piefed.social/tag/http",
"name": "#http",
"type": "Hashtag"
}
],
"to": [
"https://programming.dev/c/python",
"https://www.w3.org/ns/activitystreams#Public"
],
"type": "Page"
}