{"id":23439594,"url":"https://github.com/secrethash/secrets-app","last_synced_at":"2025-04-09T19:57:41.528Z","repository":{"id":263494254,"uuid":"889643216","full_name":"secrethash/secrets-app","owner":"secrethash","description":"Secrets Sharing Application","archived":false,"fork":false,"pushed_at":"2024-12-08T07:40:02.000Z","size":420,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-09T19:57:38.456Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/secrethash.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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-16T21:04:42.000Z","updated_at":"2024-12-20T12:35:41.000Z","dependencies_parsed_at":"2024-11-18T21:51:03.425Z","dependency_job_id":"1cb1bb6b-7721-4d65-b5bd-0a3be4cc5894","html_url":"https://github.com/secrethash/secrets-app","commit_stats":null,"previous_names":["froreco/secrets-app","secrethash/secrets-app"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secrethash%2Fsecrets-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secrethash%2Fsecrets-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secrethash%2Fsecrets-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secrethash%2Fsecrets-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/secrethash","download_url":"https://codeload.github.com/secrethash/secrets-app/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248103910,"owners_count":21048245,"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":[],"created_at":"2024-12-23T15:31:57.487Z","updated_at":"2025-04-09T19:57:41.494Z","avatar_url":"https://github.com/secrethash.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003ca href=\"https://secrethash.dev\" target=\"_blank\"\u003e\u003cimg src=\"./secrets-app.svg\" width=\"250\" alt=\"Secrets Logo\"\u003e\u003c/a\u003e\u003cbr\u003eSharing Secrets with Confidence\u003c/p\u003e\n\n# Secrets Sharing App\n\n\u003e :warning: **This is a completely experimental (proof-of-concept) project and should be used at your own risk.**\n\nSecret sharing application using Asymmetric Encryption (public/private key pair). We can create a new Key Pair and save the Public Key to a Supabase DB table. We can then encrypt a secret with the Public Key and decrypt it with the Private Key.\n\nThe encryption \u0026 decryption is done using `RSA-OAEP` algorithm, for which the keys are 2048 bits long \u0026 supports asymmetric encryption. The application generates \u0026 accepts Private \u0026 Public Keys in `JWK` format.\n\n## On-click deploy\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fsecrethash%2Fsecrets-app%2Ftree%2Fmain\u0026env=NEXT_PUBLIC_SUPABASE_URL,NEXT_PUBLIC_SUPABASE_ANON_KEY\u0026envDescription=Supabase%20URL%20%26%20Keys\u0026project-name=secrets-sharing-app\u0026repository-name=secrets-sharing-app\u0026redirect-url=https%3A%2F%2Fgithub.com%2Fsecrethash%2Fsecrets-app%2Ftree%2Fmain)\n\n## Use Case (example)\n\n- Securely Sharing Username/Password with a team member over an email as an encrypted text\n- Sharing `.env` files with a team member over slack/teams as an encrypted text\n- Sharing sensitive information with a third party\n- Sharing sensitive information with a client\n\n## Features\n\n- 🔑 Create new Key Pair (public/private)\n- 🛅 Save Public Keys to Supabase DB table\n- 🔐 Encrypt a secret with a Public Key (also fetch from supabase)\n- 🔓 Decrypt a secret only by a Private Key\n\n## Roadmap\n\n- [x] **Persistence:** Add Supabase DB table to store Public Keys with titles\n- [x] **Authn:** Add Authentication using [Supabase Auth](https://supabase.com/docs/guides/auth/server-side/nextjs)\n- [ ] **Security:** Add ECDSA (Elliptic Curve Digital Signature Algorithm) or ECDH (Elliptic Curve Diffie-Hellman) support to sign the encrypted secrets for increased security\n- [ ] **Chore:** Cleanup application code style and structure (project was created as a Proof of Concept)\n- [ ] **Authz:** Limit fetch from supabase for authenticated \u0026 authorized users (something roles/permissions)\n\n## Installation\n\nInstall the dependencies:\n\n```bash\nbun install\n```\n\n## Getting Started\n\n1. Copy the `.env.example`  file to  `.env.local`  and fill in the values.\n\n    ```bash\n    cp .env.example .env.local\n    ```\n\n2. Setup Supabase credentials in `.env.local`\n\n3. Create a `public_keys` table in Supabase with the following schema:\n\n    \u003e 💡 You can go to your Project \u003e SQL Editor (left sidebar) \u003e paste the following SQL query and execute it\n\n    ```pgsql\n    create table\n        public.public_keys (\n            id uuid not null default gen_random_uuid (),\n            title text null,\n            key text null,\n            created_at timestamp with time zone not null default now(),\n            constraint public_keys_pkey primary key (id),\n            constraint public_keys_title_key unique (title)\n        ) tablespace pg_default;\n    ```\n\n4. Make sure the **Row Level Security (RLS)** policy are set properly in Supabase for the table `public_keys`. Make sure the `INSERT` \u0026 `SELECT` policies have the role `anon` \u0026 `authenticated` set.\n\n5. Run the development server:\n\n    ```bash\n    bun dev\n    ```\n\n    \u003e Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\n## Registration\n\nAs this tool is meant for internal or personal use, the registration is limited to your projects organization members only (on supabase). To open up the registration you may need to setup custom SMTP provider in the [Supabase Authentication](https://supabase.com/docs/guides/auth/auth-smtp) settings.\n\n## Disclaimer\n\nThis project is for internal purposes only. It is not intended to be used for any production environment. The author or contributors are not responsible for any damages caused by the use of this project. Use it at your own risk.\n\n## Licence\n\nThis project is an open-sourced software licensed under the [MIT license](./LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsecrethash%2Fsecrets-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsecrethash%2Fsecrets-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsecrethash%2Fsecrets-app/lists"}