Skip to content

Instantly share code, notes, and snippets.

View mosch's full-sized avatar
🍉
Yummi!

Moritz mosch

🍉
Yummi!
View GitHub Profile

Setting up your Zudoku dev portal with a public landing page

Why this matters

Right now your portal redirects every visitor straight into the auth provider's login screen because there's no public route. That's a rough first impression — visitors land on a screen that says "sign in" without any explanation of what they're signing into. A small structural change fixes that:

  1. Public landing page at / — explains what the portal is, with a "Sign in" CTA.
  2. Everything else protected — docs, API references, etc. are gated behind protectedRoutes.

This way, unauthenticated visitors get a real homepage, and clicking "Sign in" (or any protected link) sends them through your auth provider with a return URL back to the page they wanted. We're also shipping a related fix soon (PR #2398) that removes an extra "login or register?" dialog and goes straight to the auth provider — together with the homepage, this gives a much cleaner flow.

import type { ZudokuConfig } from "zudoku";
/**
* Developer Portal Configuration
* For more information, see:
* https://zuplo.com/docs/dev-portal/zudoku/configuration/overview
*/
const config: ZudokuConfig = {
site: {
title: "My Developer Portal",
{
"openapi": "3.1.0",
"info": {
"version": "1.0.0",
"title": "My Zuplo API"
},
"paths": {
"/todos": {
"get": {
"summary": "Get all todos",
<Analytics name="add-compain" name={compainName}>
<Button type="submit" />
</Analytics?
@mosch
mosch / zuplo.jws
Created March 20, 2025 11:59
zuplo.jws
eyJhbGciOiJFUzI1NiJ9.eyJpc3N1ZXIiOiJodHRwczovL2V4YW1wbGUub3JnIiwienVwbG9BY2NvdW50IjoibXktenVwbG8tYWNjb3VudC1pZCIsImJ1Y2tldElkIjoiYnVja2V0LTEyMzQiLCJjcmVhdGVkQXQiOiIyMDI1LTAzLTIwVDExOjM2OjEyLjc5MFoifQ.DHV7iQSAZIAeAS6hN0J6Pp2WmjhJCBNbR6aG4vJHfsOJ_MaigQxzKh2a7tnt_GPmMdDDU1JCdezAWQm1XS8YQw
@mosch
mosch / code.py
Created April 7, 2023 11:51 — forked from mschwld/code.py
from keybow_hardware.pim56x import PIM56X as Hardware
from keybow2040 import Keybow2040
import supervisor
import time
import usb_cdc
keybow = Keybow2040(Hardware())
keys = keybow.keys
uart = usb_cdc.serials[1]
@mosch
mosch / repository.ts
Created April 3, 2022 08:35
Cloudflare Typed Repository with Prefixa
class RepositoryNamespace<Entity = string, Metadata = {}> {
private readonly ns: string
private readonly kv: KVNamespace
constructor(kv: KVNamespace, namespace: string) {
this.ns = namespace
this.kv = kv
}
put(key: string, entity: Entity) {

Keybase proof

I hereby claim:

  • I am mosch on github.
  • I am mosch (https://keybase.io/mosch) on keybase.
  • I have a public key whose fingerprint is 6DDD 0155 3F01 A29C 0ED5 6A6D 4611 B83B 828A 0AE0

To claim this, I am signing this object: