프로젝트 소개

Cairn은 Laravel 애플리케이션 내에 웹 분석 기능을 직접 추가하는 Composer 패키지입니다. 설치는 단일 composer require와 php artisan migrate 명령으로 이루어지며, 이후 /cairn 경로에서 대시보드를 사용할 수 있습니다. 추적이 브라우저 태그가 아닌 애플리케이션 내부에서 실행되므로 라우트 이름, Eloquent 모델 및 인증된 사용자에 대한 보고가 가능합니다. 프라이버시 모델: 방문자는 24시간마다 새로운 랜덤 바이트로 재생성되는 솔트 해시(salted hash)로 식별되며, 이전 솔트는 파기됩니다. README에 명시된 바와 같이, 재방문자 집계, 다일간의 여정 및 멀티 터치 어트리뷰션, 기기 간 추적은 불가능합니다. 그 대가로 기본 설정에서는 방문자 기기에 아무것도 저장하지 않고, 데이터베이스, 로그 또는 백업에 IP 주소를 보관하지 않으며, 쿠키 동의 배너가 필요하지 않습니다. 분석 테이블이 유출되더라도 개인 정보가 아닌 수치 데이터만 노출됩니다. 기본적으로 꺼져 있는 두 가지 옵션 설정이 있는데, privacy.track_user_id는 로그인한 사용자에게 항목을 할당하고, privacy.durable_identity는 회전하는 해시를 쿠키로 대체합니다. 국가 보고 또한 기본적으로 비활성화되어 있으며, 요청당 제3자 조회가 아닌 cairn:geoip로 다운로드한 로컬 MaxMind GeoLite2 파일을 사용합니다. 대시보드 및 보고: 대시보드는 서버 렌더링된 Blade로 구성되어 JavaScript 없이 읽을 수 있으며, 필터링을 위한 링크와 서버에서 계산된 인라인 SVG 차트를 사용하고 모든 차트 아래에 테이블을 배치합니다. 기본적으로 18개의 위젯이 제공되며, 설정 한 줄로 3개를 더 추가할 수 있습니다. 위젯은 순위 테이블을 위한 디멘션 위젯을 포함하여 순서를 변경하거나 제거 또는 서브클래싱할 수 있는 클래스입니다. 대시보드, API, Pulse 카드 및 CSV 내보내기를 포함한 모든 표면은 하나의 쿼리 레이어를 거칩니다. 리포트 빌더는 라우트와 같은 디멘션별로 그룹화된 방문자 수, 페이지뷰, 이탈률 등의 지표를 지원하며 기간 비교, 정렬 및 제한 기능을 제공합니다. 파생 지표는 평균값이 아니라 표시되는 수준에서 저장된 구성 요소로부터 다시 계산되며, 롤업되지 않은 항목을 요청하면 원본 항목을 스캔하는 대신 예외를 발생시킵니다. 운영: 요구 사항은 PHP 8.2+, Laravel 12 또는 13, 그리고 MySQL 8+, MariaDB 10.6+ 또는 PostgreSQL 13+입니다. Redis는 선택 사항이며, Redis 기반의 모든 기능은 동일한 테스트 스위트로 검증된 동일한 정확도의 데이터베이스 기반 드라이버를 갖추고 있습니다. npm, Vite 또는 Node 빌드 단계가 필요하지 않습니다. Artisan 명령어로는 cairn:rollup, cairn:prune, cairn:work, cairn:partition, cairn:doctor, cairn:geoip, cairn:forget 및 cairn:export가 있습니다. Rollup과 prune은 이미 예약되어 있지 않은 한 자동으로 예약되며, cron이 없는 호스트에서는 소수의 요청이 이 작업을 수행합니다. 대시보드 라우트는 viewCairn 게이트로 보호되어 정의되기 전까지 로컬 환경 외부의 모든 접근을 차단합니다. 대시보드 드라이버는 blade(기본), livewire, inertia 및 none이 있으며, Livewire나 Inertia가 설치되지 않은 상태에서 이를 지정하면 Blade 대시보드가 제공됩니다. 선택 사항인 비콘(beacon)은 페이지 체류 시간, 스크롤 깊이, 화면 크기 및 Core Web Vitals를 측정합니다. 범위 및 라이선스: README에는 며칠에 걸친 사용자 추적, IP 주소 저장, 퍼널, 코호트 분석, 히트맵, 세션 리플레이, A/B 테스트, 라스트 클릭 이상의 어트리뷰션, 행동 기반 봇 탐지 등 의도적인 비목표(non-goals)가 나열되어 있습니다. 또한 Cairn이 배포 상태의 규정 준수 여부를 알려줄 수 없음을 명시합니다. 이 프로젝트는 1.0.0부터 시맨틱 버전 관리를 따르는 안정적인 상태로 설명되며, MIT 라이선스를 따릅니다.