You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* First start at turborepo
* Remove temp turbo files, fix public dir
* Fix gitignore
* Add tracker subrepo
* Move typescript to root package
* Move prettier to root project
* Empty tsconfig
* Copy dist/tracker.js to server /public dir
* Fix tests, precommit hooks
* Add deploy task
* Run single turbo run command on precommit
* Add playwright tests for tracker script
* Add test to verify request to /collect
* Remove example tests
* Test asserts query string is good
* Remove tmp files
* Attempt to fix GH actions
* GH action fix attempt #2
* Add wrangler to root package.json
* Update package-lock
* Add "preview" turbo command, edit README w/ new turbo commands
* Convert tracker to typescript
* Get tracker tests into folders (get ready for multiple tests)
* Rename tracker.js to reporter.js
* Add missing /reporter dir
* Add data-site-id initialization method
* Update README for simplified initialization method
* Rename workspaces to packages
* Rename test file to better mirror 01_legacyInit
* Add eslint to reporter package
* Typecheck needs to build first
* Rollback newly introduced API methods (unnecessary)
* Update typescript
* Same typescript version in both packages
* Update package lock
* Rename reporter back to tracker
* Update eslint typescript tooling to suppress warnings
* Update turbo dependencies
Copy file name to clipboardexpand all lines: README.md
+21-31
Original file line number
Diff line number
Diff line change
@@ -22,52 +22,42 @@ If you don't have one already, [create a Cloudflare account here](https://dash.c
22
22
1. Enable [Cloudflare Analytics Engine beta](https://developers.cloudflare.com/analytics/analytics-engine/get-started/) for your account ([screenshot](https://github.com/benvinegar/counterscale/assets/4562878/ad1b5712-2344-4489-a684-685b876635d1))
23
23
1. If this is your first time using Workers, you have to create a Worker before you can enable the Analytics Engine. Navigate to Workers & Pages > Overview, click the "Create Worker" button ([screenshot](./docs/create-worker.png)) to create a "Hello World" worker (it doesn't matter what you name this Worker as you can delete it later).
24
24
1. Create a [Cloudflare API token](https://developers.cloudflare.com/fundamentals/api/get-started/create-token/). This token needs `Account.Account Analytics` permissions at a minimum ([screenshot](./docs/api-token.png)).
25
-
*_WARNING: Keep this window open or copy your API token somewhere safe (e.g. a password manager), because if you close this window you will not be able to access this API token again and have to start over._
25
+
-_WARNING: Keep this window open or copy your API token somewhere safe (e.g. a password manager), because if you close this window you will not be able to access this API token again and have to start over._
26
26
27
27
### Deploy Counterscale
28
28
29
29
1. Download the [latest Counterscale release](https://github.com/benvinegar/counterscale/releases/latest) (or clone the repository) and extract the source files to a folder.
30
30
1. With your terminal, navigate to the folder containing the source files.
31
31
1. Run `npm install`
32
32
1. Run `npx wrangler pages project create counterscale` and create a new Pages project.
33
-
1. You will be prompted to enter the "production branch name". Just use the default provided (e.g. "main" or "production").
34
-
*_NOTE: If this is your first time invoking `wrangler` on the terminal, you will be prompted to sign into your Cloudflare account._
33
+
1. You will be prompted to enter the "production branch name". Just use the default provided.
34
+
-_NOTE: If this is your first time invoking `wrangler` on the terminal, you will be prompted to sign into your Cloudflare account._
35
35
1. Run `npx wrangler pages secret put CF_BEARER_TOKEN` → when prompted, paste the API token you created
36
36
1. Run `npx wrangler pages secret put CF_ACCOUNT_ID` → when prompted, paste your Cloudflare Account ID
37
-
* Find your account ID by visiting Workers and Pages > Overview. It is displayed on the right hand side of the screen.
38
-
1. Run `npm run deploy` – this will do several things:
37
+
- Find your account ID by visiting Workers and Pages > Overview. It is displayed on the right hand side of the screen.
38
+
1. Run `npx turbo deploy` – this will do several things:
39
39
1. Create a new Analytics Engine dataset, called `metricsDataset`
40
40
1. Deploy the site and give you the deployment URL.
41
41
1. The site should now be deployed. Visit `https://{subdomain-emitted-from-npm-run-deploy}.pages.dev`.
42
-
* NOTE: _It may take take a few minutes before the subdomain becomes live._
42
+
- NOTE: _It may take take a few minutes before the subdomain becomes live._
43
43
44
-
### Install the Tracker Script on Your Website(s)
44
+
### Install the Tracking Script on Your Website(s)
45
45
46
46
When Counterscale is deployed, it makes `tracker.js` available at the URL you deployed to:
Be sure to replace `your-unique-site-id` with a unique string/slug representing your web property. Use a unique site ID for each property you place the tracking script on.
70
-
71
61
## Troubleshooting
72
62
73
63
If the website is not immediately available (e.g. "Secure Connection Failed"), it could be because Cloudflare has not yet activated your subdomain (yoursubdomain.workers.dev). This process can take a minute; you can check in on the progress by visiting the newly created worker in your Cloudflare dashboard (Workers & Pages → counterscale).
@@ -80,16 +70,16 @@ The deployment URL can always be changed to go behind a custom domain you own. [
80
70
81
71
### Config
82
72
83
-
To get started, in the project root, copy `.dev.vars.example` to `.dev.vars`.
73
+
To get started, in the `packages/server` folder, copy `.dev.vars.example` to `.dev.vars`.
84
74
85
75
Open `.dev.vars` and enter the same values for `CF_BEARER_TOKEN` and `CF_ACCOUNT_ID` you used earlier.
86
76
87
77
### Running the Server
88
78
89
79
Counterscale is built on Remix and Cloudflare Workers. In development, you have two options:
90
80
91
-
1.`npm run dev` → This runs the Vite development server in Node.js. This server will automatically rebuild files when you change them, but it does not best reflect Cloudflare's serverless platform.
92
-
2.`npm run preview` → This runs Cloudflare's Miniflare server with a build of the Remix files. This closer matches the deployment environment, but does not (yet) automatically rebuild your app.
81
+
1.`npx turbo dev` → This runs the Vite development server in Node.js. This server will automatically rebuild files when you change them, but it does not best reflect Cloudflare's serverless platform.
82
+
2.`npx turbo preview` → This runs Cloudflare's Miniflare server with a build of the Remix files. This closer matches the deployment environment, but does not (yet) automatically rebuild your app.
93
83
94
84
## Notes
95
85
@@ -99,8 +89,8 @@ There is only one "database": the Cloudflare Analytics Engine dataset, which is
99
89
100
90
Right now there is no local "test" database. This means in local development:
101
91
102
-
-Writes will no-op (no hits will be recorded)
103
-
-Reads will be read from the production Analaytics Engine dataset (local development shows production data)
92
+
- Writes will no-op (no hits will be recorded)
93
+
- Reads will be read from the production Analaytics Engine dataset (local development shows production data)
104
94
105
95
### Sampling
106
96
@@ -116,10 +106,10 @@ The primary goal of Counterscale is to be super easy to self-host and maintain.
116
106
117
107
To achieve that:
118
108
119
-
-There should be no application state outside of CF Analytics Engine
120
-
-e.g. no additional relational database like MySQL, PostgreSQL, etc.
121
-
-That means no `users` table, no `sites` table, etc.
122
-
-This also means retention will be limited by what CF Analytics Engine provides. While it could be possible to stand up a "hit counter" for long-lived data (e.g. years), that would mean another database, which we will not pursue.
123
-
-We prioritize backwards compatibility
124
-
-New `metricsDataset` columns can be added, but old columns cannot be removed or renamed (they can however, be "forgotten").
125
-
-That also means it's okay if a feature only works during a period where the data is active.
109
+
- There should be no application state outside of CF Analytics Engine
110
+
- e.g. no additional relational database like MySQL, PostgreSQL, etc.
111
+
- That means no `users` table, no `sites` table, etc.
112
+
- This also means retention will be limited by what CF Analytics Engine provides. While it could be possible to stand up a "hit counter" for long-lived data (e.g. years), that would mean another database, which we will not pursue.
113
+
- We prioritize backwards compatibility
114
+
- New `metricsDataset` columns can be added, but old columns cannot be removed or renamed (they can however, be "forgotten").
115
+
- That also means it's okay if a feature only works during a period where the data is active.
0 commit comments