{"id":31552352,"url":"https://github.com/psmith0000/ignivault","last_synced_at":"2026-04-17T10:03:38.638Z","repository":{"id":316837991,"uuid":"1043972282","full_name":"PSmith0000/Ignivault","owner":"PSmith0000","description":"full-stack,  password and file vault built with .NET, Blazor WASM","archived":false,"fork":false,"pushed_at":"2025-09-27T01:34:24.000Z","size":179437,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-27T03:26:28.259Z","etag":null,"topics":["blazor","blazor-webassembly","csharp","dotnet","syncfusion"],"latest_commit_sha":null,"homepage":"","language":"C#","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/PSmith0000.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-25T01:54:35.000Z","updated_at":"2025-09-27T01:34:27.000Z","dependencies_parsed_at":"2025-09-27T03:36:57.752Z","dependency_job_id":null,"html_url":"https://github.com/PSmith0000/Ignivault","commit_stats":null,"previous_names":["psmith0000/ignivault"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/PSmith0000/Ignivault","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PSmith0000%2FIgnivault","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PSmith0000%2FIgnivault/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PSmith0000%2FIgnivault/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PSmith0000%2FIgnivault/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PSmith0000","download_url":"https://codeload.github.com/PSmith0000/Ignivault/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PSmith0000%2FIgnivault/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278366633,"owners_count":25975090,"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-10-04T02:00:05.491Z","response_time":63,"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":["blazor","blazor-webassembly","csharp","dotnet","syncfusion"],"created_at":"2025-10-04T19:52:57.703Z","updated_at":"2025-10-04T19:53:00.815Z","avatar_url":"https://github.com/PSmith0000.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eIgnivault 🔑\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  A secure, full-stack \u003cstrong\u003ezero-knowledge\u003c/strong\u003e password and file vault built with .NET, Blazor WebAssembly, and Syncfusion components.\n\u003c/p\u003e\n\u003cdiv\u003e\n  \u003ch1 align=\"center\"\u003eDoxygen Docs\u003c/h1\u003e\n  \u003cp align=\"center\"\u003e\n  https://psmith0000.github.io/ignivault-docs/\n  \u003c/p\u003e\n\u003c/div\u003e\n## Core Concept: Zero-Knowledge Architecture\n\nThe security of this vault relies on a zero-knowledge model. The user's master password is never sent to the server. Instead, it is combined with a unique salt to derive a master encryption key directly in the user's browser using the Web Crypto API. This key is used to encrypt and decrypt vault items with **AES-GCM**. The server only ever stores opaque, encrypted blobs of data.\n\n---\n## ✨ Features\n\n- **Secure User Authentication:**\n    - Registration and a multi-step login flow.\n    - **Two-Factor Authentication (2FA)** with TOTP and recovery codes.\n    - Password reset via secure email links.\n- **Vault Management Dashboard:**\n    - A central dashboard with **Syncfusion Charts and Grids**.\n    - Client-side search and date-range filtering.\n- **Client-Side Cryptography:**\n    - Full CRUD (Create, Read, Update, Delete) with end-to-end encryption.\n    - Secure, streaming uploads and downloads of large files.\n    - A standalone utility page for decrypting downloaded files.\n- **Role-Based Access Control (RBAC):**\n    - A clear distinction between `User` and `Admin` roles.\n- **Admin-Only Features:**\n    - A **Reports Page** for application-wide statistics.\n    - A **User Management Page** to view, lock, unlock, and manage roles.\n    - A detailed audit trail of significant user actions.\n\n---\n## 💻 Technology Stack\n\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eArea\u003c/th\u003e\n      \u003cth\u003eTechnology\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cstrong\u003eBackend\u003c/strong\u003e\u003c/td\u003e\n      \u003ctd\u003eASP.NET Core Web API (.NET 9)\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cstrong\u003eFrontend\u003c/strong\u003e\u003c/td\u003e\n      \u003ctd\u003eBlazor WebAssembly (.NET 9)\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cstrong\u003eUI Components\u003c/strong\u003e\u003c/td\u003e\n      \u003ctd\u003eSyncfusion Blazor\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cstrong\u003eDatabase\u003c/strong\u003e\u003c/td\u003e\n      \u003ctd\u003eEntity Framework Core \u0026 SQL Server\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cstrong\u003eAuthentication\u003c/strong\u003e\u003c/td\u003e\n      \u003ctd\u003eASP.NET Core Identity \u0026 JWT\u003c/td\u003e\n    \u003c/tr\u003e\n     \u003ctr\u003e\n      \u003ctd\u003e\u003cstrong\u003eEmail\u003c/strong\u003e\u003c/td\u003e\n      \u003ctd\u003eSendGrid\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cstrong\u003eDeployment\u003c/strong\u003e\u003c/td\u003e\n      \u003ctd\u003eMicrosoft Azure\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n---\n## 🚀 Getting Started\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cstrong\u003eClick to view setup instructions\u003c/strong\u003e\u003c/summary\u003e\n  \n  ### Prerequisites\n  - .NET 9 SDK\n  - Visual Studio 2022 or later\n  - SQL Server (LocalDB, Express, or full version)\n\n  ### Configuration\n  1. Clone the repository.\n  2. In the `ignivault.WebAPI` project, rename `appsettings.Example.json` to `appsettings.Development.json`.\n  3. Fill in the required values:\n      - `ConnectionStrings:DefaultConnection`\n      - `Jwt:Key`\n      - `SendGrid:ApiKey`\n      - `AdminUsers`\n  4. In the `ignivault.App` project's `wwwroot` folder, rename `appsettings.Example.json` to `appsettings.Development.json`.\n  5. Fill in the required values:\n      - `ApiBaseAddress`\n      - `SyncfusionLicenseKey`\n\n  ### Running the Application\n  1. Open the solution (`.sln`) in Visual Studio.\n  2. In the **Package Manager Console**, set the \"Default project\" to `ignivault.WebAPI`.\n  3. Run the command `Update-Database`.\n  4. Set `ignivault.WebAPI` as the startup project and run the application (F5).\n\n\u003c/details\u003e\n\n---\n## ☁️ Deployment\n\nThe application is designed to be deployed to **Microsoft Azure**. The process involves creating an **Azure SQL Database** and an **Azure App Service**, and configuring all production secrets in the App Service Configuration.\n\n---\n## 📜 License\n\nThis project is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpsmith0000%2Fignivault","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpsmith0000%2Fignivault","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpsmith0000%2Fignivault/lists"}