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 라이선스 적용 대상임.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요