mirror of
https://github.com/PostHog/posthog.git
synced 2024-11-22 08:15:44 +01:00
🦔 PostHog provides open-source product analytics, session recording, feature flagging and A/B testing that you can self-host.
bin | ||
frontend | ||
posthog | ||
staticfiles | ||
.dockerignore | ||
.gitignore | ||
app.json | ||
docker-compose.yml | ||
Dockerfile | ||
manage.py | ||
mypy.ini | ||
package.json | ||
Procfile | ||
README.md | ||
requirements.txt | ||
yarn.lock |
Posthog
Running backend (Django)
- Make sure you have python 3 installed
python3 --version
- Make sure you have postgres installed
brew install postgres
- Start postgres, run
brew services start postgresql
- Create Database
createdb posthog
- Navigate into the correct folder
cd posthog
- Run
python3 -m venv env
(creates virtual environment in current direction called 'env') - Run
source env/bin/activate
(activates virtual environment) - Run
pip install -r requirements.txt
. If you have problems with this step (TLS/SSL error), then run~ brew update && brew upgrade
followed bypython3 -m pip install --upgrade pip
, then retry the requirements.txt install. - Run migrations
python manage.py migrate
- Run
python manage.py createsuperuser
- Create a username, email and password
- Run
python manage.py runserver
- If you get an error on loading https://127.0.0.1:8000 (which Chrome will default to) - "you're accessing the dev server over HTTPS, but it only supports HTTP", then go to settings.py and set
SECURE_SSL_REDIRECT = False
Running tests
bin/tests
Running frontend (React)
If at any point, you get "command not found: nvm", you need to install nvm, then use that to install node.
- Make sure you are running Django above in a separate terminal
- Go to the frontend directory,
cd frontend
- Run
yarn install
- Go back out to the root of the application
cd .
- Now run
bin/start-frontend
Pulling production database locally - NOT RECOMMENDED - THIS IS A HUGE FILE
bin/pull_production_db
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%"
- When pushing to github make sure you push your branch name and not master!!
Deployment to Heroku
git push origin %branch_name%
(sends it to Github) - DO NOT usegit push heroku master
- Be very careful running migrations by testing if they work locally first (ie run makemigrations, migrate, runserver locally when you've made database changes)
- James or Tim will approve your change, and will deploy it to master