0
0
mirror of https://github.com/PostHog/posthog.git synced 2024-11-25 11:10:24 +01:00
posthog/README.md

115 lines
4.8 KiB
Markdown
Raw Normal View History

2020-02-12 04:36:20 +01:00
# PostHog
2020-01-27 06:54:19 +01:00
2020-02-14 07:00:01 +01:00
PostHog is open source product analytics. Automate the collection of every event on your website or app, and stay in control of your users data.
2020-02-14 07:00:01 +01:00
See [PostHog docs](https://posthog.com/docs/) for in-depth walk throughs on functionality.
2020-02-14 08:19:47 +01:00
![PostHog dashboard screenshot](https://posthog.com/wp-content/uploads/2020/02/Screenshot-2020-02-13-at-23.14.36-2.png)
2020-02-14 08:06:08 +01:00
2020-02-14 07:00:01 +01:00
## Features
- **Event-based** analytics.
- **Complete control** over your data -- host it yourself.
- **Automatically capture** clicks and page views to do analyze what your users are doing **retroactively**.
- Libraries for **JS, Python, Ruby** + API for anything else.
- Beautiful **graphs, funnels and dashboards**.
- Super easy deploy using **Docker** or **Heroku**.
## Philosophy
We strongly believe 3rd party analytics don't work anymore in a world of Cookie laws, GDPR, CCPA and lots of other 4 letter acronyms. There should be an alternative to sending all of your users' personal information and usage data to 3rd parties.
2020-02-14 07:00:01 +01:00
PostHog gives you full control over all your users' data, while being able to do powerful analytics.
## What's cool about this?
PostHog is the only <strong>product-focussed</strong> open source analytics library, with an event and user-driven architecture. That means tracking identifiable (where applicable) user behavior, event funnels, and event autocapture. We are an open source alternative to Mixpanel, Amplitude or Heap.
There are a couple of session-based open source libraries that are nice alternatives to Google Analytics. That's not what we are focussed on.
2020-02-10 00:31:43 +01:00
## One-line docker preview
```bash
2020-02-10 00:20:11 +01:00
docker run -t -i --rm --publish 8000:8000 -v postgres:/var/lib/postgresql posthog/posthog:preview
```
This image has everything you need to try out PostHog locally! It will set up a server on http://127.0.0.1:8000.
## Deploy to Heroku
[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/posthog/posthog)
## Production installation
The preview image has Postgres running locally and runs in debug mode.
For a production installation you have a few options:
### Deploy to Heroku
Heroku is the quickest way to get a production PostHog environment up-and-running.
We recommend getting at the very least a `hobby-dev` Postgres and Dyno for low volumes of events.
### Docker
2020-02-12 04:35:54 +01:00
Using the [posthog/posthog:latest](https://hub.docker.com/r/posthog/posthog) Docker image.
**On Ubuntu**
1. [Install Docker](https://docs.docker.com/installation/ubuntulinux/)
2. [Install Docker Compose](https://docs.docker.com/compose/install/)
2020-02-13 20:45:07 +01:00
3. Run the following:
```bash
sudo apt-get install git
git clone https://github.com/posthog/posthog.git
cd posthog
docker-compose build
docker-compose up -d
```
### From source
1. Make sure you have Python >= 3.7 and pip installed
2. [Install Yarn](https://classic.yarnpkg.com/en/docs/install/#mac-stable)
2020-02-13 20:45:07 +01:00
3. Run the following:
```bash
git clone https://github.com/posthog/posthog.git
yarn build
pip install -r requirements.txt
gunicorn posthog.wsgi --config gunicorn.config.py --log-file -
```
# Development
2020-01-27 08:32:22 +01:00
## Running backend (Django)
2020-01-27 06:54:19 +01:00
1) Make sure you have python 3 installed `python3 --version`
2) Make sure you have postgres installed `brew install postgres`
3) Start postgres, run `brew services start postgresql`
4) Create Database `createdb posthog`
5) Navigate into the correct folder `cd posthog`
6) Run `python3 -m venv env` (creates virtual environment in current direction called 'env')
7) Run `source env/bin/activate` (activates virtual environment)
8) Run `pip install -r requirements.txt`. If you have problems with this step (TLS/SSL error), then run `~ brew update && brew upgrade` followed by `python3 -m pip install --upgrade pip`, then retry the requirements.txt install.
2020-01-27 06:54:19 +01:00
9) Run migrations `python manage.py migrate`
2020-02-10 00:54:32 +01:00
10) Run `DEBUG=1 python manage.py runserver`
2020-01-27 06:54:19 +01:00
## Running backend tests
2020-01-27 06:54:19 +01:00
`bin/tests`
2020-01-27 08:32:22 +01:00
## Running frontend (React)
2020-01-27 06:54:19 +01:00
2020-01-27 08:29:00 +01:00
If at any point, you get "command not found: nvm", you need to install nvm, then use that to install node.
1) Make sure you are running Django above in a separate terminal
2) Now run `bin/start-frontend`
3) Optional: If you're making changes to the editor, you'll need to do `cd frontend && yarn start-editor` to watch changes.
2020-01-27 06:54:19 +01:00
## Create a new branch
If you are working on some changes, please create a new branch, submit it to github ask for approval and when it gets approved it should automatically ship to Heroku
* Before writing anything run `git pull origin master`
* Then create your branch `git checkout -b %your_branch_name%` call your branch something that represents what you're planning to do
* When you're finished add your changes `git add .`
* And commit with a message `git commit -m "%your feature description%" `
2020-02-10 00:33:27 +01:00
* When pushing to github make sure you push your branch name and not master! Use `git push origin %your_branch_name%`