{"id":21071871,"url":"https://github.com/iron-e/winvoice-server","last_synced_at":"2026-05-19T17:41:29.154Z","repository":{"id":166620455,"uuid":"642075598","full_name":"Iron-E/winvoice-server","owner":"Iron-E","description":"HTTPS server to manage invoices using a well-defined API","archived":false,"fork":false,"pushed_at":"2024-05-06T21:28:02.000Z","size":874,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-20T22:11:24.838Z","etag":null,"topics":["axum","backend","invoice-generator","login","permissions","rust","server"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Iron-E.png","metadata":{"files":{"readme":"README.Docker.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-17T19:08:32.000Z","updated_at":"2024-05-06T21:28:05.000Z","dependencies_parsed_at":"2023-10-26T22:29:57.536Z","dependency_job_id":"75d3a18c-d171-4c57-be98-02f9d2d03929","html_url":"https://github.com/Iron-E/winvoice-server","commit_stats":null,"previous_names":["iron-e/clinvoice-server","iron-e/winvoice-server"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Iron-E%2Fwinvoice-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Iron-E%2Fwinvoice-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Iron-E%2Fwinvoice-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Iron-E%2Fwinvoice-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Iron-E","download_url":"https://codeload.github.com/Iron-E/winvoice-server/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243515569,"owners_count":20303258,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["axum","backend","invoice-generator","login","permissions","rust","server"],"created_at":"2024-11-19T18:54:28.673Z","updated_at":"2025-12-28T17:23:29.113Z","avatar_url":"https://github.com/Iron-E.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# winvoice-server\n\n## Docker\n\nA [Dockerfile](./Dockerfile) is provided to run the application in an isolated environment. A database is not included in the image, but is required to start the server.\n\n### Build\n\nThere are several options for building, depending on what you are comfortable with.\n\n#### `docker build`\n\nRun the following command:\n\n```sh\ndocker build [--build-arg \u003carg\u003e=\u003cvalue\u003e ...] [--tag \u003ctag\u003e] .\n```\n\nFor example:\n\n```sh\ndocker build --build-arg RUST_VERSION=1.75.0 --tag winvoice-server:latest .\n```\n\n##### Arguments\n\n| Name           | Default  | Description                       |\n| :--            | :--      | :--                               |\n| `GID`          | `10001`  | The ID of the created group.      |\n| `RUST_VERSION` | `1.76.0` | The Rust version to compile with. |\n| `UID`          | `$GID`   | The ID of the created user.       |\n\n#### `terraform`\n\nOptionally, you can use [terraform](https://github.com/hashicorp/terraform) to set up the relevant containers:\n\n```terraform\n## main.tf\nmodule \"winvoice-server\" {\n\tsource = \"path/to/winvoice-server\"\n\n\t# optionally, specify build arguments\n\tbuild-args = {\n\t\trust-version = \"1.77.0\"\n\t}\n}\n\n## extra config as necessary…\n```\n\nThen, in a shell of your choice:\n\n```sh\nterraform init # setup\nterraform apply # create winvoice-server containers\nterraform destroy # delete winvoice-server containers\n```\n\n### Usage\n\nAfter building, run:\n\n```sh\ndocker run -p \u003cport\u003e \u003cimage-name\u003e [\u003cwinvoice-server-arg\u003e ...]\n```\n\n\u003e [!NOTE]\n\u003e\n\u003e Use `docker exec` if you want to run a command inside a container rather than an image.\n\nFor example, to print help info, do:\n\n```sh\ndocker run -p 3000 \\\n\t-t \\ # tty\n\t--rm \\ # remove after executing\n\t\u003cimage-name\u003e \\\n\thelp # run `winvoice-server help`\n```\n\n## Compose\n\nA [compose file](./compose.yaml) is provided to run the application. A postgres image is included in the configuration.\n\nRun the following command:\n\n```sh\ndocker compose up\n```\n\n### Configs\n\n| Name                       | Path                            | Description                              |\n| :-                         | :-                              | :-                                       |\n| `server-permissions-model` | `server/permissions/model.conf` | The `--permissions-model` argument value |\n\n### Environment Variables\n\n| Name                   | Default        | Description                           |\n| :-                     | :-             | :-                                    |\n| `WINVOICE_SERVER_ADDR` | `0.0.0.0:3000` | The address to host the server on     |\n| `WINVOICE_SERVER_GIT`  | `master`       | The `git` branch or tag to build from |\n\n### Secrets\n\n| Name                        | Path                                   | Description                                                                                   |\n| :-                          | :-                                     | :-                                                                                            |\n| `server-cors`               | `config/server/cors/`                  | CORS-related information. See below.                                                          |\n| `db`                        | `config/db/`                           | Databse credentials. See below.                                                               |\n| `server-permissions-policy` | `config/server/permissions/policy.csv` | The `--permissions-policy` argument value.                                                    |\n| `server-ssl`                | `config/server/ssl/`                   | SSL certificates. See below.                                                                  |\n| `server-ssl-cadir`          | `config/server/ssl-cadir/`             | Trust authorities to use within the container. Structured like `/etc/ssl/certs/` in `alpine`. |\n\n#### `db`\n\n| Filename       | Description                                                              |\n| :-             | :-                                                                       |\n| `name.txt`     | The name of the database where `winvoice-server` will store information. |\n| `user.txt`     | The username which `winvoice-server` will use to login to the database.  |\n| `password.txt` | The password which `winvoice-server` will use to login to the database.  |\n\n#### `server-cors`\n\n| Filename    | Description                                              |\n| :-          | :-                                                       |\n| `allow.txt` | Corresponds to the `--cors-allow-origin` argument value. |\n\n#### `server-ssl`\n\n| Filename   | Description                                        |\n| :-         | :-                                                 |\n| `cert.pem` | Corresponds to the `--certificate` argument value. |\n| `key.pem`  | Corresponds to the `--key` argument value.         |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firon-e%2Fwinvoice-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Firon-e%2Fwinvoice-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firon-e%2Fwinvoice-server/lists"}