# Calculator A simple, scientific calculator that runs in your browser. ## Dependencies This project can be run in a few different ways, and dependencies vary based on the method you choose. - **Browser Only**: No dependencies, but the calculator will not be served from a webserver. - **Python**: To serve the `index.html` file, you'll need Python installed. - **Docker**: To run the project in a container, you'll need Docker installed. ## How to Run ### Windows - **With Python**: Run `start-server.bat`. This will start a Python web server and open the calculator in your default browser. - **With Docker**: Run `run-docker.bat`. This will use Docker Compose to build and run the container. ### Linux / macOS - **With Python**: Run `./start-server.sh`. You may need to make it executable first with `chmod +x start-server.sh`. This will start a Python web server and open the calculator in your default browser. - **With Docker**: Run `./run-docker.sh`. You may need to make it executable first with `chmod +x run-docker.sh`. This will use Docker Compose to build and run the container. ## Server Setup To deploy the calculator on a server, you only need Docker and Docker Compose installed. You do not need to clone this repository. 1. **Install Docker and Docker Compose**: Follow the official installation instructions for your server's operating system. 2. **Create a `compose.yaml` file**: On your server, create a new file named `compose.yaml` and add the following content: ```yaml services: web: build: . image: ghcr.io/jones013/jack_calculator:latest ports: - "8888:80" restart: unless-stopped ``` 3. **Start the container**: In the same directory where you created the `compose.yaml` file, run the following command: ```bash docker compose up -d ``` The `-d` flag runs the container in detached mode. The `restart: unless-stopped` policy ensures that the container will automatically restart if the server is rebooted. The calculator will then be available at `http://:8888`. **Note on Firewalls**: Ensure that your server's firewall is configured to allow incoming traffic on port 8888. --- ## Branches Use `**main`** or `**user**` for this layout. Maintainer tooling and full docs live on the `**developer**` branch.