{"id":22829112,"url":"https://github.com/eric-philippe/range-tes-morts","last_synced_at":"2026-04-09T12:04:28.226Z","repository":{"id":264867670,"uuid":"894151729","full_name":"Eric-Philippe/Range-tes-morts","owner":"Eric-Philippe","description":"Organize the map of your local graveyard","archived":false,"fork":false,"pushed_at":"2024-12-16T21:38:23.000Z","size":2210,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-06T06:41:09.477Z","etag":null,"topics":["angular","docker","golang","graveyard","maps","python","svg"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Eric-Philippe.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2024-11-25T21:04:43.000Z","updated_at":"2024-12-16T21:38:27.000Z","dependencies_parsed_at":"2024-12-12T19:13:21.345Z","dependency_job_id":"733cf9b1-7e56-461e-b6bd-0f9a953a9e2d","html_url":"https://github.com/Eric-Philippe/Range-tes-morts","commit_stats":null,"previous_names":["eric-philippe/range-tes-morts"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eric-Philippe%2FRange-tes-morts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eric-Philippe%2FRange-tes-morts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eric-Philippe%2FRange-tes-morts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eric-Philippe%2FRange-tes-morts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Eric-Philippe","download_url":"https://codeload.github.com/Eric-Philippe/Range-tes-morts/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246400249,"owners_count":20770979,"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":["angular","docker","golang","graveyard","maps","python","svg"],"created_at":"2024-12-12T19:13:18.074Z","updated_at":"2025-12-30T21:28:26.269Z","avatar_url":"https://github.com/Eric-Philippe.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🪦 Range tes morts - Bring out your dead 🪦\n\n`🪦 Range tes morts` is a simple tool to help manage all the deads in a cemetery.\n\nDraw the cemetery map as a SVG, edit the SVG with Python scripts to make it usable, populate the database with Go CLI, and serve the data with a Go server.\nVisualize the data with a higly interactive Angular client offering you an interactive map of the cemetery with a lot of features.\n\nCreate your own cemetery map, change the SVG file, and everything will work.\n\n**🐳 Docker Supported**\n\n![main](img/general.png)\n\n## Table of contents\n\n- [🪦 Range tes morts - Bring out your dead 🪦](#-range-tes-morts---bring-out-your-dead-)\n  - [Table of contents](#table-of-contents)\n  - [Technologies](#technologies)\n  - [Installation](#installation)\n    - [Create the SVG file](#create-the-svg-file)\n    - [Docker](#docker)\n    - [Manual installation](#manual-installation)\n      - [Backend](#backend)\n      - [Frontend](#frontend)\n  - [Usage](#usage)\n    - [Backend CLI](#backend-cli)\n      - [Populate the database](#populate-the-database)\n      - [Excel Backup](#excel-backup)\n      - [List the users](#list-the-users)\n      - [Add a user](#add-a-user)\n      - [Remove a user](#remove-a-user)\n  - [License](#license)\n  - [Changelog](#changelog)\n  - [Improvements](#improvements)\n\n## Technologies\n\n| Name    | Description                                                                      | Version |\n| ------- | -------------------------------------------------------------------------------- | ------- |\n| Python  | Python is used to generate and modify the SVG file representing the cemetery.    | 3.12    |\n| Go      | Go is used as a CLI for the server, and serve the data to the client.            | 1.13    |\n| Node    | Node is used to serve the client.                                                | 21.7    |\n| Angular | Angular is used to visualize the cemetery data with a highly interactive client. | 19.0    |\n\nThe database is a simple SQLite database that is created and populated by the Go Server/CLI.\n\nAll the documentation related to the database can be found in the [database](database) folder. (MCD, MLD, SQL)\n\n## Installation\n\n### Create the SVG file\n\nYou must create a SVG file with the following structure:\n\n```xml\n\u003csvg\u003e\n    \u003cg id=\"Graveyard\"\u003e\n        \u003cg id=\"LOT_NAME\"\u003e\n          \u003crect id=\"LOT_NAME#ID\" /\u003e\n          \u003crect id=\"LOT_NAME#ID\" /\u003e\n          \u003crect id=\"LOT_NAME#ID\" /\u003e\n        \u003c/g\u003e\n    \u003c/g\u003e\n\u003c/svg\u003e\n```\n\nThe main grave frame is a `g` element with the id `Graveyard`.\nInside the Graveyard element, you can have multiple `g` elements representing the lots. Each lot is a `g` element with the `id` attribute. The `id` attribute must be the name of the lot.\n\nEach grave is a `rect` element with an `id` attribute. The `id` attribute must be in the following format: `LOT_NAME#ID`. The `LOT_NAME` is the name of the lot, and the `ID` is the identifier of the grave in the lot.\n\nA `rect` with the id `PATH` is excluded as a grave and represents the outline of the lot.\n\n---\n\nFirst, you need to create the SVG file representing the cemetery. You can use any software to create the SVG file. I've used [Inkscape](https://inkscape.org/) to create the SVG file. You can find the SVG files in the `scripts` folder.\nYou must give a name to every element and order them as described above.\n\nAt this point each element does not have an id.\nThe first **Python script** `scripts/convertInkLabelsToId.py` will convert the labels to ids.\n\nA second **Python script** `scripts/writeNumbersOnMap.py` will write the identifiers on the graves.\n\nThe SVG is now ready to be used.\n\nIt needs to be placed in the `frontend/public` folder in order to be displayed by the client.\nAnd also in the `backend/static` folder in order to automatically populate the database with the help of the CLI.\n\n### Docker\n\nFirst pull the project from the repository:\n\n```bash\ngit clone https://github.com/Eric-Philippe/Range-tes-morts.git\n```\n\nThen create your own .env file in the root of the project:\n\n```bash\ncp .env.example .env\n```\n\nThen build the project with Docker:\n\n```bash\ndocker-compose up --build\n```\n\n### Manual installation\n\n#### Backend\n\nFirst, you need to install the Go dependencies:\n\n```bash\ngo mod download\n```\n\nThen you can build the project:\n\n```bash\ngo build -o range-tes-morts\n```\n\n#### Frontend\n\nFirst, you need to install the Node dependencies:\n\n```bash\nnpm install\n```\n\nThen you can build the project:\n\n```bash\nnpm run build\n```\n\nOr you can serve the project if you have the Angular CLI installed:\n\n```bash\nng serve\n```\n\n## Usage\n\n### Backend CLI\n\nThe backend CLI is used to make an interface between the database and the user. You can either run them from the `main.go` file or use the compiled binary in the docker container.\n\n#### Populate the database\n\n\u003e You must have the SVG file in the `backend/static` folder.\n\n```bash\n./main --migrate\n```\n\nThis command will create the database and populate it with the graves from the SVG file.\n\n#### Excel Backup\n\n```bash\n./main --backup\n```\n\nThis command will create an Excel file with the data from the database.\n\n#### List the users\n\n```bash\n./main --listusers\n```\n\nThis command will list all the users in the database.\n\n#### Add a user\n\n```bash\n./main --newuser -u username -p password\n```\n\nThis command will add a new user to the database with a hashed password.\n\n#### Remove a user\n\n```bash\n./main --delete -u username\n```\n\nThis command will remove a user from the database.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Changelog\n\nYou can find the changelog in the [CHANGELOG.md](CHANGELOG.md) file.\n\n## Improvements\n\n- [ ] Make a complete CLI in Python to manipulate SVG files.\n- [ ] Add a log feature to log every action made by the users.\n- [ ] Migrate the Excel file to the database.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feric-philippe%2Frange-tes-morts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feric-philippe%2Frange-tes-morts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feric-philippe%2Frange-tes-morts/lists"}