{"id":50966965,"url":"https://github.com/naveed-gung/botanika-desktop","last_synced_at":"2026-06-18T21:04:34.005Z","repository":{"id":353924952,"uuid":"1220121652","full_name":"naveed-gung/botanika-desktop","owner":"naveed-gung","description":"Botanika Desktop is a modern Windows-based administrative application built using C# WinForms. It serves as the administrative CRM counterpart to the Botanika E-commerce Platform, enabling structured real-time management of business data such as products, clients, orders, and payments.","archived":false,"fork":false,"pushed_at":"2026-04-26T09:55:25.000Z","size":146,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-26T10:09:04.829Z","etag":null,"topics":["csharp","dotnet","firebase","firebase-auth"],"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/naveed-gung.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":"2026-04-24T15:09:55.000Z","updated_at":"2026-04-26T09:55:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/naveed-gung/botanika-desktop","commit_stats":null,"previous_names":["naveed-gung/botanika-desktop"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/naveed-gung/botanika-desktop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naveed-gung%2Fbotanika-desktop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naveed-gung%2Fbotanika-desktop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naveed-gung%2Fbotanika-desktop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naveed-gung%2Fbotanika-desktop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/naveed-gung","download_url":"https://codeload.github.com/naveed-gung/botanika-desktop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naveed-gung%2Fbotanika-desktop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34507178,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-18T02:00:06.871Z","response_time":128,"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":["csharp","dotnet","firebase","firebase-auth"],"created_at":"2026-06-18T21:04:33.192Z","updated_at":"2026-06-18T21:04:33.998Z","avatar_url":"https://github.com/naveed-gung.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003c!-- Custom SVG Banner --\u003e\n\u003cimg src=\"https://capsule-render.vercel.app/api?type=waving\u0026color=0:2D5A27,50:4A7C59,100:8FBC8F\u0026height=220\u0026section=header\u0026text=🌿%20Botanika%20Desktop\u0026fontSize=42\u0026fontColor=FFFFFF\u0026fontAlignY=35\u0026desc=Admin%20CRM%20%E2%80%A2%20Inventory%20%E2%80%A2%20Analytics\u0026descSize=18\u0026descAlignY=55\u0026descColor=C8E6C9\u0026animation=fadeIn\" width=\"100%\" /\u003e\n\n\u003c!-- Badges Row 1 --\u003e\n\u003cp\u003e\n  \u003ca href=\"#\"\u003e\u003cimg src=\"https://img.shields.io/badge/Platform-Windows-0078D6?style=for-the-badge\u0026logo=windows\u0026logoColor=white\" /\u003e\u003c/a\u003e\n  \u003ca href=\"#\"\u003e\u003cimg src=\"https://img.shields.io/badge/.NET_Framework-4.7.2-512BD4?style=for-the-badge\u0026logo=dotnet\u0026logoColor=white\" /\u003e\u003c/a\u003e\n  \u003ca href=\"#\"\u003e\u003cimg src=\"https://img.shields.io/badge/UI-WinForms-68217A?style=for-the-badge\u0026logo=visualstudio\u0026logoColor=white\" /\u003e\u003c/a\u003e\n  \u003ca href=\"#\"\u003e\u003cimg src=\"https://img.shields.io/badge/Backend-Firebase-FFCA28?style=for-the-badge\u0026logo=firebase\u0026logoColor=black\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003c!-- Badges Row 2 --\u003e\n\u003cp\u003e\n  \u003ca href=\"#\"\u003e\u003cimg src=\"https://img.shields.io/badge/Architecture-Layered_MVC-2D5A27?style=flat-square\" /\u003e\u003c/a\u003e\n  \u003ca href=\"#\"\u003e\u003cimg src=\"https://img.shields.io/badge/Auth-Service_Account_JWT-4A7C59?style=flat-square\" /\u003e\u003c/a\u003e\n  \u003ca href=\"#\"\u003e\u003cimg src=\"https://img.shields.io/badge/Data-Firestore_REST_API-FF6F00?style=flat-square\" /\u003e\u003c/a\u003e\n  \u003ca href=\"#\"\u003e\u003cimg src=\"https://img.shields.io/badge/Status-Completed-brightgreen?style=flat-square\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr/\u003e\n\n\u003c!-- Decorative Divider --\u003e\n\u003cimg src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"80%\"\u003e\n\n\u003cbr/\u003e\n\n\u003ci\u003eA modern, premium admin CRM desktop application — the administrative backbone of the \u003ca href=\"https://botanika-754.netlify.app\"\u003eBotanika\u003c/a\u003e plant e-commerce ecosystem.\u003c/i\u003e\n\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\n## \u003cimg src=\"https://img.shields.io/badge/-%F0%9F%8C%B1-2D5A27?style=flat-square\" /\u003e About\n\n**Botanika Desktop** is a full-featured Windows admin panel built from the ground up in **C# WinForms**. It was developed as an extended implementation of a basic CRUD assignment, evolving far beyond the original requirements into a polished, production-grade **administrative CRM system**.\n\nThe application acts as the operational command center for the Botanika platform — managing products, clients, orders, payments, suppliers, and revenue analytics — all synchronized in real-time with **Google Cloud Firestore**.\n\n\u003cbr/\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\" width=\"200\"\u003e\n\u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/google/google-original.svg\" width=\"40\"/\u003e\u003cbr/\u003e\n\u003cb\u003eSecure Auth\u003c/b\u003e\u003cbr/\u003e\n\u003csub\u003eFirebase Auth + Admin gate\u003c/sub\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\" width=\"200\"\u003e\n\u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/grafana/grafana-original.svg\" width=\"40\"/\u003e\u003cbr/\u003e\n\u003cb\u003eLive Dashboard\u003c/b\u003e\u003cbr/\u003e\n\u003csub\u003eReal-time KPI metrics\u003c/sub\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\" width=\"200\"\u003e\n\u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/firebase/firebase-plain.svg\" width=\"40\"/\u003e\u003cbr/\u003e\n\u003cb\u003eFirestore CRUD\u003c/b\u003e\u003cbr/\u003e\n\u003csub\u003eFull entity management\u003c/sub\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\" width=\"200\"\u003e\n\u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/filezilla/filezilla-plain.svg\" width=\"40\"/\u003e\u003cbr/\u003e\n\u003cb\u003eImport / Export\u003c/b\u003e\u003cbr/\u003e\n\u003csub\u003eCSV \u0026 Markdown\u003c/sub\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\n---\n\n## \u003cimg src=\"https://img.shields.io/badge/-%E2%9C%A8-4A7C59?style=flat-square\" /\u003e Features\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cimg src=\"https://img.shields.io/badge/-Authentication_%26_Security-2D5A27?style=flat-square\u0026logo=shield\u0026logoColor=white\" /\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\n| Feature              | Description                                                        |\n|----------------------|--------------------------------------------------------------------|\n| Firebase Auth REST   | Email/password sign-in via `identitytoolkit.googleapis.com`        |\n| Admin Gate           | Secondary admin-email verification prevents unauthorized access    |\n| Service Account JWT  | PKCS#8 RSA key parsing → signed JWT → OAuth2 access token exchange |\n| Credential Isolation | API keys loaded from external files, excluded via `.gitignore`     |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cimg src=\"https://img.shields.io/badge/-Dashboard_%26_Analytics-4A7C59?style=flat-square\u0026logo=googleanalytics\u0026logoColor=white\" /\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\n| Feature | Description                                                           |\n|---------|-----------------------------------------------------------------------|\n| KPI Stat Cards     | Total Revenue, Orders, Products, and Clients at a glance   |\n| Recent Orders Feed | Live-updating list of the latest transactions              |\n| Revenue Panel      | Dedicated revenue tracking and financial overview          |\n| Auto-Refresh       | Dashboard data pulled fresh from Firestore on every load   |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cimg src=\"https://img.shields.io/badge/-Full_CRUD_Management-8FBC8F?style=flat-square\u0026logo=databricks\u0026logoColor=white\" /\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\n| Module | Capabilities |\n|--------|-------------|\n| **Products** | Create, edit, delete, search — with image URLs and category tags |\n| **Clients** | Customer profiles with contact info and order history |\n| **Orders** | Order tracking with status management and item breakdowns |\n| **Payments** | Payment recording with method, amount, and date tracking |\n| **Suppliers** | Supplier directory with product associations |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cimg src=\"https://img.shields.io/badge/-Custom_UI_System-68217A?style=flat-square\u0026logo=materialdesign\u0026logoColor=white\" /\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\n| Component | Purpose |\n|-----------|---------|\n| `BotanikaButton` | Themed action buttons with hover states |\n| `BotanikaListView` | Custom-styled list/grid with alternating row colors |\n| `SidebarItem` | Icon-based navigation items with active state highlighting |\n| `ToastNotification` | Non-blocking success/error notifications |\n| `BotanikaColors` | Centralized color palette (Primary, Charcoal, Sand, etc.) |\n| `BotanikaFonts` | Typography system with heading, body, and caption presets |\n| `BotanikaTheme` | Rounded corners, shadows, and global styling utilities |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cimg src=\"https://img.shields.io/badge/-Chatbot_Panel-FF6F00?style=flat-square\u0026logo=chatbot\u0026logoColor=white\" /\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\nAn integrated conversational interface for quick admin operations and help — accessible directly from the sidebar.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cimg src=\"https://img.shields.io/badge/-Data_Import_%2F_Export-0078D6?style=flat-square\u0026logo=microsoftexcel\u0026logoColor=white\" /\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\n| Format | Direction |\n|--------|-----------|\n| **CSV** | Export — generate spreadsheet-compatible data dumps |\n| **Markdown** | Export — create formatted reports |\n| **Import** | Bulk data ingestion from external files |\n\n\u003c/details\u003e\n\n---\n\n## \u003cimg src=\"https://img.shields.io/badge/-%F0%9F%8F%97%EF%B8%8F-2D5A27?style=flat-square\" /\u003e Architecture\n\n```\nBotanika-Desktop/\n│\n├── 📂 Forms/                    ← UI Screens \u0026 Panels\n│   ├── LoginForm.cs             ← Secure admin authentication\n│   ├── MainForm.cs              ← Shell with sidebar navigation\n│   ├── DashboardPanel.cs        ← KPI cards + recent orders\n│   ├── ProductsPanel.cs         ← Product CRUD\n│   ├── ProductEditDialog.cs     ← Product create/edit modal\n│   ├── ClientsPanel.cs          ← Client management\n│   ├── OrdersPanel.cs           ← Order tracking\n│   ├── PaymentsPanel.cs         ← Payment records\n│   ├── SuppliersPanel.cs        ← Supplier directory\n│   ├── RevenuePanel.cs          ← Financial analytics\n│   └── ChatbotPanel.cs          ← Integrated chatbot\n│\n├── 📂 Controls/                 ← Reusable UI Components\n│   ├── BotanikaButton.cs\n│   ├── BotanikaListView.cs\n│   ├── SidebarItem.cs\n│   └── ToastNotification.cs\n│\n├── 📂 Firebase/                 ← Backend Layer\n│   ├── FirebaseService.cs       ← HTTP bridge, JWT auth, CRUD\n│   └── Models/\n│       ├── Product.cs\n│       ├── Client.cs\n│       ├── Order.cs\n│       ├── Payment.cs\n│       └── Supplier.cs\n│\n├── 📂 Export/                   ← Data Import/Export\n│   ├── CsvExporter.cs\n│   ├── MarkdownExporter.cs\n│   └── ImportHandler.cs\n│\n├── 📂 Theme/                    ← Design System\n│   ├── BotanikaColors.cs\n│   ├── BotanikaFonts.cs\n│   └── BotanikaTheme.cs\n│\n├── 📂 Assets/                   ← Icons, branding, credentials\n├── Session.cs                   ← Global session state\n└── Program.cs                   ← Application entry point\n```\n\n---\n\n## \u003cimg src=\"https://img.shields.io/badge/-%F0%9F%94%A7-4A7C59?style=flat-square\" /\u003e Tech Stack\n\n\u003cdiv align=\"center\"\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\" width=\"140\"\u003e\n\u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/csharp/csharp-original.svg\" width=\"48\"/\u003e\u003cbr/\u003e\n\u003cb\u003eC#\u003c/b\u003e\u003cbr/\u003e\n\u003csub\u003ePrimary Language\u003c/sub\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\" width=\"140\"\u003e\n\u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/dot-net/dot-net-original.svg\" width=\"48\"/\u003e\u003cbr/\u003e\n\u003cb\u003e.NET 4.7.2\u003c/b\u003e\u003cbr/\u003e\n\u003csub\u003eFramework\u003c/sub\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\" width=\"140\"\u003e\n\u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/firebase/firebase-plain.svg\" width=\"48\"/\u003e\u003cbr/\u003e\n\u003cb\u003eFirebase\u003c/b\u003e\u003cbr/\u003e\n\u003csub\u003eAuth \u0026 Firestore\u003c/sub\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\" width=\"140\"\u003e\n\u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/json/json-original.svg\" width=\"48\"/\u003e\u003cbr/\u003e\n\u003cb\u003eNewtonsoft\u003c/b\u003e\u003cbr/\u003e\n\u003csub\u003eJSON Serialization\u003c/sub\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\" width=\"140\"\u003e\n\u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/visualstudio/visualstudio-plain.svg\" width=\"48\"/\u003e\u003cbr/\u003e\n\u003cb\u003eWinForms\u003c/b\u003e\u003cbr/\u003e\n\u003csub\u003eDesktop UI\u003c/sub\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n---\n\n## \u003cimg src=\"https://img.shields.io/badge/-%F0%9F%9A%80-2D5A27?style=flat-square\" /\u003e Getting Started\n\n### Prerequisites\n\n- **Visual Studio 2022** (or later)\n- **.NET Framework 4.7.2** runtime\n- A **Firebase project** with Firestore enabled\n\n### Installation\n\n```bash\n# 1. Clone the repository\ngit clone https://github.com/naveed-gung/botanika-desktop.git\n\n# 2. Open the solution\n# Launch Botanika-Desktop.sln in Visual Studio\n```\n\n### Firebase Configuration\n\n\u003e [!IMPORTANT]\n\u003e You must provide two credential files before the app can connect to Firebase.\n\u003e These files are **excluded from Git** by `.gitignore` and will never be committed.\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eFile\u003c/th\u003e\n\u003cth\u003eLocation\u003c/th\u003e\n\u003cth\u003ePurpose\u003c/th\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eserviceAccount.json\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eAssets/\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eFirebase Admin SDK key — powers all Firestore CRUD operations via service account JWT\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003efirebase_api_key.txt\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003eAssets/\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eFirebase Web API key (single line) — used for email/password sign-in verification\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n**Where to find them:**\n1. **`serviceAccount.json`** → [Firebase Console](https://console.firebase.google.com/) → Project Settings → Service Accounts → Generate New Private Key\n2. **`firebase_api_key.txt`** → [Firebase Console](https://console.firebase.google.com/) → Project Settings → General → Web API Key → paste into the file\n\nThen press **F5** in Visual Studio to build and run.\n\n---\n\n## \u003cimg src=\"https://img.shields.io/badge/-%F0%9F%94%92-4A7C59?style=flat-square\" /\u003e Security\n\n\u003cdiv align=\"center\"\u003e\n\n| Layer | Protection |\n|:------|:-----------|\n| **Credentials** | `serviceAccount.json` and `firebase_api_key.txt` are in `.gitignore` — never tracked by Git |\n| **Authentication** | Firebase Auth REST API validates admin credentials server-side |\n| **Authorization** | Secondary admin-email gate ensures only authorized users access the CRM |\n| **Token Management** | Service account JWTs are minted locally with 1-hour expiry and auto-refreshed |\n\n\u003c/div\u003e\n\n---\n\n## \u003cimg src=\"https://img.shields.io/badge/-%F0%9F%8C%90-8FBC8F?style=flat-square\" /\u003e Related Project\n\n\u003cdiv align=\"center\"\u003e\n\n| | Botanika Web | Botanika Desktop |\n|---|:---:|:---:|\n| **Type** | E-commerce storefront | Admin CRM |\n| **Tech** | HTML / CSS / JS | C# WinForms |\n| **Users** | Customers | Administrators |\n| **Link** | [botanika-754.netlify.app](https://botanika-754.netlify.app) | *This repository* |\n\n\u003c/div\u003e\n\n---\n\n## \u003cimg src=\"https://img.shields.io/badge/-%F0%9F%93%84-2D5A27?style=flat-square\" /\u003e License\n\nThis project was developed for **educational and portfolio purposes**.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"https://capsule-render.vercel.app/api?type=waving\u0026color=0:2D5A27,50:4A7C59,100:8FBC8F\u0026height=120\u0026section=footer\" width=\"100%\" /\u003e\n\n\u003cbr/\u003e\n\n**Built with 🌿 by [Naveed Sohail Gung](https://github.com/naveed-gung)**\n\n\u003cp\u003e\n  \u003ca href=\"https://www.linkedin.com/in/naveed-sohail-gung-285645310/\"\u003e\u003cimg src=\"https://img.shields.io/badge/LinkedIn-0A66C2?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/naveed-gung\"\u003e\u003cimg src=\"https://img.shields.io/badge/GitHub-181717?style=for-the-badge\u0026logo=github\u0026logoColor=white\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://naveed-gung.dev/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Portfolio-4A7C59?style=for-the-badge\u0026logo=googlechrome\u0026logoColor=white\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaveed-gung%2Fbotanika-desktop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnaveed-gung%2Fbotanika-desktop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaveed-gung%2Fbotanika-desktop/lists"}