{"id":24062854,"url":"https://github.com/skystar-p/hako","last_synced_at":"2025-07-29T02:04:50.124Z","repository":{"id":46530992,"uuid":"412793942","full_name":"skystar-p/hako","owner":"skystar-p","description":"Simple file sharing with client-side encryption, powered by Rust and WebAssembly","archived":false,"fork":false,"pushed_at":"2024-11-21T06:32:28.000Z","size":253,"stargazers_count":32,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-23T15:03:03.824Z","etag":null,"topics":["client-side-encryption","encryption","rust","webassembly"],"latest_commit_sha":null,"homepage":"https://hako.skystar.dev","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/skystar-p.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,"zenodo":null}},"created_at":"2021-10-02T12:46:20.000Z","updated_at":"2024-11-24T07:25:26.000Z","dependencies_parsed_at":"2025-04-23T15:02:40.324Z","dependency_job_id":"11a6b0ba-8917-454a-bee6-547b5651b6cf","html_url":"https://github.com/skystar-p/hako","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/skystar-p/hako","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skystar-p%2Fhako","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skystar-p%2Fhako/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skystar-p%2Fhako/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skystar-p%2Fhako/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/skystar-p","download_url":"https://codeload.github.com/skystar-p/hako/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skystar-p%2Fhako/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267617643,"owners_count":24116208,"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","status":"online","status_checked_at":"2025-07-29T02:00:12.549Z","response_time":2574,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["client-side-encryption","encryption","rust","webassembly"],"created_at":"2025-01-09T08:59:04.271Z","updated_at":"2025-07-29T02:04:50.098Z","avatar_url":"https://github.com/skystar-p.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hako\nSimple file sharing with client-side encryption, powered by Rust and WebAssembly  \n\n![preview](./res/preview.png)\n  \nNot feature-packed, but basic functionalities are just working. Feature requests and PR are very welcome.\n\n## Features\n* No external database setup and file-serving proxy needed. (Hako uses SQLite and bundles all frontend assets in its binary)\n* Handy file sharing\n* Handy text-snippet sharing\n* Client-side encryption using `XChacha20Poly1305`\n* Fast and safe implementations thanks to [Rust](https://www.rust-lang.org/)\n* Neat Web UI built with WebAssembly\n* Asynchronous upload, encryption, download, and decryption on your browser.\n\n## Why?\nSharing file safely between two devices is quite annoying. Hardware mediums(like USB flash memory) can be useful, but sharing file between mobile devices or different operating systems are frustrating.\nYou can go with third-party file hosting server or E-mail, but those are not safe and not good for your privacy.  \nHako is web application, which gives you great compatibility among various devices and operating systems. Also, Hako uses client-side encryption, so no one can see your original file, even the Hako server.\n\n## Build\nFor simplicity, Hako bundles frontend dist files into server binary statically. So you **MUST** build frontend web application first, and then build server application.\n\n### Frontend\nYou need two additional tools: [`trunk`](https://trunkrs.dev/) and [`tailwindcss`](https://tailwindcss.com/).\n```sh\n# To install trunk, use:\ncargo install --locked trunk\n\n# To install tailwindcss, use:\nyarn global add tailwindcss\n```\n\nAnd build your WASM application.\n```sh\ncd ./webapp\nrm -rf dist\ntrunk build --release\n```\n\n### Server\nYou need `cargo` to build server. If you don't have it, follow the instructions in [here](https://www.rust-lang.org/tools/install).\n```sh\ncd ./server\ncargo build --release\n```\nHako uses simple SQLite database to store your encrypted files and metadata. So no external database setting is required, but you may give database file path by argument or environment variable. See [here](https://github.com/skystar-p/hako/blob/b8bed17019232452d8ca98ff9a0ae20521af02e1/server/src/config.rs#L9).\n\n\n## Run\nServing Hako application is dead simple. No additional file-serving proxy and external database setup is needed. Just run your Hako server binary behind of HTTP proxy to take advantage of TLS.  \nYou can check configuration info by running:\n```sh\n./hako --help\n```\n\nRunning Hako application is just simple as:\n```sh\n./hako\n\n# ... and open http://localhost:12321/ on your browser.\n```\n\nIf you want to serve Hako in public, serving behind of reverse-proxy with TLS is strongly recommended.\n\nYou can use [Caddy](https://caddyserver.com/) for easy TLS configuration. Example Caddy configuration:\n```\nyour-domain.com {\n    handle * {\n        reverse_proxy localhost:12321\n    }\n}\n```\n\n## To-dos\n* Authentication\n    * WebAuthn\n    * or just plain username-password pair\n* CLI tool\n    * WASM can provide compatibility among various environment, and CLI downloader will provide good performance\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskystar-p%2Fhako","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskystar-p%2Fhako","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskystar-p%2Fhako/lists"}