TL;DR

  • Sayrud는 프로젝트와 작업, 공유 데이터를 정리하는 자체 호스팅형 협업 스프레드시트 데이터베이스로, 여러 보기와 실시간 공동 편집을 제공함.
  • 같은 테이블에서 그리드·칸반·갤러리·폼 보기를 사용하고, 텍스트·숫자·날짜·선택·체크박스·첨부 파일·수식 필드를 구성할 수 있음.
  • 보기별 필터·정렬·그룹화·표시 필드와 관리자 정의 JavaScript 필드 바로 가기를 지원하며, 참조 필드가 바뀌면 바로 가기가 자동 재생성됨.
  • Docker Compose v2로 Sayrud와 PostgreSQL, Redis를 함께 실행하며, 데이터는 postgres_data 볼륨에 저장됨.
  • 개발에는 Go 1.27, Node.js 22.13 이상, pnpm 10이 필요하고, 프런트엔드는 Vue와 TypeScript로 구성되며 라이선스는 AGPL-3.0임.

기능

  • Sayrud는 프로젝트와 작업, 공유 데이터를 정리하기 위한 자체 호스팅형 협업 스프레드시트 데이터베이스임.
  • 같은 테이블에서 그리드, 칸반, 갤러리, 폼 보기를 제공함.
  • 텍스트, 숫자, 날짜, 단일 선택, 다중 선택, 체크박스, 첨부 파일, 수식 필드를 지원함.
  • 관리자가 공개하는 사용자 지정 JavaScript 필드 바로 가기를 제공하며, 참조 필드가 바뀌면 자동으로 다시 생성됨.
  • 각 보기마다 필터, 정렬, 그룹화, 표시 필드를 별도로 설정할 수 있음.
  • 실시간 공동 편집과 온라인 사용자 및 편집 중인 셀 표시를 지원함.
  • 셀 복사 및 붙여넣기, 레코드 일괄 편집, 변경 실행 취소와 다시 실행을 지원함.
  • GitHub, Google, Microsoft, Keycloak 등의 공급자 템플릿을 포함해 OAuth2, OIDC, SAML 싱글 사인온과 LDAP 인증을 구성할 수 있음.
  • 인터페이스와 시스템 메시지는 10개 언어로 현지화됨.
  • 라이트, 다크, 시스템 테마를 제공함.
  • OpenAPI 명세를 포함한 REST API를 제공함.

배포

  • Docker와 Docker Compose v2가 필요하며, 이미지에는 프런트엔드와 백엔드가 함께 포함됨.
  • Compose로 Sayrud, PostgreSQL, Redis를 함께 실행함.
  • 저장소는 https://github.com/sayrud/sayrud 에서 복제하고, 예제 설정 파일 config/sayrud.example.yaml을 config/sayrud.yaml로 복사함.
  • config/sayrud.yaml에서 PostgreSQL 호스트를 postgres, Redis 주소를 redis:6379로 설정함.
  • 프로덕션에서는 postgres.dsn의 비밀번호와 docker-compose.yaml의 POSTGRES_PASSWORD를 같은 값으로 변경해야 함. 기본 비밀번호 change-me는 로컬 용도이며, Compose는 config/sayrud.yaml을 읽기 전용으로 마운트함.
  • docker compose up -d로 서비스를 시작하고 http://localhost:2830 에서 이메일과 비밀번호로 가입함. 가장 먼저 등록한 계정이 시스템 관리자가 됨.
  • 데이터는 postgres_data 볼륨에 저장됨.
  • 업데이트는 docker compose pull을 실행한 뒤 docker compose up -d를 실행하는 방식임.

기여

  • 버그 보고와 풀 리퀘스트를 받으며, 버그 보고에는 재현 단계를 포함하고 각 풀 리퀘스트는 하나의 변경 사항에 집중해야 함.
  • 개발 환경에는 Go 1.27, Node.js 22.13 이상, pnpm 10이 필요함. Go 백엔드는 cmd/와 internal/에, Vue 및 TypeScript 프런트엔드는 frontend/에 위치함.
  • 개발을 시작할 때 PostgreSQL과 Redis만 Compose로 실행하고 로컬 설정 파일을 복사함. Go 명령을 실행하기 전에 프런트엔드를 한 번 빌드해야 함.
  • 프런트엔드 의존성을 고정된 잠금 파일 기준으로 설치하고 빌드한 뒤, go run ./cmd/sayrud-server로 서버를 실행함.
  • docker-compose.yaml에서 데이터베이스 초기화 비밀번호를 변경하면 config/sayrud.yaml의 PostgreSQL 연결 비밀번호도 같은 값으로 설정해야 함. Compose 애플리케이션이 이미 포트 2830을 사용 중이면 docker compose stop sayrud로 Sayrud를 중지함.
  • 별도 터미널에서 pnpm --dir frontend dev를 실행하고 http://localhost:5173 에 접속함. Vite는 API와 WebSocket 요청을 백엔드로 프록시함.
  • 프로덕션 빌드는 go:embed를 사용해 frontend/dist를 포함함.
  • 변경 사항을 제출하기 전에 pnpm --dir frontend lint, pnpm --dir frontend test, pnpm --dir frontend build, go test ./...를 실행함.
  • API 정의를 변경하면 bash scripts/generate.sh를 실행해 OpenAPI 파일과 프런트엔드 클라이언트를 갱신함.

라이선스

  • AGPL-3.0 라이선스 적용 대상임.