# Rainlytics > Rainlytics is self-hosted web analytics for sites served by CloudFront. It runs inside one AWS account, reads the access logs the CDN already writes, and ships no third-party JavaScript to the pages it measures. There is no always-on infrastructure, and the data never leaves the account it was collected in. It is an npm package, @kensio/rainlytics. Each link below is the plain markdown of one page. Drop the `llms.txt` from a link for the page itself: https://rainlytics.com/visitors/llms.txt is the markdown behind https://rainlytics.com/visitors/. ## Documentation - [Collection-path abuse](https://rainlytics.com/abuse/llms.txt): How Rainlytics limits repeated beacon events and what abuse controls cost. - [Beacon events](https://rainlytics.com/beacon-events/llms.txt): Count browser events by name and page, with a cap on repeated events from one visitor. - [Beacon path](https://rainlytics.com/beacon-path/llms.txt): Return HTTP 204 for first-party event requests with a CloudFront Function. - [Browser beacon](https://rainlytics.com/beacon/llms.txt): The optional frontend module for SPA routes, custom events, Web Vitals and errors. - [Command line](https://rainlytics.com/command-line/llms.txt): Use AWS credentials to read summaries, reports, saved queries and ad-hoc SQL. - [Getting started](https://rainlytics.com/getting-started/llms.txt): Install Rainlytics, deploy its AWS resources and read the first stored report. - [What Rainlytics is](https://rainlytics.com/guides/what-rainlytics-is/llms.txt): How Rainlytics collects, stores, computes and serves analytics. - [JavaScript errors](https://rainlytics.com/javascript-errors/llms.txt): Counts uncaught exceptions and promise rejections by page and message. - [Log bucket](https://rainlytics.com/log-bucket/llms.txt): Store raw CloudFront access logs with retention and recovery controls. - [Log delivery](https://rainlytics.com/log-delivery/llms.txt): Send partitioned CloudFront standard logging v2 records to S3. - [Log table](https://rainlytics.com/log-table/llms.txt): Create the projected Glue table that Athena reads without a crawler. - [Query workgroup](https://rainlytics.com/query-workgroup/llms.txt): Limit Athena query scans and store their result objects. - [Query](https://rainlytics.com/query/llms.txt): Run ad-hoc SQL through the bounded Rainlytics Athena workgroup. - [Report notifications](https://rainlytics.com/report-notifications/llms.txt): Email selected calendar reports through Amazon SNS after the scheduled report job completes. - [Calendar reports](https://rainlytics.com/reports/llms.txt): Versioned JSON reports for closed days, weeks, months and years. - [Rollups](https://rainlytics.com/rollups/llms.txt): Read precomputed analytics from S3 and define custom Athena rollups. - [Searches](https://rainlytics.com/searches/llms.txt): Count terms submitted to one or more first-party search pages. - [Rollup summaries](https://rainlytics.com/summaries/llms.txt): The JSON format used for precomputed answers in S3. - [Summary schedule](https://rainlytics.com/summary-schedule/llms.txt): Precompute common questions and calendar reports with usage-priced AWS services. - [Counting visitors](https://rainlytics.com/visitors/llms.txt): How Rainlytics counts visitors from access logs with an identifier for each reporting period. - [Web Vitals](https://rainlytics.com/web-vitals/llms.txt): Measure page performance with browser Web Vitals and read their 75th percentiles.