[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-78633":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":16,"starSnapshotCount":16,"syncStatus":36,"lastSyncTime":37,"discoverSource":38},78633,"enclosed","CorentinTh\u002Fenclosed","CorentinTh","Minimalistic web app designed for sending private and secure notes.","https:\u002F\u002Fenclosed.cc",null,"TypeScript",2020,179,7,38,0,1,5,12,3,64.47,"Apache License 2.0",false,"main",[26,27,28,29,30,31,32],"end-to-end-encryption","minimalist","note","pastebin","secure","self-hosted","share","2026-06-12 04:01:23","\u003Cp align=\"center\">\n\u003Cpicture>\n    \u003Csource srcset=\".\u002F.github\u002Ficon-dark.png\" media=\"(prefers-color-scheme: light)\">\n    \u003Csource srcset=\".\u002F.github\u002Ficon-light.png\" media=\"(prefers-color-scheme: dark)\">\n    \u003Cimg src=\".\u002F.github\u002Ficon-dark.png\" alt=\"Header banner\">\n\u003C\u002Fpicture>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">\n  Enclosed - Send private and secure notes\n\u003C\u002Fh1>\n\u003Cp align=\"center\">\n  Minimalistic web application designed for sending end-to-end encrypted notes and files.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fenclosed.cc\">Demo\u003C\u002Fa>\n  \u003Cspan>&nbsp;&nbsp;•&nbsp;&nbsp;\u003C\u002Fspan>\n  \u003Ca href=\"https:\u002F\u002Fdocs.enclosed.cc\">Docs\u003C\u002Fa>\n  \u003Cspan>&nbsp;&nbsp;•&nbsp;&nbsp;\u003C\u002Fspan>\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@enclosed\u002Fcli\">CLI\u003C\u002Fa>\n  \u003Cspan>&nbsp;&nbsp;•&nbsp;&nbsp;\u003C\u002Fspan>\n  \u003Ca href=\"https:\u002F\u002Fdocs.enclosed.cc\u002Fself-hosting\u002Fdocker\">Self-hosting\u003C\u002Fa>\n\u003C\u002Fp>\n\n## Introduction\n\n**Enclosed** is a minimalistic web application designed for sending private and secure notes.\n\nAll notes are end-to-end encrypted, ensuring that the server and storage have zero knowledge of the content. Users can set a password, define an expiration period (TTL), and choose to have the note self-destruct after being read.\n\nA live instance is available at [enclosed.cc](https:\u002F\u002Fenclosed.cc).\n\n[![Enclosed](.\u002F.github\u002Fenclosed-mockup.png)](https:\u002F\u002Fenclosed.cc)\n\n## Features\n\n- **End-to-End Encryption**: Your notes are encrypted on the client side, using AES-GCM with a 256-bit key derived using PBKDF2.\n- **File Attachments**: Share files securely with your notes.\n- **Zero Knowledge**: The server does not have access to the content of the notes or files.\n- **Configurable Security Options**: Set a password, expiration time, and choose self-destruction after the note is read.\n- **Minimalistic UI**: Simple and intuitive user interface for quick note sharing.\n- **i18n Support**: Available in multiple languages.\n- **Authentication**: Optional email\u002Fpassword authentication to create notes.\n- **Dark Mode**: A dark theme for late-night note sharing.\n- **Responsive Design**: Works on all devices, from desktops to mobile phones.\n- **Open Source**: The source code is available under the Apache 2.0 License.\n- **Self-Hostable**: Run your instance of Enclosed for private note sharing.\n- **CLI**: A command-line interface for creating notes from the terminal.\n- **Very low environmental impact**: the app and the docs is rated A+ on websitecarbon.com (see [here](https:\u002F\u002Fwww.websitecarbon.com\u002Fwebsite\u002Fenclosed-cc\u002F) and [here](https:\u002F\u002Fwww.websitecarbon.com\u002Fwebsite\u002Fdocs-enclosed-cc\u002F)).\n\n## Self host\n\n### Try it with Docker\n\nYou can quickly run the application using Docker.\n\n```bash\ndocker run -d --name enclosed --restart unless-stopped -p 8787:8787 corentinth\u002Fenclosed\n```\n\n### To go further\n\nPlease refer to the [self-hosting documentation](https:\u002F\u002Fdocs.enclosed.cc\u002Fself-hosting\u002Fdocker) for more information on how to configure and run the application.\nFor example:\n\n- [Setup persistent storage](https:\u002F\u002Fdocs.enclosed.cc\u002Fself-hosting\u002Fdocker#docker-with-volume-persistence)\n- [Use rootless image](https:\u002F\u002Fdocs.enclosed.cc\u002Fself-hosting\u002Fdocker#rootless-and-non-rootless-docker-images)\n- [Use Docker Compose](https:\u002F\u002Fdocs.enclosed.cc\u002Fself-hosting\u002Fdocker-compose)\n\n### Configuration\n\nYou can refer to the [configuration documentation](https:\u002F\u002Fdocs.enclosed.cc\u002Fself-hosting\u002Fconfiguration) for more information on how to configure the application.\n\n## How It Works\n\n1. **Note Creation**: A user creates a note with some content and optionally sets a password.\n2. **Key Generation**: A **base key** is generated on the client side to ensure encryption, even if no password is set.\n3. **Master Key Derivation**: A **master key** is derived from the base key and the optional password using **PBKDF2 with SHA-256**.\n4. **Note Encryption**: The note is encrypted using the master key with **AES-GCM** encryption.\n5. **Sending to Server**: The encrypted note is sent to the server along with some metadata (ttl, is the note password-protected, should it self-destruct after reading).\n6. **Storage and ID Assignment**: The server stores the encrypted note and provides an **ID** for it.\n7. **Link Generation**: A **link** is generated that includes the note ID and the base key (included as a URL hash fragment to maximize security since hashes are not sent to the server).\n8. **Link Sharing**: The link is shared with the intended recipient.\n9. **Note Retrieval**: The recipient opens the link, and the app fetches the encrypted note and metadata from the server using the note ID.\n10. **Key Extraction**: The base key is extracted from the URL hash fragment.\n11. **Password Prompt (If Applicable)**: If the note is password-protected, the recipient is prompted to enter the password.\n12. **Master Key Derivation**: The master key is derived from the base key and the entered password using **PBKDF2 with SHA-256**.\n13. **Note Decryption**: The note is decrypted using the master key with **AES-GCM** and can now be read by the recipient.\n\nThis ensures that the note remains securely encrypted during transmission and storage, with decryption only possible by those with the correct link and (if applicable) password.\n\n## CLI\n\nThe Enclosed CLI allows you to create notes from the terminal. You can install it globally using npm, yarn, or pnpm.\n\n### Installation\n\n```bash\n# with npm\nnpm install -g @enclosed\u002Fcli\n\n# with yarn\nyarn global add @enclosed\u002Fcli\n\n# with pnpm\npnpm add -g @enclosed\u002Fcli\n```\n\n### Create a note\n\n```bash\n# Basic usage\nenclosed create \"Hello, World!\"\n\n# Using stdin\ncat file.txt | enclosed create\n\n# With full options\nenclosed create --deleteAfterReading --password \"password\" --ttl 3600 \"Hello, World!\"\n```\n\n### View a note\n\n```bash\n# The password will be prompted if the note is password-protected\nenclosed view \u003Cnote-url>\n\n# Or you can provide the password directly\nenclosed view --password \"password\" \u003Cnote-url>\n```\n\n### Configure the enclosed instance to use\n\n```bash\n# By default, the CLI uses the public instance at enclosed.cc\nenclosed config set instance-url https:\u002F\u002Fenclosed.cc\n```\n\n## Project Structure\n\nThis project is organized as a monorepo using `pnpm` workspaces. The structure is as follows:\n\n- **[packages\u002Fapp-client](.\u002Fpackages\u002Fapp-client\u002F)**: Frontend application built with SolidJS.\n- **[packages\u002Fapp-server](.\u002Fpackages\u002Fapp-server\u002F)**: Backend application using HonoJS.\n- **[packages\u002Fdeploy-cloudflare](.\u002Fpackages\u002Fdeploy-cloudflare\u002F)**: Cloudflare Pages build scripts and configuration.\n- **[packages\u002Flib](.\u002Fpackages\u002Flib\u002F)**: Core functionalities of Enclosed.\n- **[packages\u002Fcli](.\u002Fpackages\u002Fcli\u002F)**: Command-line interface for Enclosed.\n\n## Contributing\n\nContributions are welcome! Please refer to the [`CONTRIBUTING.md`](.\u002FCONTRIBUTING.md) file for guidelines on how to get started, report issues, and submit pull requests.\nYou can find easy-to-pick-up tasks with the [`good first issue` label](https:\u002F\u002Fgithub.com\u002FCorentinTh\u002Fenclosed\u002Fissues?q=sort%3Aupdated-desc+is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22).\n\n## License\n\nThis project is licensed under the Apache 2.0 License. See the [LICENSE](.\u002FLICENSE) file for more information.\n\n## Credits and Acknowledgements\n\nThis project is crafted with ❤️ by [Corentin Thomasset](https:\u002F\u002Fcorentin.tech).\nIf you find this project helpful, please consider [supporting my work](https:\u002F\u002Fbuymeacoffee.com\u002Fcthmsst).\n\nThank you to all the contributors who have helped make Enclosed better!\n\n[![Contributors](https:\u002F\u002Fcontrib.rocks\u002Fimage?repo=CorentinTh\u002Fenclosed)](https:\u002F\u002Fgithub.com\u002FCorentinTh\u002Fenclosed\u002Fgraphs\u002Fcontributors)\n\n### Stack\n\nEnclosed would not have been possible without the following open-source projects:\n\n- **Frontend**\n  - **[SolidJS](https:\u002F\u002Fwww.solidjs.com)**: A declarative JavaScript library for building user interfaces.\n  - **[Shadcn Solid](https:\u002F\u002Fshadcn-solid.com\u002F)**: UI components library for SolidJS based on Shadcn designs.\n  - **[UnoCSS](https:\u002F\u002Funocss.dev\u002F)**: An instant on-demand atomic CSS engine.\n  - **[Tabler Icons](https:\u002F\u002Ftablericons.com\u002F)**: A set of open-source icons.\n  - And other dependencies listed in the **[client package.json](.\u002Fpackages\u002Fapp-client\u002Fpackage.json)**\n- **Backend**\n  - **[HonoJS](https:\u002F\u002Fhono.dev\u002F)**: A small, fast, and lightweight web framework for building APIs.\n  - **[Unstorage](https:\u002F\u002Funstorage.unjs.io\u002F)**: An unified key-value storage API.\n  - **[Zod](https:\u002F\u002Fgithub.com\u002Fcolinhacks\u002Fzod)**: A TypeScript-first schema declaration and validation library.\n  - And other dependencies listed in the **[server package.json](.\u002Fpackages\u002Fapp-server\u002Fpackage.json)**\n\n### Hosting\n\nThe [live instance](https:\u002F\u002Fenclosed.cc) of Enclosed is hosted on [Cloudflare Pages](https:\u002F\u002Fpages.cloudflare.com\u002F) using [Cloudflare KV](https:\u002F\u002Fdevelopers.cloudflare.com\u002Fkv\u002F) for storage.\n\n### Inspiration\n\n- **[PrivateBin](https:\u002F\u002Fgithub.com\u002FPrivateBin\u002FPrivateBin)**: A minimalist, open-source online pastebin where the server has zero knowledge of pasted data.\n- **[Bitwarden Send](https:\u002F\u002Fbitwarden.com\u002Fproducts\u002Fsend\u002F)**: A secure and ephemeral way to share sensitive information.\n- The **[shadcn playground example](https:\u002F\u002Fui.shadcn.com\u002Fexamples\u002Fplayground)** for the ui\n\n## Contact Information\n\nPlease use the issue tracker on GitHub for any questions or feedback.\n","Enclosed 是一个用于发送私密且安全的笔记和文件的极简主义网页应用。其核心功能包括端到端加密，确保服务器和存储对内容完全无感知；支持文件附件、自定义密码保护、设置过期时间以及阅读后自动销毁等功能。该应用采用TypeScript编写，界面简洁直观，并提供多语言支持与暗黑模式。适用于需要在互联网上安全地分享敏感信息或临时数据的场景，例如个人之间的私密通信、企业内部的信息交换等。此外，Enclosed还支持自托管部署，用户可通过Docker轻松运行自己的实例，进一步增强了数据的安全性和隐私性。",2,"2026-06-11 03:57:06","high_star"]