Redprints CFP는 기존 상용 CFP 솔루션의 높은 비용과 제한적인 기능에 대한 불만, 그리고 Rails 환경에서 Inertia.js와 같은 새로운 기술을 실제 프로덕션 환경에서 검증하고자 하는 필요성에서 출발했습니다. 또한, EuRuKo 프로그램 위원회에서 맞춤형 CFP 앱을 사용했던 긍정적인 경험도 개발에 영향을 미쳤습니다. 그 결과, 제안서 제출부터 검토 워크플로우까지 모든 과정을 효율적으로 처리하며 Ruby on Rails 개발의 장점을 보여주는 시스템이 탄생했습니다.
Redprints CFP의 주요 기능은 다음과 같습니다.
-
제안서 제출: 발표자는 GitHub 및 Google과 같은 소셜 로그인을 통해 쉽게 가입할 수 있으며, 제출 양식은 유연하게 설정 가능합니다. 발표자는 초안을 저장하고 나중에 완료할 수 있습니다. 이 앱은 의도적으로 동일한 제안서를 여러 컨퍼런스에 재사용하는 것을 허용하지 않아, 발표자가 각 컨퍼런스에 맞는 타겟팅된 제안서를 작성하도록 권장합니다.
-
제안서 관리 및 검토: 주최자는 관리자 대시보드를 통해 평가 규칙 설정, 검토자 할당, 평가 진행 상황 추적 및 최종 결정을 포함한 전체 CFP 프로세스를 관리할 수 있습니다. 검토자별 제안서 배포 방식은 코드 수정을 통해 유연하게 변경할 수 있으며, 예를 들어 각 검토자가 무작위로 할당된 일부 제안서만 검토하도록 설정할 수 있습니다.
Redprints CFP는 간단한 커스터마이징을 염두에 두고 설계되었습니다. TailwindCSS 4와 OKLCH를 사용하여 색상 테마를 쉽게 조정할 수 있으며, 홈페이지는 React로 구축되어 있어 원하는 대로 UI를 자유롭게 변경할 수 있습니다. 코드 내의 FIXME
주석은 사용자가 커스터마이징해야 할 부분을 명확히 안내합니다.
이 애플리케이션의 기술적 특징은 다음과 같습니다.
-
Bolt vibes: Evil Martians는 Bolt.new를 사용하여 SF Ruby 웹사이트를 빠르게 개발했던 경험을 바탕으로, Rails 프로젝트에 Bolt의 빠른 UI 개발 방식을 적용하기 위해 Inertia.js와 React를 선택했습니다. 백엔드는 수작업으로, 프론트엔드는 ‘vibe-coding’ 방식으로 개발하여 약 10시간 만에 프로덕션 수준의 기능을 구현하는 놀라운 생산성을 보여주었습니다.
-
Bundlebun: 이 gem은 Bun 실행 파일을 제공하고 Rails의 Asset Pipeline에 통합하여 JavaScript 툴링 설정을 간소화하고 Bun의 빠른 속도를 Rails 앱에 적용합니다.
-
Avo: 내부 앱의 관리자 패널 개발에 Avo를 사용하여 개발 시간을 단축하고, 강력한 데이터 브라우징 기능(필터, 검색, 정렬 등)을 활용하여 효율적인 백오피스 관리를 가능하게 했습니다.
-
Form objects: 애플리케이션의 핵심 로직은 폼 객체를 중심으로 구축되었습니다. 폼 객체는 여러 모델의 데이터를 관리하고, 초안 및 최종 제출 로직을 처리하여 코드 유지보수성과 가독성을 향상시킵니다.
-
Page objects: SitePrism 페이지 객체를 시스템 테스트에 사용하여 테스트 코드의 유지보수성과 가독성을 높였습니다.
-
기타 도구: Lookbook (메일러 프리뷰), Litestream (SQLite 복제), Overmind, lefthook (개발 워크플로우), 그리고 Minitest를 RSpec으로 변환하는 규칙을 담은 CLAUDE.md 파일 등 다양한 도구와 gem을 활용하여 개발 효율성을 극대화했습니다.