# How to contribute
Substats is a serverless function deployed on Cloudflare Workers. You should use
wrangler to build, debug and preview the project. More information: Cloudflare Workers | Quick Start.
# Setting up the project
You'll need global access to CLI tools installed by
yarn, so you should add
yarn's global binary installation path to your
yarn global bin
You can run the command directly to find the
yarn global add @cloudflare/wrangler
# Familiarizing the structure
The core API backend and the documentations share the same mono-repo. The structure of the project is shown below.
. 📖 Documentation section ├──
docs(Documentation, built with VuePress) │ └── …… │ 🚡 API backend ├── index.js (API starting point) ├──
utils(Utility scripts folder) │ ├── handlerImporter.js (Imports all API handlers from below) │ 🔑 API handlers │ └──
handlers(API integration handlers folder) │ ├── feedly.js (Feedly API integration) │ ├── github.js (GitHub API integration) │ └── …… (You get the idea...) │ 🚀 Deployment └── wrangler.toml (Cloudflare worker deployment config)
# Building, preview and debugging
Preview with cloudflareworkers.com:
# Storing secrets and authenticating
If an API/Service requires authentication, you can store the required token/password/cookie etc., with Cloudflare Worker's secret, i.e., environment variables.
You can create a mock account for your desired service, and authenticate with this account. I strongly discourage you using your personal account for this task. After you implement an auth-required service, you can make a PR and email me the token/password/cookie etc., along with the name of the secret you used. For instance:
Please upload this secret and token! Thanks.
Secret name: YOUR_SERVICE_TOKEN (Actual variable name used inside the worker)
Secret token: VGhpcyBpcyBhIHNlY3JldCB0b2tlbiE= (The secret token itself)
I will upload and store this value onto Cloudflare Worker before merging the PR. DO NOT SEND ME YOUR ACTUAL USER ACCOUNT - PASSWORD COMBINATION!
An example is the authentication-required Telegram Bot API that I used when implementing the Telegram Channel/Chat group member API. For details on how to use this secret global variable, see: Environment Variables - Secrets.
# Publishing admin
Publish to Cloudflare Workers:
To contribute on documentations (i.e., this website), you'll need to build using
# Live preview docs
# Building the docs