This repository contains all of the parts related to the AHC experimentation environment. Those include:
- Frontend: under
ahc_frontend
- Backend: under
ahc_backend
- Runner: under
ahc_runner
All of those parts are explained individually in this README. Except these parts, there is the AHC library which is located in its own repository.
Before running the server you need to run Redis and Postgres instances. To do this you need to have Docker installed on your system. After installing Docker, all you need to do is that running docker-compose
in the ahc_backend
directory.
You need to have python3 and poetry installed on your system to run the backend server. After going into the ahc_backend
directory you need to install dependencies using the poetry install
command. This should install all of the dependencies.
To start the project, you can run the poetry shell
command to start a virtual environment when you are in the backend directory. At this point, you can run Django commands. For example, you can run the python3 manage.py runserver
command to run the backend server. With this command, you need to see that the backend server is running on http://localhost:3000/
.
- Django: High-level Python web framework.
- Django REST framework: Toolkit for developing a Web API.
- PyGithub: Python library to access the GitHub REST API.
You first need to have node.js and yarn installed on your system. After that, you can run the yarn install
when you are in the frontend directory. This should install all of the dependencies.
After installing dependencies, you can run yarn start
to start the React server. You should see the project running on http://localhost:3000/
.
At this stage, the front end is not fully functional if you don't have the backend server running on your system. You should start the backend server so that the front end can reach it. Alternatively, you can use the deployed backend by setting the environment variable REACT_APP_SERVER_URL
to https://ahc.ceng.metu.edu.tr/api/
.
The frontend project has the following dependencies used widely on the project.
- React.js: Popular javascript library.
- MobX: State management library used to keep a global state for the React project.
- React Router: Router library.
- mui: React component library used to fasten the development.
- axios: HTTP client library.
Other than those there are a couple more specific dependencies.
react-graph-vis
: The visualization library used for the topology management feature.xterm-for-react
: Terminal component library used for showing experimentation logs.react-markdown
: Markdown component library used for showing the README of the project added.
For development dependencies, there is typescript
for type checking and eslint
to enforce a code style.