Saved Snippets (8)

Fetch with Error Handling

TypeScript
async function fetchData<T>(url: string): Promise<T> {
  const res = await fetch(url)
  if (!res.ok) throw new Error(`HTTP ${res.status}`)
  return res.json()
}
fetchasyncerror

Debounce Function

TypeScript
function debounce<T extends (...args: any[]) => void>(
  fn: T, ms: number
): (...args: Parameters<T>) => void {
  let id: ReturnType<typeof setTimeout>
  return (...args) => {
    clearTimeout(id)
    id = setTimeout(() => fn(...args), ms)
  }
}
utilitydebounceperformance

Docker Compose -- Postgres

YAML
services:
  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: app
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: secret
    ports:
      - "5432:5432"
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:
dockerpostgresdatabase

Git Rebase Workflow

Shell
git fetch origin
git checkout feature-branch
git rebase origin/main
# resolve conflicts if needed
git add .
git rebase --continue
git push --force-with-lease
gitrebaseworkflow

React Custom Hook

TypeScript
function useLocalStorage<T>(key: string, initial: T) {
  const [value, setValue] = useState<T>(() => {
    const stored = localStorage.getItem(key)
    return stored ? JSON.parse(stored) : initial
  })
  useEffect(() => {
    localStorage.setItem(key, JSON.stringify(value))
  }, [key, value])
  return [value, setValue] as const
}
reacthookstorage

Nginx Reverse Proxy

Nginx
server {
  listen 80;
  server_name api.example.com;

  location / {
    proxy_pass http://localhost:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}
nginxproxyserver

Deploy to Production

Shell
#!/bin/bash
set -euo pipefail

echo "Building..."
npm run build

echo "Running tests..."
npm test

echo "Deploying..."
vercel --prod --yes

echo "Done!"
deployvercelci

Zod Schema Validation

TypeScript
const UserSchema = z.object({
  name: z.string().min(2).max(50),
  email: z.string().email(),
  role: z.enum(["admin", "user"]),
  createdAt: z.date().default(() => new Date()),
})

type User = z.infer<typeof UserSchema>
zodvalidationschema
Tabnavigate/searchEscback
v1.4.2
Cmd+KQuick launch
← Gallery