diff --git a/README.md b/README.md index b8fb081..1452cf6 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ivanc +# ivanc: This repository contains two applications: @@ -7,19 +7,19 @@ See deployed at http://ivanc.uk 2. A [Django server app](/server) that assists the React app by providing data via a REST API. See deployed at https://api.ivanc.uk -## React app +## React app: Source code located under `/web-client`. This React app is set up with [Webpack](https://webpack.github.io/) and [Express](http://expressjs.com/) so that the React components are rendered in the server side. -#### Getting started +#### Getting started: 1. `npm install`: install app dependencies. 3. Make sure the companion API app is running at`http://localhost:8000/` 4. `npm start`: start the dev server at `http://localhost:3000/` 5. Modify any of the components under [`/src`](web-client/src) and see the changes in real time thanks to [React Hot loader](https://github.com/gaearon/react-hot-loader) -#### Deployment +#### Deployment: This app can be deployed as a Node application on Heroku or Dokku. There is a `heroku-postbuild` script in [`package.json`](web-client/package.json) so every time the app is pushed to Heroku, Webpack compiles the JavaScript code in production mode. Webpack outputs the result into `public/bundle.js` that is loaded @@ -31,21 +31,21 @@ There are a couple of **environment variables** that need setting up before depl * `GA_TRACKING_CODE`: Your Google Analytics tracking code. -## Django server app +## Django server app: Source code located under `/server`. This Django API provides data such as a list of apps, articles and open source repositories through a REST API. It also provides an admin panel that allows adding, deleting and amending data with ease. It's implemented using [Django REST Framework](http://www.django-rest-framework.org/). -#### Getting started +#### Getting started: * Create a Python virtual environment under `/server`. You can follow [this guide](http://docs.python-guide.org/en/latest/dev/virtualenvs/). * Set up the Django settings environment variable: `export DJANGO_SETTINGS_MODULE=ivanc.dev_settings`. To avoid having to do this every time you can add this line to the `activate` script file located in your virtual environment `env/bin/activate` * Activate the environment: `source env/bin/activate` * Install dependencies: `pip install -r requirements-dev.txt` * Now you're ready to run the dev server: `python manage.py runserver` -#### Testing +#### Testing: This Django project contains test for all endpoints. You can run them with `python manage.py test`. Some endpoints call external APIs. In order to avoid flaky tests, these external interactions are mocked using [VCR.py](https://github.com/kevin1024/vcrpy). Note the first time you run them they will perform real HTTP interactions. Consecutive executions will reuse the first response and the tests will no longer call the external API. -#### Deployment +#### Deployment: This app can be deployed as a Django application on Heroku or Dokku. The following **environment variables** are expected: * `DJANGO_SETTINGS_MODULE`: This must point to the prod settings file `ivanc.prod_settings` @@ -63,7 +63,7 @@ The `/repos` endpoint uses the GitHub API to pull data about repositories. The c * `GITHUB_CLIENT_ID` * `GITHUB_CLIENT_SECRET` -## License +## License: ``` Copyright 2016 Ivan Carballo.