README.md 2.04 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
# Go 3.0 - Go Forward 🚀

Go is at its core a URL shortening service built for the GMU community. It was
the first big SRCT project that was taken from development to production by the
founders. Originally a PHP app, it was translated into Django as a 1.0 release
and sat unmaintained for a period of time. Development on 2.0 started in 2016
with the intention of modernizing the application as well as designing for long
term maintenance. Additionally, since the core of the project is fairly simple,
2.0 functioned as a good introduction to open source development for new
members.
Jean Michel Rouly's avatar
Jean Michel Rouly committed
11

12
A project of [GMU SRCT](https://srct.gmu.edu).
13

14 15 16 17 18 19 20 21 22 23
## Architecture of the project

### `go_back`

`go_back` is the API backend of the project. It is built with the Django REST
Framework (python). It supports all CRUD (Create, Read, Update, Delete)
operations on Go links as well as RegisteredUser account management.

### `go_ahead`

24 25 26 27 28
`go_ahead` is the ReactJS frontend of the project. It is built with the React
JavaScript framework to allow for rapid development and experimentation. There
is also a lot of interactivty that the framework allows that we can leverage
for a smooth user experience.

29
## Getting started with contributing
David Haynes's avatar
David Haynes committed
30

31 32
There's a workflow involved with getting started contributing but once you do
it once or twice it'll seem a lot less daunting.
33

34 35 36 37 38 39 40 41 42 43 44 45 46 47
1. Running `go_ahead` | React / Webpack

   You'll need node installed.

   ```sh
   npm install -g yarn
   yarn
   yarn dev
   ```

   This starts a foreground process that will rebuild the React site whenever
   there is a change.

2. Running `go_back` | Docker
48

49
   You'll need Docker and docker-compose installed.
50

51
   In another terminal tab from the `yarn` one:
David Haynes's avatar
David Haynes committed
52

53 54 55
   ```sh
   docker-compose up
   ```
56

57
3. Misc. | Actually coding
58

59
   All JS changes will require a refresh (Webpack rebuilds the app in the background).
60

61
   All Python changes will require a refresh.
62

63
   To pull in python dependecies and work in a contained environment we use `pipenv`.
64

65 66 67 68
   ```
   pipenv install
   pipenv shell
   ```
69

70
4)  Deployment of changes
71

72
    See me.