{"id":24234740,"url":"https://github.com/awais-amjed/encrypted-chat","last_synced_at":"2025-06-13T18:09:17.968Z","repository":{"id":102991402,"uuid":"486952748","full_name":"awais-amjed/encrypted-chat","owner":"awais-amjed","description":"Self Hosted End to End Encrypted Chat System - Created in Flutter with Appwrite as Backend","archived":false,"fork":false,"pushed_at":"2024-01-17T13:44:51.000Z","size":9925,"stargazers_count":10,"open_issues_count":3,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-09T20:43:51.315Z","etag":null,"topics":["appwrite","dart","flutter","hackathon"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/awais-amjed.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-04-29T11:51:14.000Z","updated_at":"2024-11-05T19:10:54.000Z","dependencies_parsed_at":"2025-01-14T17:09:50.979Z","dependency_job_id":"88819ebf-ccb0-4b0e-a142-f30e615c6f37","html_url":"https://github.com/awais-amjed/encrypted-chat","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/awais-amjed/encrypted-chat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awais-amjed%2Fencrypted-chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awais-amjed%2Fencrypted-chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awais-amjed%2Fencrypted-chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awais-amjed%2Fencrypted-chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/awais-amjed","download_url":"https://codeload.github.com/awais-amjed/encrypted-chat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awais-amjed%2Fencrypted-chat/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259695307,"owners_count":22897514,"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":["appwrite","dart","flutter","hackathon"],"created_at":"2025-01-14T17:09:40.730Z","updated_at":"2025-06-13T18:09:17.945Z","avatar_url":"https://github.com/awais-amjed.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg style=\"height: 110px;\" src=\"https://github.com/awais-amjed/encrypted-chat/assets/73714615/56e6e249-b179-4a40-b542-0a56fa12bda1\" alt=\"Built with Appwrite\" align=\"right\"/\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\n\u003cimg style=\"height: 100px;\" src=\"https://github.com/awais-amjed/encrypted-chat/assets/73714615/fa4e70f3-3927-4fea-9bfb-a087604f5ee6\" alt=\"Built with Flutter\" align=\"right\"/\u003e\n\u003cimg style=\"height: 100px\" src=\"https://user-images.githubusercontent.com/73714615/168187249-9a98411f-43d5-40d1-909d-0876352ab0dd.png\" /\u003e\n\n# Encrypted Chat\n\n\n\u003e Self Hosted End to End Encrypted Chat System\n\n\u003cbr\u003e\n\u003cbr\u003e\n\u003cp style=\"display: flex; align-items: start; gap: 10px\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/73714615/168186996-b98e2c0f-7ed3-4f97-8ab1-f331e76b4ac7.png\" width=\"13.5%\" /\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/73714615/168187157-38f1efd8-03f3-4f96-b533-692baea4ec01.png\" width=\"13.5%\" /\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/73714615/168187162-a968c012-5e54-4aad-b979-5809a13dd206.png\" width=\"13.5%\" /\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/73714615/168187170-c3ade25e-be0b-4dfd-8878-ac170ad7bffd.png\" width=\"13.5%\" /\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/73714615/168187022-28bea1e7-a7b7-4854-b276-e459a83c4c6a.png\" width=\"13.5%\" /\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/73714615/168187177-b8498961-d363-4898-8d90-f421051fb118.png\" width=\"13.5%\" /\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/73714615/168187032-6b248e11-b876-46d3-a77a-e1eb302e37a3.png\" width=\"13.5%\" /\u003e\n\u003c/p\u003e\n\n#\nWith the power of Flutter, Appwrite, and this app, you can easily host your Encrypted chat system in a few simple steps. No more fear of being snooped on, since you have all the control over your messages that are secured using a private key - and an even more awesome thing is that it's open-source so you can modify it to make it however you want it to be. The encryption is based on public-private key pairs where the private key is generated on the device and you can keep a backup of it using a QR code generated inside the app, which makes switching devices easy without data loss. The theme is based on Appwrite's website - and everything else is just CUTE AND SECURE.\n\n# Top Features \u0026nbsp; \u003cimg src=\"./resources/medal.png\" height=\"30\" align=\"justify\"/\u003e\n\n- End To End Encrypted\n- Self Hosted\n- Private and Secure\n- Realtime Chat and Notifications\n- Beautiful Animations \u0026 avatars\n\n## Getting Started \u0026nbsp; \u003cimg src=\"./resources/run.png\" height=\"30\" align=\"justify\"/\u003e\n\nTo get a local copy up and running follow these steps.\n\n# Setup Instructions \u0026nbsp; \u003cimg src=\"./resources/computer.png\" height=\"30\" align=\"justify\"/\u003e\n\n## Appwrite Installation\n- Follow the steps mentioned on the official appwrite website for [instllation](https://appwrite.io/docs/installation) with docker\n- In the directory where you ran the docker command, you will find a `.env` file\n- Edit that file, find `_APP_FUNCTIONS_ENVS` and set it's value to `dart-2.16`\n- Also delete the `_APP_FUNCTIONS_ENVS` field - Save the file\n- In the same directory open a terminal or cmd and run the following command\n```\ndocker-compose up -d\n```\n- This completes the docker setup\n\n## Project Setup \u0026nbsp; \u003cimg src=\"./resources/project_icon.png\" height=\"30\" align=\"justify\"/\u003e\n- Open a browser and go to the `localhost:80` or if you set some other port\n- Signup and remember the credentials - you will need them\n- Create a new Project as shown below `Keep the project id as ecat` unless you want to rebuild your application.\n\n![screenshot](./resources/project.png)\n\n- Create an API Key with atleast these 12 permissions\n\n![screenshot](./resources/api.png)\n\n- Register Your Flutter Project `KEEP PACKAGE NAME AS IS` `coding.fries.ecat`\n\n![screenshot](./resources/registration.png)\n\n## Database and Functions \u0026nbsp; \u003cimg src=\"./resources/database-storage.png\" height=\"30\" align=\"justify\"/\u003e\n\n- Install the [appwrite cli](https://appwrite.io/docs/command-line)\n- Open a directory and login to appwrite cli in a terminal or cmd\n```\nappwrite login\n```\n- Enter credentails used for signing up - Leave host as default unless you know what you are doing\n- Download this script for [windows](./resources/create.cmd) or for [linux](./resources/create.sh)\n- Run the script with following arguments\nFor Linux\n```\n./create.sh yourProjectID yourProjectName yourHost yourAPIKey\n```\nFor Windows\n```\n./create.cmd yourProjectID yourProjectName yourHost yourAPIKey\n```\n- This will create an appwrte.json in your directory\n- Now Download this [functions.zip](./resources/functions.zip) and extract in the same directory\n- Run the follwing command\n```\nappwrite deploy --all\n```\n- Select all `a` and `enter` then again select all `a` and `enter`\n- This will setup everything for you\n\n# Known Bug \u0026nbsp; \u003cimg src=\"./resources/bug.png\" height=\"30\" align=\"justify\"/\u003e\n\n- The above command `appwrite deploy -all` might fail while deploying functions and give you an error `Unexpected token`\n- If that's the case then you will have to create functions manually\n- Open appwrite in browser `localhost:80` and go to functions\n- You have to add three new functions with following ids:\n```\n1. createMessageCollection\n2. createUserDocument\n3. notifyUser\n```\nFor all three of these you have to add these variables in the settings\n\n![image](https://user-images.githubusercontent.com/73714615/168171851-8cce52fd-762c-4341-aa7e-53f48191c407.png)\n\nFor `createMessageCollection` and `notifyUser` add this in Execute access section:\n```\nrole:member\n```\n\n![image](https://user-images.githubusercontent.com/73714615/168172099-7cd029af-2499-4f7a-bc77-750f3191e300.png)\n\nand For `createUserDocument` check the account.create event\n\n![image](https://user-images.githubusercontent.com/73714615/168172332-72fcf10d-4937-4320-bab4-a394051fe608.png)\n\n- Now run these [commands](./resources/commands.txt) one by one in the same directory where you have the appwrite.json and functions\n- After this all your functions will be deployed\n\n## Usage \u0026nbsp; \u003cimg src=\"./resources/smartphone.png\" height=\"30\" align=\"justify\"/\u003e\n\nDownload the apk, install and Open your app - Set your setup information by clicking the settings icon on the login screen - Enjoy free and private encrypted chat\n\n# Future Improvements \u0026nbsp; \u003cimg src=\"./resources/virtual-reality.png\" height=\"30\" align=\"justify\"/\u003e\n\n- Multi Platform Support - especially Web\n- Push Notifications implementation (when appwrite releases support or maybe using firebase)\n- File Transfer - soon\n- Message Data Persistance\n\n## Authors \u0026nbsp; \u003cimg src=\"./resources/poem.png\" height=\"30\" align=\"justify\"/\u003e\n\n👤 **Awais Amjed**\n\n- GitHub: [@Awais Amjed](https://github.com/awais-amjed)\n- LinkedIn: [LinkedIn](https://www.linkedin.com/in/awais-amjed)\n\n## 🤝 Contributing\n\nContributions, issues, and feature requests are welcome!\n\nFeel free to check the [issues page](../../issues/).\n\n## Show your support \u0026nbsp; \u003cimg src=\"./resources/support.png\" height=\"30\" align=\"justify\"/\u003e\n\nGive a ⭐️ if you like this project!\n\n## Acknowledgments \u0026nbsp; \u003cimg src=\"./resources/medal.png\" height=\"30\" align=\"justify\"/\u003e\n\n- FlatIcons - All images used are from [Flaticon](https://www.flaticon.com/) - Love their collections ❤️\n\n## Attributions\n\n- \u003ca href=\"https://www.flaticon.com/free-icons/cat\" title=\"cat icons\"\u003eCat icons created by Freepik - Flaticon\u003c/a\u003e\n- \u003ca href=\"https://www.flaticon.com/free-icons/identity\" title=\"identity icons\"\u003eIdentity icons created by srip - Flaticon\u003c/a\u003e\n- \u003ca href=\"https://www.flaticon.com/free-icons/server\" title=\"server icons\"\u003eServer icons created by Freepik - Flaticon\u003c/a\u003e\n- \u003ca href=\"https://www.flaticon.com/free-icons/user\" title=\"user icons\"\u003eUser icons created by Freepik - Flaticon\u003c/a\u003e\n- \u003ca href=\"https://www.flaticon.com/free-icons/access\" title=\"access icons\"\u003eAccess icons created by Eucalyp - Flaticon\u003c/a\u003e\n- \u003ca href=\"https://www.flaticon.com/free-icons/password\" title=\"password icons\"\u003ePassword icons created by Freepik - Flaticon\u003c/a\u003e\n- \u003ca href=\"https://www.flaticon.com/free-icons/feature\" title=\"feature icons\"\u003eFeature icons created by Flat Icons - Flaticon\u003c/a\u003e\n- \u003ca href=\"https://www.flaticon.com/free-icons/computer\" title=\"computer icons\"\u003eComputer icons created by Freepik - Flaticon\u003c/a\u003e\n- \u003ca href=\"https://www.flaticon.com/free-icons/run\" title=\"run icons\"\u003eRun icons created by Freepik - Flaticon\u003c/a\u003e\n- \u003ca href=\"https://www.flaticon.com/free-icons/install\" title=\"install icons\"\u003eInstall icons created by Freepik - Flaticon\u003c/a\u003e\n- \u003ca href=\"https://www.flaticon.com/free-icons/project\" title=\"project icons\"\u003eProject icons created by Freepik - Flaticon\u003c/a\u003e\n- \u003ca href=\"https://www.flaticon.com/free-icons/database\" title=\"database icons\"\u003eDatabase icons created by phatplus - Flaticon\u003c/a\u003e\n- \u003ca href=\"https://www.flaticon.com/free-icons/bug\" title=\"bug icons\"\u003eBug icons created by Freepik - Flaticon\u003c/a\u003e\n- \u003ca href=\"https://www.flaticon.com/free-icons/app\" title=\"app icons\"\u003eApp icons created by Freepik - Flaticon\u003c/a\u003e\n- \u003ca href=\"https://www.flaticon.com/free-icons/vr\" title=\"vr icons\"\u003eVr icons created by Freepik - Flaticon\u003c/a\u003e\n- \u003ca href=\"https://www.flaticon.com/free-icons/poem\" title=\"poem icons\"\u003ePoem icons created by Smashicons - Flaticon\u003c/a\u003e\n- \u003ca href=\"https://www.flaticon.com/free-icons/collaboration\" title=\"collaboration icons\"\u003eCollaboration icons created by Freepik - Flaticon\u003c/a\u003e\n- \u003ca href=\"https://www.flaticon.com/free-icons/quality\" title=\"quality icons\"\u003eQuality icons created by Freepik - Flaticon\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawais-amjed%2Fencrypted-chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fawais-amjed%2Fencrypted-chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawais-amjed%2Fencrypted-chat/lists"}