{"id":17134339,"url":"https://github.com/brianium/bitkit","last_synced_at":"2026-04-13T01:12:06.766Z","repository":{"id":146514758,"uuid":"123216747","full_name":"brianium/bitkit","owner":"brianium","description":"A fun Frankenstein monster for tracking bitcoin transactions through the mempool","archived":false,"fork":false,"pushed_at":"2020-02-10T14:05:13.000Z","size":137,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-18T05:56:26.513Z","etag":null,"topics":["bitcoin","clojure","golang","mempool","python"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brianium.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-02-28T02:23:07.000Z","updated_at":"2024-04-09T10:44:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"bc610fec-d7e8-4996-81ea-e57760a15198","html_url":"https://github.com/brianium/bitkit","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brianium%2Fbitkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brianium%2Fbitkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brianium%2Fbitkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brianium%2Fbitkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brianium","download_url":"https://codeload.github.com/brianium/bitkit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245217945,"owners_count":20579300,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitcoin","clojure","golang","mempool","python"],"created_at":"2024-10-14T19:44:39.632Z","updated_at":"2026-04-13T01:12:01.740Z","avatar_url":"https://github.com/brianium.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bitkit\n\nFormerly hosted at https://bitkit.live. Now defunct, but left here because it was a fun and cool project.\n\nHighlights:\n\n* A web server written in Go for use via AWS Lambda and API Gateway\n* An app written in python for pushing bitcoin mempool data to the Go API\n* A ClojureScript frontend for viewing transactions as they move through the mempool\n\n## Requirements\n\n* [Docker](https://www.docker.com/) (optional for dev)\n* [Docker Compose](https://docs.docker.com/compose/) (optional for dev)\n* [Make](https://www.gnu.org/software/make/)\n* [direnv](https://direnv.net/)\n* [python3](https://www.python.org/)\n* [PGMigrate](https://github.com/yandex/pgmigrate)\n* [Leiningen](https://leiningen.org/)\n* Java 8 (For Leiningen)\n\n## Setup\n\nSet environment variables\n\n```\n$ direnv allow\n```\n\nTo get a running db (with docker):\n\n```\n$ make startdb\n```\n\nYou will need to run `direnv allow` any time the .envrc file changes\n\nMake sure you change `.envrc.sample` to `.envrc` to fit your config needs\n\nRun database migrations\n\n```\n$ make migrate\n```\n\nMigrations should be run after `make restart` as well. TODO - add `migrate` task to `restart`. (tricky because you must wait for postgres to be up)\n\nYou may want to setup `$GOPATH` correctly on your machine. This is optional, but may be\ndesired for local tooling. The docker container for the go app has a working dir of `/go/src/app`.\nCreating a symlink from the `server` directory to your local `$GOPATH` should do the trick:\n\n```\n$ ln -s /Users/username/projects/bitkit/server /Users/username/go/src/server\n```\n\nWhere `username` is your own user name. The path examples above are conventional for mac systems - so adjusting\nfor another system may be needed - i.e `/home/user/...` on a Linux system.\n\n### SSL\n\nA self signed cert is used for local development - and routes will only be accessible over `https`. To generate\nlocal certs, run:\n\n```\n$ make certs\n```\n\nFill out the asked questions. You need to run `make restart` if the docker containers are already up and running. You may\nhave to add an exception in your browser to make things work.\n\n## Running\n\nTo run the API use `go run` within the server directory:\n\n```\n$ cd server \u0026\u0026 go run\n```\n\nBecause Go programs are compiled, changes will not be reflected immediately. \n\nThe go app exposes the web application on port 8080. You can visit the application\nlocally at `http://127.0.0.1:8080/`\n\n## Client\n\nThe client application is written in ClojureScript using the [re-frame](https://github.com/Day8/re-frame) framework.\n\nTo start an interactive development environment, from within the `client/bitkit` directory\nrun:\n\n```\n$ lein figwheel\n```\n\nProduction builds are done using:\n\n```\n$ make client\n```\n\nFrom the project root.\n\n## Data\n\nThere are some outstanding field naming issues.\n\n`fee_rate` is what I would prefer to call `mining_fee_rate`. It's the effective fee rate of the transaction considering ancestors and descendants as most miners would. Unless a transaction has no ancestors or descendants, it may be different than fee / vsize for the given transaction. Child Pays For Parent (CPFP) necessitates inclusion of parent transactions with or before child transactions.\n\n`weight` is really `vsize` for the given transaction only (no ancestors or descendants).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrianium%2Fbitkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrianium%2Fbitkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrianium%2Fbitkit/lists"}