Static apps. Real sessions.

ohmesh

정적 앱에 로그인과 사용자별 JSON 저장소를 붙이는 작은 백엔드입니다. 앱은 화면에 집중하고, OAuth 세션과 데이터 스코핑은 ohmesh가 맡습니다.

OAuth login HttpOnly session Scoped JSON CRUD
정적 앱 인터페이스가 중앙 API 서비스와 연결된 노트북 화면
정적 앱 와이어프레임을 작업하는 개발자 책상

Why ohmesh

정적 앱은 쉬운데, 로그인부터 복잡해집니다

GitHub Pages나 커스텀 도메인에 올린 앱도 사용자 데이터가 필요해지는 순간이 옵니다. 그때마다 OAuth callback, 쿠키, CORS, 사용자별 데이터 격리를 새로 만들 필요는 없습니다.

  • 앱별 허용 도메인과 redirect URL을 검증합니다.
  • 앱 전용 HttpOnly 쿠키로 세션을 유지합니다.
  • 레코드는 앱과 현재 사용자 세션 기준으로만 보입니다.

How it works

앱 slug 하나로 이어지는 로그인 흐름

사용자는 정적 앱에서 시작해 ohmesh 로그인 페이지를 거친 뒤 다시 앱으로 돌아옵니다. 그 다음부터 앱은 쿠키가 포함된 요청으로 인증된 ohmesh API를 호출합니다.

앱에서 로그인 클릭

사용자 앱은 ohmesh의 OAuth 시작 URL로 이동합니다. 앱 slug와 돌아올 redirect URL을 함께 보냅니다.

/login?app=notes&redirect_url={앱_복귀_URL}

ohmesh가 인증 처리

ohmesh는 앱 전용 로그인 페이지와 GitHub/Google 로그인을 처리하고, 성공하면 앱별 세션 쿠키를 발급합니다.

Set-Cookie: ohmesh_session_app_...
Location: {앱_복귀_URL}

앱이 API 호출

앱은 쿠키가 포함되도록 요청하고, ohmesh는 세션에 맞는 사용자 데이터만 응답합니다.

fetch("/auth/me?app=notes", {
  credentials: "include"
})
노트북과 휴대폰 사이에 안전한 로그인 흐름이 이어지는 화면

Core features

로그인, 세션, 사용자별 JSON 저장소까지 한 번에

OAuth 로그인

GitHub/Google OAuth 시작과 callback 처리를 ohmesh가 맡습니다.

앱별 세션

앱 전용 HttpOnly 쿠키로 정적 앱의 로그인 상태를 유지합니다.

도메인 검증

등록된 앱 도메인과 redirect URL만 허용해 복귀 흐름을 제한합니다.

JSON CRUD

사용자와 앱 범위로 격리된 JSON 레코드를 SQLite에 저장합니다.

사용자별 JSON 데이터 저장소를 추상적으로 보여주는 모니터 화면
여러 정적 앱 화면이 하나의 작은 백엔드 허브에 연결된 장면

Use cases

작은 앱들이 같은 인증과 저장소를 공유합니다

노트, 투두, 북마크, 내부 대시보드처럼 사용자별 상태가 필요한 정적 앱에 잘 맞습니다. 각 앱은 slug와 도메인을 등록하고 필요한 JSON 레코드만 읽고 씁니다.

Notes Tasks Dashboards Bookmarks Forms

Quick start

프론트엔드에서는 쿠키를 포함해 호출하면 됩니다

await fetch("https://ohmesh.jjgo.io/auth/me?app=notes", {
  credentials: "include"
})
await fetch("https://ohmesh.jjgo.io/api/apps/notes/records", {
  method: "POST",
  credentials: "include",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    type: "note",
    data: { title: "Hello", done: false }
  })
})
OAuth access token, refresh token, raw session token은 API 응답에 반환하지 않습니다.
가벼운 웹 서비스를 위한 작은 배포 장비와 노트북

정적 앱에 작은 백엔드를 붙여보세요

앱을 등록하고 redirect URL을 연결하면, 로그인과 사용자별 저장소를 바로 사용할 수 있습니다.