Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# ivanc
# ivanc:

This repository contains two applications:

Expand All @@ -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
Expand All @@ -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`
Expand All @@ -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.
Expand Down