Tired of GUI builders? I made a code-first alternative to Retool

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

백엔드 개발자, GUI 빌더 사용 시 불편함을 겪는 개발자

핵심 요약

  • Sourcetool은 백엔드 코드에서 직접 UI를 정의할 수 있는 코드 중심 접근 방식을 제공
  • WebSocket 기반 실시간 통신으로 백엔드와 프론트엔드를 연결
  • Git-Friendly, 타입 안전, AI와의 시너지를 통한 개발 효율성 극대화

섹션별 세부 요약

1. GUI 빌더의 한계

  • 컴포넌트 이동 시 연결 오류 발생
  • Pull Request 리뷰 시 변경 사항 확인 어려움
  • 새로운 팀원 교육 시간 소요
  • AI 도구가 GUI 기반 설정을 지원하지 않음

2. Sourcetool의 접근 방식

  • Go 언어 기반으로 UI 정의 가능 (예: ui.Markdown("## Users"))
  • 별도 프론트엔드 코드, 레포지토리, 빌드 설정 필요 없음
  • 백엔드와 프론트엔드 코드 통합

3. 아키텍처 구성

  • 백엔드 서버: Go 코드 실행
  • Sourcetool 서버: 인증 처리 및 WebSocket 브릿지 역할
  • 유저 브라우저: UI 렌더링
  • WebSocket을 통해 사용자 인터랙션 실시간 처리

4. AI 통합 사례

  • AI 도구가 직접 폼 생성, 검증 추가, 분석 대시보드 생성 가능
  • 코드 기반으로 AI 가이드 없이 작업 가능

5. 주요 이점

  • Git-Friendly: 변경 이력 추적 가능
  • 타입 안전: 컴파일 시 오류 검출
  • IDE, 리뷰 워크플로우 활용: 기존 도구와 호환
  • AI-Friendly: AI 도구와 직접 협업 가능

6. 지원 기술 스택

  • Go (TypeScript, Python SDK 개발 중)
  • Apache 2.0 라이선스로 오픈소스 제공 (자체 호스팅 가능)

7. 예제 코드 (폼 생성)

func createUserPage(ui sourcetool.UIBuilder) error {
    formUI, submitted := ui.Form("Create", form.WithClearOnSubmit(true))
    name := formUI.TextInput("Name", textinput.WithRequired(true))
    email := formUI.TextInput("Email", textinput.WithRequired(true))
    if submitted {
        _ = createUser(name, email)
        return nil
    }
}

결론

Sourcetool은 GUI 빌더 대신 코드 중심의 UI 개발을 통해 백엔드 개발자에게 실시간 UI, Git 통합, AI 협업 가능성을 제공합니다. Go 기반으로 오픈소스이며, 자체 호스팅이 가능합니다.