페이지를 직접 방문하면 컴파일러가 서버에서 실행되고, 실제 HTML 소스와 원본 .forge 소스를 함께 제공함
페이지 간 이동에서는 service worker가 /notes 같은 네트워크 요청을 가로채고 /notes.forge 소스를 가져와 브라우저에서 컴파일러를 실행함
이 구조로 크롤러와 WebMentions에는 서버 사이드 렌더링을 제공하고, 페이지 이동에는 SPA 같은 클라이언트 사이드 렌더링을 제공함
상태는 state, localStorage, 서버의 append-only log에 저장 가능함
예를 들어 “좋아요” 버튼은 클릭 시 "1" 값을 "likes:demo" 토픽에 추가함
: like-button ( -- )
"❤" "do-like" on-click ;
: do-like
"1" "likes:demo" log-append ;
: body
"I liked this!" p
like-button ;
서버 로그는 한 줄에 JSON 문서 하나를 저장하는 JSONL 형식임
폼은 다른 .forge 페이지로 제출할 수 있고, 제출된 내용은 대상 페이지의 스택에 들어감
백엔드 저장은 대상 페이지가 log-append를 사용해 처리해야 함
Forge는 실제 사이트 적용이 확정된 도구라기보다, 작은 스택 기반 웹 언어의 가능성을 탐색하는 단계임