Introduction
Project Overview
OnMarket Landing is a comprehensive Angular-based e-commerce marketplace application. It provides a full-featured online shopping platform with product browsing, cart management, checkout, user profiles, affiliate program, and real-time chat functionality.
Key Capabilities
- Product browsing and search
- Shopping cart and checkout
- User authentication and profile management
- Affiliate marketing program
- Store management
- Real-time chat via WebSockets
- Multiple payment integrations
- Order tracking and history
- Voucher and promotion system
Technology Stack
Core Framework
- Angular: v12.2.2
- TypeScript: v4.3.5
- RxJS: v6.6.3 (Reactive Programming)
UI/UX Libraries
- Angular Material: v12.2.2 - Material Design components
- Angular Flex Layout: v12.0.0 - Responsive layout system
- Angular Animations: v12.2.2 - Animation support
- Font Awesome: v6.5.1 - Icon library
- SweetAlert2: v10.3.3 - Beautiful alerts and modals
Additional Libraries
- Socket.io Client: v4.7.5 - Real-time WebSocket communication
- Google Maps: v3.55.12 - Map integration
- ApexCharts: v3.35.0 - Interactive charts
- jwt-decode: v3.1.2 - JWT token decoding
- dayjs: v1.10.7 - Date manipulation
- ngx-translate: v13.0.0 - Internationalization (i18n)
- ngx-infinite-scroll: v10.0.1 - Infinite scrolling
- ngx-countdown: v11.0.3 - Countdown timers
- ngx-perfect-scrollbar: v10.1.1 - Custom scrollbars
Development Tools
- Angular CLI: v12.2.2
- Karma: v6.3.4 - Test runner
- Jasmine: v3.9.0 - Testing framework
- TSLint: v6.1.0 - Code linting
- Protractor: v7.0.0 - E2E testing
Installation and setup
Prerequisites
Before you begin, ensure you have the following installed:
- Node.js: v12.x or higher (recommended v14.x or v16.x)
- npm: v6.x or higher (comes with Node.js)
-
Angular CLI: v12.2.2
npm install -g @angular/cli@12.2.2
Installation & Setup
1. Clone the Repository
git clone https://github.com/ondeliveroper/on-market-landing.git
cd on-market-landing
2. Install Dependencies
npm install
3. Environment Configuration
The application uses environment files located in src/environments/:
-
environment.ts- Development environment -
environment.prod.ts- Production environment
4. Start Development Server
npm start
# or for Windows
npm run startWindows
The application will be available at http://localhost:4200/
Note: The start script uses NODE_OPTIONS='--openssl-legacy-provider' due to OpenSSL compatibility with Angular 12.
Project structure
on-market-landing/
├── e2e/ # End-to-end tests
├── src/
│ ├── app/
│ │ ├── components/ # All UI components
│ │ │ ├── accounts/ # Login, signup, profile
│ │ │ ├── affiliate/ # Affiliate program
│ │ │ ├── all-bills/ # Bill payment features
│ │ │ ├── cart/ # Shopping cart
│ │ │ ├── checkout/ # Checkout process
│ │ │ ├── homepage/ # Home page
│ │ │ ├── personal-store/ # Store management
│ │ │ ├── product-details/ # Product detail pages
│ │ │ ├── search-result/ # Search functionality
│ │ │ └── ... # Other components
│ │ ├── interceptors/ # HTTP interceptors
│ │ │ └── auth.interceptor.ts
│ │ ├── interfaces/ # TypeScript interfaces
│ │ │ ├── affiliate.ts
│ │ │ ├── balance.ts
│ │ │ ├── bank.ts
│ │ │ ├── products.ts
│ │ │ └── user.ts
│ │ ├── pipes/ # Custom pipes
│ │ │ ├── phone-number.pipe.ts
│ │ │ ├── short-number-pipe.pipe.ts
│ │ │ ├── time-ago.pipe.ts
│ │ │ └── transform-city.pipe.ts
│ │ ├── services/ # Business logic services
│ │ │ └── affiliate.service.ts
│ │ ├── themes/ # Multiple theme layouts
│ │ │ ├── theme-one/
│ │ │ ├── theme-two/
│ │ │ └── ...
│ │ ├── api.service.ts # Main API service
│ │ ├── app-routing.module.ts # Route definitions
│ │ ├── app.component.ts # Root component
│ │ ├── app.module.ts # Main module
│ │ ├── auth.guard.ts # Route authentication
│ │ ├── demo-material-module.ts # Material imports
│ │ ├── logger.service.ts # Logging service
│ │ ├── sockets.service.ts # WebSocket service
│ │ └── utility.service.ts # Utility functions
│ ├── assets/ # Static assets
│ │ ├── css/ # Stylesheets
│ │ ├── images/ # Images
│ │ └── ...
│ ├── environments/ # Environment configs
│ │ ├── environment.ts
│ │ └── environment.prod.ts
│ ├── custom-theme.scss # Material theme
│ ├── styles.scss # Global styles
│ └── index.html # Main HTML file
├── angular.json # Angular configuration
├── package.json # Dependencies
├── tsconfig.json # TypeScript configuration
├── tslint.json # Linting rules
└── karma.conf.js # Test configuration
Key Directories Explained
/src/app/components/
Contains all UI components organized by feature:
- accounts/ - User authentication and profile management
- affiliate/ - Affiliate marketing dashboard and features
- cart/ - Shopping cart functionality
- checkout/ - Checkout and payment process
- personal-store/ - Store owner features
- product-details/ - Product information display
- search-result/ - Search results page
/src/app/services/
Business logic and reusable services:
- API integration services
- State management services
- Utility services
/src/app/interceptors/
HTTP interceptors for:
- Adding authentication tokens
- Error handling
- Request/response transformation
Core features
1. E-Commerce Functionality
- Product catalog browsing
- Advanced search and filtering
- Product details with images and specifications
- Shopping cart management
- Checkout process with multiple payment options
- Order tracking and history
2. User Management
- User registration and login
- Phone OTP verification
- Profile management
- Address book
- Password management
- Wishlist/favorites
3. Affiliate Program
- Affiliate registration
- Dashboard with earnings analytics
- Commission withdrawal
- Collection management
- Custom affiliate links
- Payment settings
4. Store Features
- Personal store creation
- Store profile management
- Product management
- Store reviews and ratings
- Store analytics
5. Communication
- Real-time chat via WebSockets
- WhatsApp integration
- Message notifications
- Order-related messaging
6. Additional Services
- Bill payments (Pulsa, PLN, PDAM, etc.)
- Vouchers and promotions
- Flash sales
- Campaign templates
- Reviews and ratings