Popularity
4.5
Growing
Activity
0.0
Stable
3
4
1
Monthly Downloads: 9
Programming language: Haskell
License: Apache License 2.0
Tags:
Unclassified
Latest version: v0.2.1
mixpanel-client alternatives and similar packages
Based on the "Unclassified" category.
Alternatively, view mixpanel-client alternatives based on common mentions on social networks and blogs.
-
gotta-go-fast
A command line utility for practicing typing and measuring your WPM and accuracy. -
heroku-persistent
Parse DATABASE_URL into configuration types for Persistent -
bit-stream
Lazy infinite compact streams with cache-friendly O(1) indexing and applications for memoization -
ascii-art-to-unicode
Small program to convert ASCII box art to Unicode box drawings. -
hackertyper
"Hack" like a programmer in movies and games! Inspired by hackertyper.net -
base-unicode-symbols
Unicode alternatives for common functions and operators -
aeson-serialize
Functions for serializing a type that is an instance of ToJSON -
dependent-sum-template
Template Haskell code to generate instances of classes in dependent-sum package -
servant-streaming
Support for servant requests and responses via the 'streaming' library -
argon2
Haskell bindings to libargon2 - the reference implementation of the Argon2 password-hashing function -
postgresql-simple-sop
Generic functions for postgresql-simple -
webkit-javascriptcore
webkit javascriptcore library FFI -
containers-unicode-symbols
Unicode alternatives for common functions and operators -
semver-range
Implementation of semver and NPM-style semantic version ranges in Haskell -
rerebase
Reexports from "base" with a bunch of other standard libraries -
rollbar-cli
A group of libraries written in Haskell to communicate with Rollbar API. -
reflex-dom-pandoc
Render Pandoc documents in reflex-dom -
network-carbon
A Haskell implementation of the Carbon protocol (part of the Graphite monitoring tools) -
qq-literals
A Haskell library for compile-time checked literal values, via QuasiQuoters. -
bitcoind-regtest
A cilent for the bitcoind JSON-RPC interface
Clean code begins in your IDE with SonarLint
Up your coding game and discover issues early. SonarLint is a free plugin that helps you find & fix bugs and security issues from the moment you start writing code. Install from your favorite IDE marketplace today.
Promo
www.sonarlint.org
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of mixpanel-client or a related project?
README
MixPanel client for Haskell
Implements major features of MixPanel HTTP API:
- [x] track
- [x] alias
- [x] engage
- [ ] import
- [ ] export
Getting started
import Data.Aeson ( (.=) )
import Data.Time.Clock ( getCurrentTime )
import GHC.Exts ( fromList )
import MixPanel ( Operation(Set), engage, track, alias
, AuthToken(..), mkEnv
-- reexports
, newManager, tlsManagerSettings)
main :: IO ()
main = do
-- setup
manager <- newManager tlsManagerSettings
let env = mkEnv (AuthToken "foobar") manager
-- track a simple event
Right () <- track env "Played Video" mempty
-- track an event with extra properties
Right () <- track env "Played Video Unique per user"
$ fromList [ "distinct_id" .= ("generated-id" :: String)
, "customProperty" .= True ]
-- alias the user
Right () <- alias env "generated-id" "[email protected]"
-- profile engagement
now <- getCurrentTime
Right () <- engage env "[email protected]"
$ Set (fromList [ "$created" .= now])
putStrLn "All good!"
Design questions
a) Why does it use Object/Array
intemediate values from Data.Aeson
?
TODO
- batch requests
- expose extra url query paramerers
- engage special properties more type safe?
- filter out null values in requests to mixpanel
- api support for tracking revenue