# Midrand Books Ecommerce Platform An online bookstore web application designed for Midrand Books, allowing local and national customers to browse, search, and purchase books seamlessly. ## 🚀 Features * **User Authentication**: Secure customer registration, login, and profile management. * **Product Catalog**: Advanced search, filtering by genre, and dynamic book categorization. * **Shopping Cart**: Real-time cart updates, item persistence, and coupon code validation. * **Secure Checkout**: Integrated payment gateways supporting local South African methods (e.g., PayFast, Ozow, or Yoco). * **Order Tracking**: Automated email confirmations and live delivery status tracking. * **Admin Dashboard**: Content management system (CMS) to manage inventory, track sales, and process orders. ## 🛠️ Tech Stack * **Frontend**: Blazor / HTML5 / Bootstrap CSS * **Backend**: Blazor Server * **Database**: PostgreSQL * **Payment Gateway**: PayFast API / PayPal SDK ## 📋 Prerequisites Before setting up the project locally, ensure you have the following installed: * .NET SDK (v6.0 or higher) * Git ## 🔧 Installation & Setup Follow these steps to run the project locally. 1. **Clone the repository** ```bash git clone https://gitea.khongisa.co.za/litecharms/midrandbooks.git cd midrandbooks ``` 2. **Install dependencies** ```bash # restore NuGet dependencies dotnet restore ``` 3. **Environment Variables** Create a `.env` file in both the frontend and backend roots. Use the `.env.example` files provided as a reference. ```env DATABASE_URL=your_database_url Email = mailbox settings Monitoring = Aspire dashboard settings PAYMENT_GATEWAY_KEY=your_api_key ``` 4. **Run the application** ```bash # Start app dotnet run ``` 5. **Access the app** Open your browser and navigate to `http://localhost:5000`. ## 📦 Deployment * **Frontend**: Hosted on Lite Charms Cloud. * **Backend**: Hosted on Lite Charms Cloud. * **Database**: Managed on Lite Charms PVC LXC container settings ## 🤝 Contributing 1. Fork the repository. 2. Create a feature branch: `git checkout -b feature/NewFeature`. 3. Commit your changes: `git commit -m 'Add NewFeature'`. 4. Push to the branch: `git push origin feature/NewFeature`. 5. Open a Pull Request. ## 📄 License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.