diff --git a/docs/pharma-erp/QUOTATION_README.md b/docs/pharma-erp/QUOTATION_README.md new file mode 100644 index 00000000..5a339da7 --- /dev/null +++ b/docs/pharma-erp/QUOTATION_README.md @@ -0,0 +1,241 @@ +# Pharma ERP System Quotation for Akram Laboratories + +## 📄 Document Details + +**File**: `quotation-akram-laboratories.html` +**Client**: Akram Laboratories +**Developer**: CodeStorm Hub (GitHub Organization) +**Quote Number**: AKL-2026-001 +**Date**: January 11, 2026 +**Valid Until**: March 11, 2026 (60 days) + +--- + +## 💰 Pricing Summary + +| Item | Amount (BDT) | +|------|--------------| +| **Main System Development** | ৳60,000 | +| **PWA Enhancement** | ৳10,000 | +| **Total Development Cost** | **৳70,000** | +| **Annual Maintenance (AMC)** | ৳12,000/year | + +### AMC Terms +- **Year 1**: FREE (included in development cost) +- **Year 2 onwards**: ৳12,000/year + +--- + +## 📋 What's Included + +### 1. System Requirements & Features (150+) +- **Master Data Management** (8 features) +- **Pharmaceutical Inventory Management** (12 features) +- **Procurement Management** (8 features) +- **Sales & Distribution** (10 features) +- **Accounting & Finance** (14 features) +- **Point of Sale (POS) System** (12 features) +- **Compliance & Audit Controls** (10 features) +- **Reporting & Analytics** (12 features) + +### 2. User Stories (18) +Stories covering 6 user roles: +- Warehouse Operator +- QA/QC Officer +- Sales User +- Finance User +- POS Cashier +- Management + +### 3. Entity Relationship Diagram (ERD) +- Full ERD diagram with 30+ entities +- Visual representation using Mermaid.js +- Shows relationships between all modules + +### 4. Technical Specifications +- Frontend Technologies (Next.js 16, React 19, Tailwind CSS v4) +- Backend Technologies (PostgreSQL, Prisma, NextAuth) +- Security Features (RBAC, Encryption, Audit Logs) +- Performance Features (Materialized Views, Indexing, SSR) + +### 5. Implementation Timeline (20 Weeks) +- **Phase 1** (Weeks 1-4): Database & Core Services +- **Phase 2** (Weeks 5-7): ERP API Layer +- **Phase 3** (Weeks 8-11): ERP UI Components +- **Phase 4** (Weeks 12-14): POS Module +- **Phase 5** (Weeks 15-17): Integration & Testing +- **Phase 6** (Weeks 18-20): Deployment & Training + +### 6. Terms & Conditions +Complete terms covering: +- Payment milestones +- AMC details +- Client responsibilities +- Deliverables +- Intellectual property +- Warranty & support +- Confidentiality + +--- + +## 🖨️ How to Use + +### Option 1: Open in Browser +1. Open `quotation-akram-laboratories.html` in any modern web browser +2. Click the "Print / Save as PDF" button at the top +3. Choose "Save as PDF" or "Microsoft Print to PDF" as your printer +4. Save the PDF file + +### Option 2: Direct Print +1. Open `quotation-akram-laboratories.html` in browser +2. Use Ctrl+P (Windows/Linux) or Cmd+P (Mac) +3. Select your printer and print + +### Option 3: Serve Locally +```bash +cd docs/pharma-erp +python3 -m http.server 8888 +# Open http://localhost:8888/quotation-akram-laboratories.html in browser +``` + +--- + +## ✨ Design Features + +### Professional Layout +- ✅ A4 size (210mm width) for perfect printing +- ✅ Proper page breaks for multi-page printing +- ✅ Professional gradient colors +- ✅ Modern card-based layout +- ✅ Proper spacing and typography + +### Visual Elements +- ✅ Color-coded pricing boxes +- ✅ Module cards with left border accents +- ✅ Check-mark icons for feature lists +- ✅ Gradient section headers +- ✅ Professional signature section +- ✅ ERD diagram with visual relationships + +### Responsive Design +- ✅ Looks great on screen (responsive) +- ✅ Prints perfectly on A4 paper +- ✅ Print button hidden when printing +- ✅ Exact colors preserved in PDF + +--- + +## 📊 Content Structure + +### Page 1 +- Header with company branding +- Client information +- Pricing summary with highlight boxes +- AMC terms + +### Page 2-4 +- System requirements & features (8 modules) +- Detailed feature lists with check marks +- Module descriptions + +### Page 5 +- User stories for 6 roles +- Use case descriptions + +### Page 6 +- ERD diagram +- Entity descriptions +- Relationship mappings + +### Page 7 +- Technical specifications +- Frontend & backend technologies +- Security & performance features + +### Page 8 +- Implementation timeline (20 weeks) +- Phase-by-phase breakdown +- Deliverables per phase + +### Page 9 +- Terms & conditions +- Payment terms +- Client responsibilities +- Deliverables list + +### Page 10 +- Expected outcomes & success metrics +- Contact information +- Signature section + +--- + +## 🔧 Technical Details + +### Dependencies (CDN) +- **Tailwind CSS**: For styling and responsive design +- **Mermaid.js**: For ERD diagram rendering + +### Browser Compatibility +- Chrome/Edge (recommended) +- Firefox +- Safari +- Any modern browser with ES6+ support + +### File Size +- HTML: ~52 KB (1,011 lines) +- Generated PDF: ~500 KB (estimated) + +--- + +## 📝 Important Notes + +### For Client (Akram Laboratories) +1. **Domain & Hosting**: Client bears all costs + - Estimated hosting: ৳3,000-5,000/month + - Domain: ৳1,500-2,500/year + +2. **Additional Features**: Charged separately after requirements finalization + +3. **Feedback Timeline**: 3 business days per milestone + +### For Developer (CodeStorm Hub) +1. **Source Documentation**: All references from `/docs/pharma-erp/` directory +2. **System Design**: Based on SRS and implementation plan +3. **Quotation Validity**: 60 days from issue date + +--- + +## 🔗 Related Documents + +- [Software Requirements Specification](./Software-Requirements-Specification-Pharma-Inventory-and-Accounts-ERP.md) +- [Executive Summary](./PHARMA_ERP_EXECUTIVE_SUMMARY.md) +- [Implementation Plan](./PHARMA_ERP_POS_IMPLEMENTATION_PLAN.md) +- [Database Schema](./DATABASE_SCHEMA.md) +- [Quick Start Guide](./PHARMA_ERP_QUICK_START.md) +- [Implementation Status](./IMPLEMENTATION_STATUS.md) + +--- + +## 📞 Next Steps + +1. **Review**: Client reviews the quotation carefully +2. **Questions**: Schedule a demo/consultation call if needed +3. **Finalize**: Finalize all requirements +4. **Sign**: Sign the contract +5. **Begin**: Start Phase 1 development + +--- + +## 📧 Contact + +For questions or clarifications about this quotation: +- **Organization**: CodeStorm Hub +- **GitHub**: github.com/CodeStorm-Hub +- **Email**: [Contact via GitHub] + +--- + +**Generated**: January 11, 2026 +**Last Updated**: January 11, 2026 +**Version**: 1.0 diff --git a/docs/pharma-erp/quotation-akram-laboratories.html b/docs/pharma-erp/quotation-akram-laboratories.html new file mode 100644 index 00000000..ee5becb7 --- /dev/null +++ b/docs/pharma-erp/quotation-akram-laboratories.html @@ -0,0 +1,1071 @@ + + + + + + Pharmaceutical ERP System Quotation - Akram Laboratories + + + + + +
+ +
+ +
+ +
+
+
+

+ CodeStorm Hub +

+

Software Development Organization

+ +
+
+
QUOTATION
+
Date: January 11, 2026
+
Quote #: AKL-2026-001
+
+
+ +
+

+ Pharmaceutical Inventory & Accounts ERP System +

+

With Integrated Point of Sale (POS) Module

+
+
+ + +
+
+

Client Information

+
+
Name: Akram Laboratories
+
Industry: Pharmaceutical Distribution
+
Type: Pharmacy & Laboratory
+
+
+ +
+

Project Details

+
+
Platform: Web-Based ERP + PWA
+
Technology: Next.js 16, PostgreSQL
+
Timeline: 30 Days (1 Month)
+
+
+
+ + +
+

Investment Summary

+ +
+
+
Main System
+
৳60,000
+
ERP + POS Core Features
+
+ +
+
PWA Enhancement
+
৳10,000
+
Progressive Web App
+
+ +
+
Total Investment
+
৳70,000
+
Development Cost
+
+
+ +
+
+
🎉
+
+

Annual Maintenance Contract (AMC)

+
+
+ Year 1: + FREE (Included) +
+
+ Year 2 onwards: + ৳12,000/year +
+
+

+ Includes: Bug fixes, minor updates, technical support, security patches, and system maintenance. +

+
+
+
+ + +
+

+ 📱 What is PWA (Progressive Web App)? +

+

+ Progressive Web App (PWA) is an advanced web technology that makes your pharmacy system work like a native mobile app while being accessed through a web browser. +

+ +
+
+
✨ Key PWA Features:
+
    +
  • Offline Capability: Works without internet connection
  • +
  • Install on Device: Add to home screen like an app
  • +
  • Fast Loading: Instant load times with caching
  • +
  • Push Notifications: Receive alerts even when closed
  • +
  • Auto Updates: Always get latest version automatically
  • +
+
+ +
+
🎯 Benefits for Your Pharmacy:
+
    +
  • POS Resilience: Cashiers work even during internet outage
  • +
  • Mobile Access: Pharmacists use on tablets/phones
  • +
  • No App Store: No need to publish on Play Store/App Store
  • +
  • Single Codebase: One system for web, mobile, and tablet
  • +
  • Lower Cost: Cheaper than developing separate mobile apps
  • +
+
+
+ +
+

+ Why PWA Costs Extra (৳10,000): Requires specialized development for offline data synchronization, + service worker implementation, background sync queues, local database (IndexedDB), conflict resolution, + and extensive testing across devices and network conditions. +

+
+
+
+ +
+ + +
+

System Requirements & Features

+ + +
+

+ 📦 Master Data Management +

+
+
Pharmaceutical Item Master (Generic/Brand, Dosage, Strength)
+
Multiple Barcode Support per Item
+
Supplier Management with Approval Workflow
+
Customer Master with Credit Terms & Limits
+
Multi-Warehouse & Bin-Level Location Management
+
Storage Condition Tracking (Ambient/Cold/Frozen)
+
Controlled Substance Classification (DEA Schedule)
+
Chart of Accounts for General Ledger
+
+
+ + +
+

+ 📊 Pharmaceutical Inventory Management +

+
+
Lot/Batch Tracking with Expiry Dates
+
Immutable Inventory Ledger (Audit Trail)
+
Stock Status Management (Quarantine/Released/Rejected)
+
FEFO (First-Expire-First-Out) Allocation
+
QA Approval for Lot Release
+
Minimum Shelf-Life Rules by Customer
+
Cycle Counts & Physical Inventory
+
Stock Adjustments with Reason Codes & Approval
+
Inter-Warehouse & Inter-Bin Transfers
+
Real-Time Stock Balance (Materialized View)
+
Near-Expiry Alerts (30/60/90/180 Days)
+
Recall Support with Lot Lockdown
+
+
+ + +
+

+ 🛒 Procurement Management +

+
+
Purchase Order (PO) Creation & Approval
+
Goods Receipt Note (GRN) with Lot Capture
+
3-Way Matching (PO vs GRN vs Supplier Bill)
+
Automatic Quarantine on Receipt
+
Supplier Bill Management
+
Certificate of Analysis (COA) Attachment
+
Partial Receipt Support
+
Automated GL Posting on Receipt
+
+
+ + +
+

+ 🚚 Sales & Distribution +

+
+
Sales Order with Pricing & Discounts
+
FEFO-Based Stock Allocation
+
Shelf-Life Validation at Allocation
+
Pick Lists by FEFO Priority
+
Shipment Processing with Lot Validation
+
Packing List & Batch List Generation
+
Customer Invoicing with Tax Calculation
+
Customer Returns with QA Disposition
+
Credit Notes for Returns
+
Credit Hold Enforcement
+
+
+ +
+ + +
+

+ 💰 Accounting & Finance +

+
+
General Ledger with Posting Periods
+
Automated GL Posting for Inventory Transactions
+
Accounts Payable (AP) with Aging Reports
+
Accounts Receivable (AR) with Credit Control
+
Customer & Vendor Aging (30/60/90+ Days)
+
Bank Account Management
+
Payment Processing (Cash/Check/Bank Transfer)
+
Bank Reconciliation with Statement Import
+
Cost of Goods Sold (COGS) Automation
+
Trial Balance Report
+
Profit & Loss Statement
+
Balance Sheet
+
Inventory Valuation Report
+
Inventory-to-GL Reconciliation
+
+
+ + +
+

+ 🏪 Point of Sale (POS) System +

+
+
Fast Checkout with Barcode Scanning
+
Prescription Management & Verification
+
Pharmacist Approval for Controlled Substances
+
Multiple Payment Methods (Cash/Card/Mobile)
+
Cashier Shift Management
+
Opening & Closing Cash Count
+
End-of-Day Reconciliation
+
Receipt Printing
+
Offline-First Architecture (Works Without Internet)
+
Automatic Sync When Online
+
Transaction Void with Manager Approval
+
Real-Time Inventory Update
+
+
+ + +
+

+ 🔒 Compliance & Audit Controls +

+
+
Maker-Checker Approval Workflows
+
Immutable Audit Trail (Who/What/When)
+
Before/After Value Tracking
+
Role-Based Access Control (RBAC)
+
Approval Thresholds Configuration
+
QA Approval for Lot Release
+
Manager Approval for Adjustments
+
Period Close Enforcement
+
Batch Forward/Backward Trace Reports
+
Complete Transaction History
+
+
+ + +
+

+ 📈 Reporting & Analytics +

+
+
Stock on Hand by Item/Lot/Location
+
Expiry Aging Dashboard (30/60/90/180 Days)
+
Quarantine Stock Report
+
Batch Trace Report (Forward/Backward)
+
Slow/Non-Moving Inventory Analysis
+
AR/AP Aging Reports
+
Customer Statement Generation
+
Vendor Payment Proposals
+
Sales Performance by Item/Customer
+
POS Daily Sales Summary
+
Cashier Performance Reports
+
Export to CSV/Excel for All Reports
+
+
+
+ +
+ + +
+

User Stories & Use Cases

+ +
+ +
+

+ 👷 Warehouse Operator +

+
    +
  • As a warehouse operator, I can receive goods with lot and expiry capture so that inventory is tracked accurately.
  • +
  • As a warehouse operator, I can perform stock transfers between locations to optimize storage.
  • +
  • As a warehouse operator, I can conduct cycle counts to ensure inventory accuracy.
  • +
+
+ + +
+

+ 🔬 QA/QC Officer +

+
    +
  • As a QA officer, I can review quarantined lots and approve release to make them sellable.
  • +
  • As a QA officer, I can attach COA documents to lots for compliance.
  • +
  • As a QA officer, I can mark lots as rejected or damaged to prevent sale.
  • +
+
+ + +
+

+ 🛍️ Sales User +

+
    +
  • As a sales user, I can create sales orders and the system automatically allocates stock using FEFO.
  • +
  • As a sales user, I can generate pick lists to guide warehouse in order fulfillment.
  • +
  • As a sales user, I can process returns and initiate QA disposition workflow.
  • +
+
+ + +
+

+ 💼 Finance User +

+
    +
  • As a finance user, I can see automated GL postings for all inventory transactions to eliminate manual entries.
  • +
  • As a finance user, I can reconcile bank statements by matching transactions.
  • +
  • As a finance user, I can generate AR aging to identify overdue customers.
  • +
+
+ + +
+

+ 💳 POS Cashier +

+
    +
  • As a cashier, I can scan barcodes for fast checkout even when the internet is down.
  • +
  • As a cashier, I can verify prescriptions before selling controlled substances.
  • +
  • As a cashier, I can reconcile my shift cash with system totals at end of day.
  • +
+
+ + +
+

+ 👔 Management +

+
    +
  • As a manager, I can view near-expiry dashboard to take proactive action.
  • +
  • As a manager, I can approve stock adjustments above threshold for financial control.
  • +
  • As a manager, I can generate P&L and balance sheet for business insights.
  • +
+
+
+
+ +
+ + +
+

Entity Relationship Diagram (ERD)

+ +
+

+ Simplified ERD showing core entities and relationships (Full schema includes 30+ tables) +

+ +
+erDiagram + Organization ||--o{ ErpItem : has + Organization ||--o{ ErpSupplier : has + Organization ||--o{ ErpWarehouse : has + Organization ||--o{ Customer : has + + ErpItem ||--o{ ErpLot : "has lots" + ErpSupplier ||--o{ ErpLot : supplies + + ErpLot ||--o{ ErpInventoryLedger : "tracks movements" + ErpWarehouse ||--o{ ErpInventoryLedger : "stores at" + + ErpSupplier ||--o{ ErpPurchaseOrder : "receives from" + ErpPurchaseOrder ||--o{ ErpPurchaseOrderLine : contains + ErpPurchaseOrderLine ||--o{ ErpGRN : "received via" + + ErpGRN ||--o{ ErpGRNLine : contains + ErpGRNLine ||--|| ErpLot : creates + ErpGRN ||--|| ErpGLJournal : "posts to GL" + + Customer ||--o{ ErpSalesOrder : places + ErpSalesOrder ||--o{ ErpSalesOrderLine : contains + ErpSalesOrderLine ||--o{ ErpAllocation : "allocates from" + ErpAllocation }o--|| ErpLot : "reserves lot" + + ErpSalesOrder ||--o{ ErpShipment : "fulfilled by" + ErpShipment ||--o{ ErpShipmentLine : contains + ErpShipmentLine }o--|| ErpLot : "ships lot" + ErpShipment ||--|| ErpARInvoice : "creates invoice" + ErpShipment ||--|| ErpGLJournal : "posts COGS" + + ErpChartOfAccount ||--o{ ErpGLJournalLine : "posts to" + ErpGLJournal ||--o{ ErpGLJournalLine : contains + + ErpWarehouse ||--o{ PosCashierShift : "operates at" + User ||--o{ PosCashierShift : operates + PosCashierShift ||--o{ PosTransaction : "contains" + PosTransaction ||--o{ PosTransactionLine : contains + PosTransactionLine }o--|| ErpItem : sells + PosTransactionLine }o--|| ErpLot : "from lot" + + PosPrescription ||--o{ PosTransaction : "linked to" + User ||--o{ PosPrescription : "verified by" + + ErpApprovalRequest ||--|| User : "requested by" + ErpApprovalRequest ||--|| User : "approved by" + + Organization { + string id PK + string name + string slug + } + + ErpItem { + string id PK + string organizationId FK + string sku + string name + string genericName + string dosageForm + string strength + string storageCondition + boolean isControlledSubstance + } + + ErpLot { + string id PK + string itemId FK + string lotNumber + date expiryDate + date manufactureDate + enum status + string qaApprovedBy + } + + ErpInventoryLedger { + string id PK + string lotId FK + string warehouseId FK + enum transactionType + decimal quantityDelta + decimal unitCost + string sourceType + string sourceId + datetime timestamp + } + + ErpPurchaseOrder { + string id PK + string organizationId FK + string supplierId FK + enum status + date expectedDelivery + } + + ErpGRN { + string id PK + string purchaseOrderId FK + enum status + date receivedDate + } + + ErpSalesOrder { + string id PK + string organizationId FK + string customerId FK + enum status + integer minShelfLifeDays + } + + ErpAllocation { + string id PK + string salesOrderLineId FK + string lotId FK + decimal quantity + enum status + } + + ErpShipment { + string id PK + string salesOrderId FK + enum status + date shippedDate + } + + ErpGLJournal { + string id PK + string organizationId FK + enum status + date postingDate + string sourceType + string sourceId + } + + ErpChartOfAccount { + string id PK + string organizationId FK + string accountCode + string accountName + enum accountType + } + + PosTransaction { + string id PK + string shiftId FK + string prescriptionId FK + decimal totalAmount + string paymentMethod + enum status + } + + PosCashierShift { + string id PK + string warehouseId FK + string cashierId FK + decimal openingCash + decimal closingCash + enum status + } +
+ +
+
+
🔵 Master Data
+
Organizations, Items, Suppliers, Warehouses, Customers, Chart of Accounts
+
+
+
🟢 Inventory
+
Lots, Ledger (Immutable), Allocations, Stock Balances
+
+
+
🟣 Transactions
+
PO, GRN, Sales Orders, Shipments, POS, GL Journals
+
+
+
+
+ +
+ + +
+

Technical Specifications

+ +
+
+

Frontend Technologies

+
    +
  • Framework: Next.js 16 (App Router)
  • +
  • UI Library: React 19.2
  • +
  • Component Library: shadcn/ui (Radix UI)
  • +
  • Styling: Tailwind CSS v4
  • +
  • Forms: react-hook-form + Zod validation
  • +
  • Tables: TanStack Table
  • +
  • State Management: Zustand
  • +
  • PWA: Service Workers + IndexedDB
  • +
+
+ +
+

Backend Technologies

+
    +
  • Runtime: Node.js 20+
  • +
  • Database: PostgreSQL 15+
  • +
  • ORM: Prisma 6.19
  • +
  • Authentication: NextAuth 4.24
  • +
  • API: Server Actions + REST API
  • +
  • Validation: Zod schemas
  • +
  • Storage: S3-compatible (for attachments)
  • +
  • Jobs: Node.js workers / pg_cron
  • +
+
+ +
+

Security Features

+
    +
  • TLS/HTTPS Encryption
  • +
  • Role-Based Access Control (RBAC)
  • +
  • Input Validation (Zod)
  • +
  • SQL Injection Prevention (Prisma)
  • +
  • Immutable Audit Logs
  • +
  • Password Hashing (Bcrypt)
  • +
  • CSRF Protection
  • +
  • Data Encryption at Rest
  • +
+
+ +
+

Performance Features

+
    +
  • Materialized Views for Stock Queries
  • +
  • Strategic Database Indexing
  • +
  • Server-Side Rendering (SSR)
  • +
  • Optimized Database Queries
  • +
  • Connection Pooling
  • +
  • Lazy Loading Components
  • +
  • Image Optimization
  • +
  • API Response Caching
  • +
+
+
+
+ + +
+

Implementation Timeline (30 Days - Fast Track)

+ +
+

+ ⚡ Accelerated Development Schedule: Complete system delivery in just 30 days +

+

+ Our experienced team will work in parallel sprints to deliver the complete ERP + POS system within 1 month. + This timeline is achievable because Phase 1 (Database) and Phase 2 (Services) are already 100% complete. +

+
+ +
+
+
+
+ Days 1-7 +
+
+
+

Week 1: Foundation & Setup

+
✅ Database & Services Already Complete
+
    +
  • • Environment setup and deployment infrastructure
  • +
  • • Complete API layer development (18 core endpoints)
  • +
  • • Authentication & RBAC middleware integration
  • +
  • • Input validation and security hardening
  • +
+
+
+ +
+
+
+ Days 8-15 +
+
+
+

Week 2: Core ERP UI Development

+
    +
  • • Master data screens (Items, Suppliers, Warehouses, Chart of Accounts)
  • +
  • • Inventory management UI (Stock, Lots, Quarantine, Adjustments)
  • +
  • • Procurement workflows (PO creation, GRN processing, 3-way matching)
  • +
  • • Sales workflows (SO creation, FEFO allocation, Shipments)
  • +
+
+
+ +
+
+
+ Days 16-22 +
+
+
+

Week 3: Accounting & POS Module

+
    +
  • • Accounting interfaces (GL Journals, AP/AR, Bank Reconciliation)
  • +
  • • Financial reports (Trial Balance, P&L, Balance Sheet)
  • +
  • • POS register interface with offline capability
  • +
  • • Prescription management and cashier shift system
  • +
  • • PWA implementation (service workers, offline sync)
  • +
+
+
+ +
+
+
+ Days 23-28 +
+
+
+

Week 4: Testing & Deployment

+
    +
  • • End-to-end testing of all workflows
  • +
  • • Performance testing and optimization
  • +
  • • Security audit and vulnerability fixes
  • +
  • • User acceptance testing (UAT) with client
  • +
  • • Documentation and training materials
  • +
+
+
+ +
+
+
+ Days 29-30 +
+
+
+

Final Days: Go-Live & Handover

+
    +
  • • Production deployment and final configuration
  • +
  • • Live user training (8 hours across all roles)
  • +
  • • System handover with full documentation
  • +
  • • Go-live support and immediate bug fixes
  • +
+
+
+
+
+ +
+ + +
+

Terms & Conditions

+ +
+
+

1. Payment Terms

+
    +
  • Initial Deposit: 30% (৳21,000) upon contract signing
  • +
  • Milestone 1: 30% (৳21,000) upon Week 2 completion (Day 15 - Core ERP UI)
  • +
  • Milestone 2: 30% (৳21,000) upon Week 3 completion (Day 22 - Accounting & POS)
  • +
  • Final Payment: 10% (৳7,000) upon go-live and acceptance (Day 30)
  • +
+
+ +
+

2. Annual Maintenance Contract (AMC)

+
    +
  • First year AMC is free and included in the development cost
  • +
  • From the second year onwards, AMC charges of ৳12,000/year will apply
  • +
  • AMC includes: Bug fixes, minor updates, technical support, security patches, system maintenance
  • +
  • AMC does NOT include: Major feature additions, third-party integration costs, hardware costs
  • +
+
+ +
+

3. Additional Requirements

+
    +
  • After finalization of all requirements, any additional feature implementations or modifications will be charged separately based on complexity and time required
  • +
  • Change requests during implementation may impact timeline and budget
  • +
  • Additional feature quotations will be provided upon request
  • +
+
+ +
+

4. Client Responsibilities

+
    +
  • Domain & Hosting: Client will bear all domain registration and hosting charges
  • +
  • Recommended Hosting: PostgreSQL managed database + web hosting
  • +
  • Domain Cost: Approximately ৳1,500-2,500/year
  • +
  • Timely Feedback: Client agrees to provide feedback within 3 business days for each milestone
  • +
  • Access: Client will provide necessary access to systems and data for integration
  • +
+
+ +
+

5. Deliverables

+
    +
  • Complete source code with documentation
  • +
  • Database schema and migrations
  • +
  • User manuals and training materials
  • +
  • API documentation
  • +
  • 8 hours of intensive user training (concentrated for all roles)
  • +
  • 1 year free AMC support
  • +
+
+ +
+

6. Intellectual Property

+
    +
  • Upon final payment, all custom-developed code ownership transfers to Akram Laboratories
  • +
  • Third-party libraries remain under their respective licenses
  • +
  • CodeStorm Hub retains the right to use non-confidential elements in portfolios
  • +
+
+ +
+

7. Warranty & Support

+
    +
  • 90-day warranty for bug fixes after go-live (included in first year AMC)
  • +
  • 24/7 critical issue support during first month post go-live
  • +
  • Business hours support (10 AM - 6 PM) after first month
  • +
+
+ +
+

8. Confidentiality

+
    +
  • Both parties agree to maintain confidentiality of sensitive business information
  • +
  • Client data will be handled according to best security practices
  • +
  • Non-Disclosure Agreement (NDA) can be signed upon request
  • +
+
+
+
+ + +
+

Expected Outcomes & Success Metrics

+ +
+
+

🎯 Business Benefits

+
    +
  • 50% reduction in transaction processing time
  • +
  • Eliminate manual GL entries (100% automation)
  • +
  • 60% reduction in stock-out incidents
  • +
  • 98%+ inventory accuracy
  • +
  • 30% reduction in expiry waste (FEFO)
  • +
  • Complete regulatory compliance
  • +
  • Real-time business insights
  • +
+
+ +
+

⚡ Technical Achievements

+
    +
  • Page load time < 2 seconds
  • +
  • API response time < 500ms
  • +
  • 99.5%+ system uptime
  • +
  • Handle 1M+ ledger entries efficiently
  • +
  • Offline POS functionality
  • +
  • Zero data loss (immutable ledgers)
  • +
  • Mobile-responsive design
  • +
+
+
+
+ + +
+

Ready to Transform Your Pharmacy Operations?

+ +
+
+

📞 Contact Information

+
+
Organization: CodeStorm Hub
+ +
Website: www.codestormhub.dev
+
Email: contact@codestormhub.dev
+
Phone: 01970279556
+
+
+ +
+

📋 Next Steps

+
+
Review this quotation carefully
+
Schedule a demo/consultation call
+
Finalize requirements document
+
Sign contract and begin development
+
+
+
+ +
+

Quotation Valid Until: February 10, 2026 (30 Days)

+

+ This quotation is valid for 30 days from the date of issue. Pricing and terms are subject to change after this period. +

+ +
+
+
For CodeStorm Hub
+
+
_______________________
+
Authorized Signatory
+
Date: _______________
+
+ +
+
For Akram Laboratories
+
+
_______________________
+
Authorized Signatory
+
Date: _______________
+
+
+
+
+ + +
+

This quotation is confidential and intended solely for Akram Laboratories.

+

Generated by CodeStorm Hub | Quote #: AKL-2026-001 | Date: January 11, 2026

+
+
+ + + + diff --git a/src/app/store/[slug]/page.tsx b/src/app/store/[slug]/page.tsx index 468a63aa..46203841 100644 --- a/src/app/store/[slug]/page.tsx +++ b/src/app/store/[slug]/page.tsx @@ -13,6 +13,18 @@ import { TestimonialsSection } from "@/components/storefront/testimonials-sectio import { BrandsCarousel } from "@/components/storefront/brands-carousel"; import { parseStorefrontConfig } from "@/lib/storefront/defaults"; import { ArrowRight, Sparkles, TrendingUp } from "lucide-react"; +import { getTranslations } from "next-intl/server"; + +// Translation mappings for config-provided titles +const titleTranslations: Record = { + "Shop by Category": "shopByCategory", + "Featured Products": "featuredProducts", +}; + +const subtitleTranslations: Record = { + "Explore our curated collections": "exploreCollections", + "Hand-picked favorites just for you": "handPickedFavorites", +}; interface StoreHomePageProps { params: Promise<{ slug: string }>; @@ -51,6 +63,9 @@ export default async function StoreHomePage({ params }: StoreHomePageProps) { // Parse storefront configuration const config = parseStorefrontConfig(store.storefrontConfig, store.name); + // Get translations for store page + const t = await getTranslations("store"); + // Fetch featured products const featuredProducts = await prisma.product.findMany({ where: { @@ -191,11 +206,15 @@ export default async function StoreHomePage({ params }: StoreHomePageProps) {

- {config.categories.title} + {titleTranslations[config.categories.title] + ? t(titleTranslations[config.categories.title]) + : config.categories.title}

{config.categories.subtitle && (

- {config.categories.subtitle} + {subtitleTranslations[config.categories.subtitle] + ? t(subtitleTranslations[config.categories.subtitle]) + : config.categories.subtitle}

)}
@@ -207,7 +226,7 @@ export default async function StoreHomePage({ params }: StoreHomePageProps) { className="group hover:border-primary transition-all" > - View All Categories + {t("viewAllCategories")} @@ -252,7 +271,9 @@ export default async function StoreHomePage({ params }: StoreHomePageProps) { {category.name}

- {category._count.products} {category._count.products === 1 ? 'Item' : 'Items'} + {category._count.products === 1 + ? t("item", { count: category._count.products }) + : t("items", { count: category._count.products })}

@@ -273,17 +294,23 @@ export default async function StoreHomePage({ params }: StoreHomePageProps) {
-

{config.featuredProducts.title}

+

+ {titleTranslations[config.featuredProducts.title] + ? t(titleTranslations[config.featuredProducts.title]) + : config.featuredProducts.title} +

{config.featuredProducts.subtitle && (

- {config.featuredProducts.subtitle} + {subtitleTranslations[config.featuredProducts.subtitle] + ? t(subtitleTranslations[config.featuredProducts.subtitle]) + : config.featuredProducts.subtitle}

)}
{config.featuredProducts.showViewAll && ( @@ -293,13 +320,13 @@ export default async function StoreHomePage({ params }: StoreHomePageProps) { {featuredProducts.length === 0 ? (
🛍️
-

No Featured Products Yet

+

{t("noFeaturedProducts")}

- Check back soon for amazing deals! + {t("checkBackSoon")}

@@ -321,11 +348,11 @@ export default async function StoreHomePage({ params }: StoreHomePageProps) {

- New Arrivals + {t("newArrivals")}

- Fresh additions to our collection + {t("freshAdditions")}

@@ -356,11 +383,11 @@ export default async function StoreHomePage({ params }: StoreHomePageProps) {

- Best Sellers + {t("bestSellers")}

- Our most popular products + {t("mostPopular")}

diff --git a/src/components/storefront/hero-section.tsx b/src/components/storefront/hero-section.tsx index 0532b474..edc97c29 100644 --- a/src/components/storefront/hero-section.tsx +++ b/src/components/storefront/hero-section.tsx @@ -22,6 +22,7 @@ import type { HeroSection as HeroSectionConfig } from "@/lib/storefront/types"; import { GRID_PATTERN_SVG } from "@/lib/storefront/defaults"; import { ShoppingBag, ArrowRight, Sparkles, Play } from "lucide-react"; import { useEffect, useState, useRef } from "react"; +import { useTranslations } from "next-intl"; interface HeroSectionProps { config: HeroSectionConfig; @@ -150,6 +151,7 @@ export function HeroSection({ config, storeName, storeSlug }: HeroSectionProps) const [mounted, setMounted] = useState(false); const [parallaxOffset, setParallaxOffset] = useState(0); const heroRef = useRef(null); + const t = useTranslations("store"); // Typing effect for dynamic text const typingTexts = config.typingTexts?.length ? config.typingTexts : [config.title || "Discover Amazing Products"]; @@ -194,7 +196,25 @@ export function HeroSection({ config, storeName, storeSlug }: HeroSectionProps) const videoEmbedUrl = isVideoStyle ? getVideoEmbedUrl(config.videoUrl!) : null; // Title to display (typed or static) - const displayTitle = config.enableTypingEffect ? typedText : (config.title || "Discover Amazing Products"); + // Check if the title matches default patterns that should be translated + const getTranslatedTitle = (): string => { + const rawTitle = config.title || "Welcome to {storeName}"; + + // Check for "Welcome to {storeName}" pattern (exact match or containing storeName) + if (rawTitle === "Welcome to {storeName}" || rawTitle === `Welcome to ${storeName}`) { + return t("welcomeTo", { storeName }); + } + + // Check for "Discover Amazing Products" default + if (rawTitle === "Discover Amazing Products") { + return t("discoverProducts"); + } + + // Return original title if it's custom content + return rawTitle; + }; + + const displayTitle = config.enableTypingEffect ? typedText : getTranslatedTitle(); // Split hero layout if (isSplitLayout) { @@ -236,7 +256,7 @@ export function HeroSection({ config, storeName, storeSlug }: HeroSectionProps) className="text-sm font-semibold shadow-lg backdrop-blur-sm" > - Welcome to {storeName} + {t("welcomeTo", { storeName })} )} @@ -449,7 +469,7 @@ export function HeroSection({ config, storeName, storeSlug }: HeroSectionProps) className="text-sm font-semibold shadow-lg backdrop-blur-sm" > - Welcome to {storeName} + {t("welcomeTo", { storeName })} )} diff --git a/src/components/storefront/store-footer.tsx b/src/components/storefront/store-footer.tsx index cdac649d..9b1f8bfe 100644 --- a/src/components/storefront/store-footer.tsx +++ b/src/components/storefront/store-footer.tsx @@ -1,4 +1,7 @@ +"use client"; + import Link from "next/link"; +import { useTranslations } from "next-intl"; interface StoreFooterProps { store: { @@ -21,6 +24,8 @@ interface StoreFooterProps { */ export function StoreFooter({ store }: StoreFooterProps) { const currentYear = new Date().getFullYear(); + const t = useTranslations("store"); + const tCommon = useTranslations("common"); return (