diff --git a/README.md b/README.md
index 4c64133..6efc652 100644
--- a/README.md
+++ b/README.md
@@ -9,9 +9,33 @@ Repository for a course project of CS4675/CS6675 at Georgia Institute of Technol
Mention a bullet point summary for all the features you are pushing as part of the PR within the description to ease the review process
+## Contributing to the Codebase
+1. Create a new branch:
+ ```bash
+ git checkout -b
+ ```
+2. Make your changes.
+
+3. Use black to format your code: (With virtual environment activated)
+ ```bash
+ black .
+ ```
+
+4. Make your changes and commit them:
+ ```bash
+ git add .
+ git commit -m "Your commit message"
+ ```
+5. Push your changes to the remote repository:
+ ```bash
+ git push origin
+ ```
+6. Create a Pull Request on GitHub.
+
+
## Getting Started
-### Frontend
+# Frontend (ReactJs)
For our frontend we are using React + Vite + TypeScript!
- **React** -> JavaScript Framework for creating reactive user interfaces.
@@ -34,4 +58,77 @@ npm install
```sh
npm run dev
```
-5. Visit http://localhost:5173
\ No newline at end of file
+5. Visit http://localhost:5173
+
+
+# Backend
+# Central Server (Django)
+
+This is the backend for the Django project.
+
+
+## Setup
+
+1. Open a new terminal and cd into the backend directory:
+ ```bash
+ cd backend
+ ```
+
+2. Create a virtual environment:
+ ```bash
+ python3 -m venv venv
+ ```
+
+3. Activate the virtual environment:
+ - For macOS/Linux:
+ ```bash
+ source venv/bin/activate
+ ```
+ - For Windows:
+ ```bash
+ venv\Scripts\activate
+ ```
+
+4. Install the project dependencies:
+ ```bash
+ pip install -r requirements.txt
+ ```
+
+### Running the Server
+
+To start the Django server, run the following command:
+```bash
+ python3 manage.py runserver
+```
+
+By default, the server will run on `http://localhost:8000/`.
+
+### Admin Panel
+In order to access the admin panel, you need to create a superuser. To do this, run the following command:
+```bash
+ python3 manage.py createsuperuser
+```
+
+Then, you can access the admin panel by visiting `http://localhost:8000/admin/` and logging in with the superuser credentials.
+
+# Intermediate Proxy Service (Flask)
+
+This is the service which runs on the client side and is responsible for handling the peer to peer connections and file transfers along with getting the IPs of the machine. In order to run this, please do the following:
+
+1. Open a new terminal and cd into the file_peer directory:
+ ```bash
+ cd file_peer
+ ```
+2. Make sure that the venv that we used for the backend service is activated
+
+3. Run the flask server using the following command:
+ ```bash
+ python3 peer_service.py
+ ```
+
+
+
+
+## Further Configurations:
+- You would need to set up the central server with a domain and change the domain within the client code. (It is currently hardcoded with IP.)
+- Make sure all the servers are running within the same network as this solution is featured to be restricted to within a network by design.
\ No newline at end of file
diff --git a/file_peer/.gitignore b/file_peer/.gitignore
new file mode 100644
index 0000000..6d99ab8
--- /dev/null
+++ b/file_peer/.gitignore
@@ -0,0 +1,163 @@
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+uploads/
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+share/python-wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.nox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+*.py,cover
+.hypothesis/
+.pytest_cache/
+cover/
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+db.sqlite3-journal
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+.pybuilder/
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# IPython
+profile_default/
+ipython_config.py
+
+# pyenv
+# For a library or package, you might want to ignore these files since the code is
+# intended to run in multiple environments; otherwise, check them in:
+# .python-version
+
+# pipenv
+# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
+# However, in case of collaboration, if having platform-specific dependencies or dependencies
+# having no cross-platform support, pipenv may install dependencies that don't work, or not
+# install all needed dependencies.
+#Pipfile.lock
+
+# poetry
+# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
+# This is especially recommended for binary packages to ensure reproducibility, and is more
+# commonly ignored for libraries.
+# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
+#poetry.lock
+
+# pdm
+# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
+#pdm.lock
+# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
+# in version control.
+# https://pdm.fming.dev/#use-with-ide
+.pdm.toml
+
+# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
+__pypackages__/
+
+# Celery stuff
+celerybeat-schedule
+celerybeat.pid
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+.dmypy.json
+dmypy.json
+
+# Pyre type checker
+.pyre/
+
+# pytype static type analyzer
+.pytype/
+
+# Cython debug symbols
+cython_debug/
+
+# PyCharm
+# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
+# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
+# and can be added to the global gitignore or merged into this file. For a more nuclear
+# option (not recommended) you can uncomment the following to ignore the entire idea folder.
+#.idea/
+
+# Misc
+.DS_STORE