The simplest option for recording and replaying user journeys 🎯
If you have a live website, users will be interacting with it. But recording these sessions for further analysis can be challenging. Jornada makes this easy, enabling both session record and replay, allowing teams to have insights from user interactions. Some use cases:
- Debug reported issues
- User behaviour and experience analysis
Use brew
to install it
brew install brunoluiz/tap/jornada
Check the releases section for more information details
The tool is available as a Docker image as well. Please refer to Docker Hub page to pick a release
--non-anonymised-mode
flag.
Use one of the distributions above to fetch a binary. Before running, bear in mind the following configurations:
--public-url value Public URL where the service is exposed. The service might be running on :3000, but the public access can be proxied through 80 (default: "http://localhost:3000") [$PUBLIC_URL]
--non-anonymised-mode If set, it will allow user details to be recorded (default: false) [$NON_ANONYMISED_MODE]
--address value Service address -- change to 127.0.0.1 if developing on Mac (avoids network warnings) (default: "0.0.0.0") [$ADDRESS]
--port value Service port for public service (default: "3000") [$PORT]
--admin-port value Service port for admin service (default: "3001") [$ADMIN_PORT]
--allowed-origins value CORS allowed origins (default: "*") [$ALLOWED_ORIGINS]
--db-dsn value DSN for SQL database (see github.com/mattn/go-sqlite3 for more options) (default: "sqlite:///tmp/jornada.db?cache=shared&mode=rwc&_journal_mode=WAL") [$DB_DSN]
--events-dsn value Events storage path (BadgerDB) (default: "badger:///tmp/jornada.events") [$EVENTS_DSN]
--storage-max-age value How long should Jornada keep sessions stored in database (14 days by default) (default: 336h0m0s) [$STORAGE_MAX_AGE]
--log-level value Log level (default: "info") [$LOG_LEVEL]
--help, -h show help (default: false)
First, Install the @brunoluiz/jornada
module in your application:
npm install @brunoluiz/jornada # for npm users
yarn add @brunoluiz/jornada # for yarn users
Then add the following snippet to your app (at the end of <body>
) and then head to http://localhost:3001
to see recorded sessions
import { Jornada } from '@brunoluiz/jornada';
Jornada.init({ apiUrl: 'http://localhost:3000' })
.setUser({ id: 'USER_ID', email: '[email protected]', name: 'Bruno Luiz Silva' })
.setMeta({ foo: 'bar', bruno: 'silva' })
.setClientId('jtc-id')
.start();
- Refer to
github:jornada-client
for more informations about the JS client. - Refer to
docs/architecture.md
for more informations about the service implementation. - Refer to
docs/search.md
for more informations about how to run searches.
If you want to contribute with Jornada, you might need to run from the source. The following steps are required:
- Install
go
andgcc
tooling - Get SQLite
go get github.com/mattn/go-sqlite3
go run ./cmd/jornada
- By default, it will be served on
http://localhost:3000
- Set-up rrweb JS recorder
- Create basic templates for UI
- Create easy to use/query storage for sessions
- Create events storage
- Create GDRP safe-mode
- Automatic release set-up w/ CGO
- Support filter and search (based on meta or client data)
- Support for metrics
- Paginate results
- Support database automatic clean-ups, based on configurations
- Extract client code
- Nice error pages
- Tweak SQLite
- Test this with big traffic to understand how SQLite and BadgerDB will behave
- Create some test suite
- Support for other SQL engines
- Support for player streaming/live mode (less memory consumption)
- Support for notes and session marking
- Support for bookmarking (could be through GA or something similar)
- Create OpenAPI schemas