{"id":20325335,"url":"https://github.com/ericfrancis12/tree-server","last_synced_at":"2026-06-05T08:31:44.947Z","repository":{"id":243966127,"uuid":"813394172","full_name":"EricFrancis12/tree-server","owner":"EricFrancis12","description":"Serve Files at Lightning Speed according to the Tree Structure of your File System","archived":false,"fork":false,"pushed_at":"2024-07-29T15:33:16.000Z","size":21,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-01T08:53:41.651Z","etag":null,"topics":["file","fileserver","filesystem","go","golang","server"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/repository/docker/ericfrancis12/tree-server/general","language":"Go","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/EricFrancis12.png","metadata":{"files":{"readme":"README.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":"2024-06-11T02:15:40.000Z","updated_at":"2024-07-29T15:33:19.000Z","dependencies_parsed_at":"2024-07-29T20:01:57.029Z","dependency_job_id":null,"html_url":"https://github.com/EricFrancis12/tree-server","commit_stats":null,"previous_names":["ericfrancis12/tree-server"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EricFrancis12%2Ftree-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EricFrancis12%2Ftree-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EricFrancis12%2Ftree-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EricFrancis12%2Ftree-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EricFrancis12","download_url":"https://codeload.github.com/EricFrancis12/tree-server/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241341844,"owners_count":19947108,"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":["file","fileserver","filesystem","go","golang","server"],"created_at":"2024-11-14T19:39:31.366Z","updated_at":"2026-06-05T08:31:44.887Z","avatar_url":"https://github.com/EricFrancis12.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tree Server\nServe Files at Lightning Speed according to the Tree Structure of your File System\n\n## Diagram\n```base\n\n$ ./tree-server.exe --PORT=3000\n\n|-- Documents\n    |-- spreadsheets\n        |-- third-quarter-report.csv    --\u003e     http://localhost:3000/Documents/spreadsheets/third-quarter-report.csv\n|-- Pictures\n    |-- family-photos\n        |-- first-birthday.jpeg         --\u003e     http://localhost:3000/Pictures/family-photos/first-birthday.jpeg\n    |-- screenshots\n        |-- screenshot.png              --\u003e     http://localhost:3000/Pictures/screenshots/screenshot.png\n\n```\n\n## Getting Started\nMake sure you have [Go](https://go.dev/doc/install) installed.\n\nClone the repo:\n```\ngit clone https://github.com/EricFrancis12/tree-server.git\n```\n\n```\ncd tree-server\n```\n\n### Option A: Quickstart (Run the Application without building)\nRun the following command, optionally specifying a port (PORT) and working directory (WD):\n```\ngo run . --PORT=3000 --WD=./\n```\n\nIn the example above, `--WD=./` means the contents of this repo will be served on port 3000.\n\n### Option B: Build and Run\nRun the following command:\n```\ngo build .\n```\n\nThis will create a binary file located at `./tree-server`.\n\nRun the binary, optionally specifying a port (PORT) and working directory (WD).\n\nNote that if no working directory is specified, the working directory will be the location where the binary is ran. This means you can copy the binary to anywhere in the file system to serve its contents.\n```\n./tree-server --PORT=3000 --WD=./\n```\n\n### Option C: Run via Docker\nMake sure you have [Docker](https://docs.docker.com/engine/install) installed.\n\nBuild the Docker Image:\n```\ndocker build -t tree-server .\n```\n\nRun it using the following command:\n```\ndocker run -p 3000:3000 -v .:/app/serve --name tree-server tree-server\n```\n\nThe contents of the `/app/serve` directory located inside the container will be served. To bind `/app/serve` to a directory on your local machine, use a bind mount. In the above command, we are binding the current local directory `.` to the `/app/serve` directory.\n\nFor more information on bind mounts, [click here](https://docs.docker.com/storage/bind-mounts/).\n\nFor more information on port mapping using the `-p` flag, [click here](https://docs.docker.com/network/#published-ports)\n\n## Using the Application\nOnce the Application is running, visit it at your chosen port:\n\n[http://localhost:3000](http://localhost:3000)\n\n### Downloading files\nUse `dl=1` or `download=1` to download the file if it exists.\n\nExample: http://localhost:3000/my/file.txt?dl=1\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericfrancis12%2Ftree-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fericfrancis12%2Ftree-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericfrancis12%2Ftree-server/lists"}