Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/christian-fei/minimal-analytics
Read more at https://cri.dev/posts/2021-04-28-fullstack-nodejs-preact-minimal-web-analytics-introduction/
https://github.com/christian-fei/minimal-analytics
Last synced: about 1 month ago
JSON representation
Read more at https://cri.dev/posts/2021-04-28-fullstack-nodejs-preact-minimal-web-analytics-introduction/
- Host: GitHub
- URL: https://github.com/christian-fei/minimal-analytics
- Owner: christian-fei
- License: mit
- Created: 2021-04-11T15:54:12.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2024-10-21T10:46:07.000Z (3 months ago)
- Last Synced: 2024-10-28T04:24:10.824Z (3 months ago)
- Language: JavaScript
- Homepage: https://s.cri.dev
- Size: 1.75 MB
- Stars: 59
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome - christian-fei/minimal-analytics - Read more at https://cri.dev/posts/2021-04-28-fullstack-nodejs-preact-minimal-web-analytics-introduction/ (JavaScript)
README
# minimal-analytics
[![minimal analytics dashboard](https://github.com/christian-fei/minimal-analytics/blob/main/.github/assets/dashboard.png?raw=true)](https://cri.dev/posts/2021-04-28-fullstack-nodejs-preact-minimal-web-analytics-introduction/)
Read more about the project at [cri.dev - "Making Minimal Analytics"](https://cri.dev/posts/2021-04-28-fullstack-nodejs-preact-minimal-web-analytics-introduction/)
See [Minimal Analytics in action](https://s.cri.dev)
# Table of contents
- [requirements](#requirements)
- [how to self-host](#how-to-self-host)
- [local installation](#local-installation)
- [tests](#tests)# requirements
- node.js 16+ (16.16.0 lts recommended)
# how to self-host
## 1. clone the repo
```
git clone https://github.com/christian-fei/minimal-analytics.git
```## 2. create a production configuration for docker-compose
```
cp docker-compose.yml docker-compose.prod.yml
```change the environment variable `STATS_BASE_URL` to your own domain for minimal-analytics, e.g. `https://stats.example.com`
change the environment variable `SITE_BASE_URL` to your own domain for the site you want to track, e.g. `https://example.com`
## 3. run the service
run the `update.sh` script to start the server
## 4. include `client.js` in your site
replace `STATS_BASE_URL` with your own domain for minimal-analytics, e.g. `https://stats.example.com` and include the following in your site
```
```
## optional: 5. configure nginx
configure the nginx reverse proxy like so:
```
sudo cp nginx.conf /etc/nginx/sites-available/minimal_analytics
```changing the placeholder `YOUR_STATS_DOMAIN` to e.g. `stats.example.com`, in the `/etc/nginx/sites-available/minimal_analytics` file.
then link to the enabled sites
```
sudo ln -s /etc/nginx/sites-available/minimal_analytics /etc/nginx/sites-enabled/minimal_analytics
```and reload nginx
```
sudo systemctl reload nginx
# or
sudo nginx -s reload
```# local installation
install the server dependencies with
```
npm i
```and then install the client dependencies in the `dashboard` directory
```
cd dashboard
npm i
```## build client
the client uses `parcel` as a asset bundler.
you can run a build of the dashboard, the output will be in `dashboard/dist` and served from `http://127.0.0.1:8080` when starting the server
```
cd dashboard
npm run build
```# start minimal-analytics - with npm
Run `touch data/data.ljson` to create an empty file used to keep track of pageviews.
Set the environment variables `STATS_BASE_URL` and `SITE_BASE_URL` and run `npm start`, e.g.
```bash
SITE_BASE_URL=http://127.0.0.1:8081 STATS_BASE_URL=http://127.0.0.1:8080 npm start
```alternatively, using [direnv](https://direnv.net/), create a `.env` file by copying the example file: `cp .env.example .env` and configure the variables.
The configured site to track is running on `http://127.0.0.1:8081`, described by `SITE_BASE_URL`
The minimal-analytics server runs at `STATS_BASE_URL` `http://127.0.0.1:8080`
# start minimal-analytics - with docker-compose
configure the environment variables in `docker-compose.yml` regarding `STATS_BASE_URL` and `SITE_BASE_URL`.
`STATS_BASE_URL` is the location where the minimal-analytics is running, e.g. `https://stats.example.com`
`SITE_BASE_URL` is the location of the site you want to allow tracking, e.g. `https://example.com`
Run the service with
```
docker-compose up -d --build --remove-orphans --renew-anon-volumes
```# tests
Run `touch data/test.ljson` to create an empty file used for tests
Run `npm t` in the root of the project to run the server tests.
If you want to run the client dashboard tests, `npm t` in the `dashboard` directory