https://github.com/karloscodes/fusionaly-oss
Single tenant and self-hosted analytics
https://github.com/karloscodes/fusionaly-oss
golang sqlite web-analytics
Last synced: 2 days ago
JSON representation
Single tenant and self-hosted analytics
- Host: GitHub
- URL: https://github.com/karloscodes/fusionaly-oss
- Owner: karloscodes
- License: agpl-3.0
- Created: 2025-12-17T18:42:11.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-01-31T15:29:54.000Z (7 days ago)
- Last Synced: 2026-02-01T03:49:15.792Z (7 days ago)
- Topics: golang, sqlite, web-analytics
- Language: Go
- Homepage: https://fusionaly.com
- Size: 1.26 MB
- Stars: 3
- Watchers: 0
- Forks: 1
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: docs/SECURITY_SEC_FETCH.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Fusionaly
Privacy-first, self-hosted web analytics. Simple, fast, no cookies required.
**Documentation:** [fusionaly.com/docs](https://fusionaly.com/docs)
## Development Setup
**Requirements:** Go 1.25+, Node.js 22+, SQLite
```bash
# Install dependencies
make install
# Run database migrations
make db-migrate
# Start dev server (hot reload)
make dev
```
Access at `http://localhost:3000`
## Project Structure
```
fusionaly/
├── cmd/
│ ├── fusionaly/ # Main server binary
│ ├── fnctl/ # CLI tool (migrations, admin tasks)
│ └── manager/ # Production manager (health checks, upgrades)
├── internal/ # Core business logic (Phoenix Contexts pattern)
├── api/v1/ # Public tracking API endpoints
├── web/ # React frontend (Inertia.js + Tailwind)
├── e2e/ # Playwright E2E tests
└── storage/ # Runtime data (database, GeoLite2, uploads)
```
## Binaries
| Binary | Purpose |
|--------|---------|
| `fusionaly` | Main web server |
| `fnctl` | CLI: migrations, create-admin-user, export |
| `fusionaly-manager` | Production: health checks, graceful upgrades |
## Commands
```bash
make dev # Run with hot reload
make test # Run unit tests (~3s)
make test-e2e # Run Playwright tests (~5min)
make build # Build production binaries
make lint # Run linters
make db-migrate # Apply migrations
make db-seed # Migrations + sample data
```
## Tech Stack
- **Backend**: Go 1.25, Fiber, GORM, SQLite
- **Frontend**: React 19, Inertia.js, Tailwind CSS, shadcn/ui
- **Testing**: Go testing, Playwright
## Configuration
For development, defaults work out of the box.
For production deployment and configuration options, see [Installation Guide](https://fusionaly.com/docs/installation/).
**Key environment variables:**
- `FUSIONALY_ENV` - Set to `production` for production
- `FUSIONALY_PRIVATE_KEY` - **Required in production** (generate with `openssl rand -hex 32`)
## Contributing
1. **Open an issue first** - Discuss features or significant changes before starting work
2. **Bug fixes** - Submit PRs directly with clear problem/solution description
3. **Code style** - Run `make lint` before submitting
4. **Tests** - Run `make test` and `make test-e2e` to verify changes
## License
AGPL-3.0 - see [LICENSE](./LICENSE)
## Links
- Website: [fusionaly.com](https://fusionaly.com)
- Documentation: [fusionaly.com/docs](https://fusionaly.com/docs)
- Issues: [GitHub Issues](https://github.com/karloscodes/fusionaly-oss/issues)