Shareable Chrome Web Store analytics without adding tracking code to an extension.
Live site · Explore dashboards · Security · Contributing
KoalaData imports aggregate CSV reports already available to Chrome Web Store publishers. Known reports are mapped automatically, while custom layouts require an explicit preview before they are committed and presented as a responsive public, unlisted, or private dashboard.
Note
KoalaData currently targets Chrome Web Store publisher exports. It does not scrape store listings, install an analytics SDK, or provide real-time user tracking.
- No extension SDK, injected script, fingerprinting, or user-level telemetry.
- Reviewable imports instead of silent metric guesses.
- Clear separation between flow metrics such as installs and snapshot metrics such as weekly users.
- Localized Chrome Web Store report recognition with a manual fallback.
- Public listing and leaderboard moderation.
- Responsive, accessible charts with CSV and PNG exports.
- Self-hosted Node.js and SQLite deployment with Docker support.
KoalaData recognizes common report filenames and headers in English, German, French, Spanish, Portuguese, Italian, Dutch, Polish, and Turkish. Additional Japanese, Korean, and Chinese header aliases are supported where the structure is unambiguous.
The parser supports:
- UTF-8, UTF-8 BOM, UTF-16 LE, and UTF-16 BE;
- comma, semicolon, and tab delimiters outside quoted cells;
- localized date, decimal, and thousands-separator formats;
- installs, uninstalls, weekly users, impressions, store views, ratings, versions, regions, languages, operating systems, and enabled-state reports;
- duplicate and overlap diagnostics before confirmation.
See CSV import pipeline for the mapping rules.
- Registration requires a username and password, not an email address.
- Passwords are stored only as Argon2id hashes.
- Login uses one essential HTTP-only session cookie; only its SHA-256 token hash is stored server-side.
- Persisted network addresses are reduced before storage.
- Raw CSV files remain private to authorized project members.
- No third-party analytics, advertising scripts, social embeds, or favicon lookups.
- Public projects and leaderboard participation require separate moderation decisions.
See the live privacy policy, security overview, and repository security policy.
Requirements: Docker Engine with Compose v2.
git clone https://github.com/Shik3i/KoalaData.git
cd KoalaData
cp .env.example .envOn PowerShell, use Copy-Item .env.example .env instead of cp.
Set a unique KOALADATA_ADMIN_PASSWORD with at least 12 characters in .env. Production startup rejects missing passwords and documented placeholders.
docker compose up -d --build
docker compose psOpen http://localhost:3000. The seeded administrator must change the initial password after first login.
Versioned images and latest are published to GitHub Container Registry. Semantic Git tags trigger .github/workflows/publish-container.yml; they publish only container images. KoalaData does not use GitHub Releases or distribute application/source archives as release assets.
docker pull ghcr.io/shik3i/koaladata:latestUse an immutable container tag instead of latest for production deployments:
docker pull ghcr.io/shik3i/koaladata:vX.Y.Z| Variable | Purpose | Default |
|---|---|---|
ORIGIN |
Public application origin used by SvelteKit security checks | http://localhost:3000 |
PORT |
Node.js listen port | 3000 |
DATA_DIRECTORY |
Private uploads and project assets | /data in Compose |
DATABASE_PATH |
SQLite database file | /data/data.db in .env.example |
BACKUP_DIRECTORY |
Destination for managed SQLite backups | /backups in Compose |
BODY_SIZE_LIMIT |
Maximum total HTTP request body; must exceed configured per-file upload limits | 64M |
KOALADATA_ADMIN_USERNAME |
Initial administrator username | admin |
KOALADATA_ADMIN_PASSWORD |
Required initial production password | none |
SESSION_MAX_AGE |
Session lifetime in seconds | 2592000 |
Back up the database, uploaded source files, and project assets together.
Run KoalaData behind a TLS-terminating reverse proxy and set ORIGIN to the exact public HTTPS origin.
data.example.com {
reverse_proxy localhost:3000
}ORIGIN=https://data.example.comUse GET /api/health for container or reverse-proxy health checks. It reports service availability without exposing account or project data.
Create a consistent SQLite backup from the running container:
docker compose exec app node scripts/backup.cjsBackups are written to the configured backup volume and snapshots older than seven days are pruned. The application does not schedule this command itself; use a host timer or container scheduler for automatic backups. To restore, stop the application, replace the configured database file with the selected backup, then restart the service.
Requirements: Node.js 26 and npm.
npm ci
npx drizzle-kit push
npm run devThe development server is available at http://localhost:5173.
npm run check
npm run test:unit -- --run
npm run test:e2e
npm run build
npm audit --audit-level=low
docker build --tag koaladata:local .The CI workflow additionally checks formatting, accessibility, responsive layouts, Lighthouse budgets, and the Docker build.
src/routes/ SvelteKit pages and server actions
src/lib/server/ authentication, database, imports, permissions
src/lib/components/ dashboard and visualization components
migrations/ versioned SQLite migrations
docs/ architecture, import, changelog, security notes
.github/workflows/ CI and GHCR publishing
See architecture for the data model and request flow.
- Bugs: use the bug report template.
- Feature ideas: use the feature request template.
- Code changes: read CONTRIBUTING.md.
- Security vulnerabilities: do not open a public issue; follow SECURITY.md.
- Usage and operator contact: KoalaData imprint.
KoalaData is available under the MIT License.
