{"id":30846471,"url":"https://github.com/xamarsia/sellify","last_synced_at":"2026-04-04T08:39:26.669Z","repository":{"id":309611582,"uuid":"1009282986","full_name":"Xamarsia/sellify","owner":"Xamarsia","description":"A demo of a e-commerce web platform microservice project.","archived":false,"fork":false,"pushed_at":"2025-08-27T03:56:31.000Z","size":469,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-27T10:57:10.802Z","etag":null,"topics":["cassandra","devcontainers","docker-compose","express","mongodb","nextjs","postgresql","redis","tailwindcss","turborepo","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Xamarsia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2025-06-26T22:00:10.000Z","updated_at":"2025-08-27T03:56:30.000Z","dependencies_parsed_at":"2025-08-12T22:06:36.301Z","dependency_job_id":"3d0a58ab-2288-4573-b269-3aa18a5ffe6c","html_url":"https://github.com/Xamarsia/sellify","commit_stats":null,"previous_names":["xamarsia/sellify"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Xamarsia/sellify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xamarsia%2Fsellify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xamarsia%2Fsellify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xamarsia%2Fsellify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xamarsia%2Fsellify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Xamarsia","download_url":"https://codeload.github.com/Xamarsia/sellify/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xamarsia%2Fsellify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273983112,"owners_count":25202095,"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-09-06T02:00:13.247Z","response_time":2576,"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":["cassandra","devcontainers","docker-compose","express","mongodb","nextjs","postgresql","redis","tailwindcss","turborepo","typescript"],"created_at":"2025-09-07T01:00:44.102Z","updated_at":"2026-04-04T08:39:26.632Z","avatar_url":"https://github.com/Xamarsia.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\nSellify\n\u003c/h1\u003e\n\nSellify is a microservice demo of an e-commerce web platform.\n\n## Table Of Content\n\n- [Description](#description)\n- [Project Status](#project-status)\n- [Project's Services](#projects-services)\n  - [Frontend](#frontend)\n  - [Backend](#backend)\n  - [Examples](#examples)\n- [Project Packages](#project-packages)\n- [Project Databases](#project-databases)\n- [Development Stack](#development-stack)\n- [Project Features](#project-features)\n- [Architecture Diagram](#architecture-diagram)\n- [Environment Setup](#environment-setup)\n- [Build \u0026 Run](#build--run)\n- [Useful Commands](#useful-commands)\n- [UI Prototype](#ui-prototype)\n- [License](#license)\n\n## Description\n\nSellify is a microservice demo of an e-commerce web platform.\n\nThe online store consists of two main web applications: one for administrators and another for customers.\nThe admin application provides tools for product management, order processing, and overseeing customer interactions, as well as inventory management.\nThe customer application allows users to browse products, manage their shopping carts and track their orders.\n\nThe project is set up as a multi-package workspace (monorepo).\n\n## Project Status\n\nCurrent Status: **Active Development**\n\n## Project's Services\n\n### Frontend\n\n- [`customer-frontend`](https://github.com/Xamarsia/sellify/tree/main/services/customer-frontend/README.md) - a Next.js web application that provides customer UI.\n- [`admin-frontend`](https://github.com/Xamarsia/sellify/tree/main/services/admin-frontend/README.md) - a Next.js web application that functions as a admin panel.\n\n### Backend\n\n- TODO: `customer-api` - a server dedicated to customer management.\n- TODO: `admin-api` - a server for managing admin functionalities.\n- TODO: `catalog-api` - a server for handling product catalog.\n- TODO: `basket-api` - a server for managing shopping basket operations.\n- TODO: `order-api` - a server for order processing.\n- TODO: `cache-api` - a server that enhances performance through data caching.\n- TODO: `logging-api` - a server that captures logs for monitoring and analytics.\n\n### Examples\n\nThe following examples illustrate the practical use of custom React component libraries from various packages:\n\n- [`common-ui-components-example`](https://github.com/Xamarsia/sellify/tree/main/examples/common-ui-components-example/README.md) - demonstrates component integration from the [`@sellify/common-ui-components`](https://github.com/Xamarsia/sellify/tree/main/packages/common-ui-components/README.md) package.\n- [`admin-ui-components-example`](https://github.com/Xamarsia/sellify/tree/main/examples/admin-ui-components-example/README.md) - demonstrates component integration from the [`@sellify/admin-ui-components`](https://github.com/Xamarsia/sellify/tree/main/packages/admin-ui-components/README.md) package.\n- [`customer-ui-components-example`](https://github.com/Xamarsia/sellify/tree/main/examples/customer-ui-components-example/README.md) - demonstrates component integration from the [`@sellify/customer-ui-components`](https://github.com/Xamarsia/sellify/tree/main/packages/customer-ui-components/README.md) package.\n\n## Project Packages\n\n- [`@sellify/typescript-config`](https://github.com/Xamarsia/sellify/tree/main/packages/typescript-config/README.md) - tsconfig.json configuration to maintain consistency throughout the monorepo.\n- [`@sellify/tailwind-config`](https://github.com/Xamarsia/sellify/tree/main/packages/tailwind-config/README.md) - tailwindcss presets and shared-styles.\n- [`@sellify/eslint-config`](https://github.com/Xamarsia/sellify/tree/main/packages//README.md) - ESLint presets.\n- [`@sellify/common-ui-components`](https://github.com/Xamarsia/sellify/tree/main/packages/common-ui-components/README.md) - common UI components.\n- [`@sellify/customer-ui-components`](https://github.com/Xamarsia/sellify/tree/main/packages/customer-ui-components/README.md) - customer UI components.\n- [`@sellify/admin-ui-components`](https://github.com/Xamarsia/sellify/tree/main/packages/admin-ui-components/README.md) - admin UI components.\n- [`@sellify/common-icons`](https://github.com/Xamarsia/sellify/tree/main/packages/common-icons/README.md) - common UI icons components.\n- [`@sellify/logger`](https://github.com/Xamarsia/sellify/tree/main/packages/logger/README.md) - log service with Cassandra.\n\n## Project Databases\n\n- `shopping-cart-db` - Redis (NoSQL - Key-Value, **AP** by CAP Theorem). Used by **basket-api** service for real-time shopping cart data.\n- `session-cache-db` - Redis (NoSQL - Key-Value, **AP** by CAP Theorem). Used by **cache-api** service for quick access to user session data.\n- `orders-db` - MongoDB (NoSQL - Document, **CP** by CAP Theorem). Used by **order-api** service to store customer order details.\n- `catalog-db` - MongoDB (NoSQL - Document, **CP** by CAP Theorem). Used by **catalog-api** service for product details and inventory management.\n- `logs-db` - Cassandra (NoSQL - Wide-Column, **AP** by CAP Theorem). Used by **logging-api** service.\n- `admins-db` - PostgreSQL (SQL, **CP** by CAP Theorem). Used by **admin-api** service.\n- `customers-db` - PostgreSQL (SQL, **CP** by CAP Theorem). Used by **customer-api** service.\n\n## Development Stack\n\n- `Next.js` ( React ) - for client and server rendering, advanced routing, nested layouts, data fetching.\n- `Express` - for building RESTful APIs with Node.js.\n- `TypeScript` - for static type checking.\n- `Tailwind CSS` - for simplified CSS styling.\n- `ESLint` - for code linting.\n- `Zod` - for frontend forms validation.\n- `Docker` - for isolated development environment and deployment.\n- `Turborepo`- for scaling monorepo and make workflow in single-package workspace faster.\n- `MongoDB` - for storing orders data.\n- `Redis`- for storing inventory and basket data.\n- `Cassandra`- for storing logs.\n- `PostgreSQL` - for storing user and catalog data.\n- `Selenium` - for automated testing of web applications by simulating user interactions across various browsers.\n\n## Project Features\n\n- [ ] `Authentication` - sign in, sign up, and sign out functionalities, including password reset option.\n  - Use OAuth 2.0 for implementation.\n- [ ] `Skeleton` - display loading skeleton before UI component uploads.\n- [ ] `Notifications System` - notification system integrated.\n- [ ] `Payment System` - payment system integrated.\n- [ ] `Logging System` - logging mechanism for tracking events.\n- [ ] `Testing` - automated tests.\n- [ ] `DDoS Protection` - system is not vulnerable to DDoS attacks.\n- [ ] `Implement customer service features`:\n  - [ ] `Authentication` - support authentication via email and password or external identity provider ( Google ).\n  - [ ] `Product Viewing` - display product details, including images, descriptions, prices, and availability.\n  - [ ] `Shopping Cart` - view and edit personal shopping cart content functionalities.\n    - Calculate the total price, including taxes and shipping.\n  - [ ] `Order History and Tracking` - display order history.\n    - Provide tracking information for orders.\n  - [ ] `Product Search` - search for products by name.\n  - [ ] `Product Filtering` - filter products by options (e.g., price range, category).\n  - [ ] `Wishlist Feature` - wishlist to save items of interest.\n  - [ ] `Input Validation` - server-side validation for user inputs and data integrity.\n    - Display validation errors on the input fields when validation fails.\n  - [ ] `Device Compatibility` - compatible with various devices to provide a smooth user experience.\n    - Web platform with responsive design that adapts the layout and content to various screen sizes.\n  - [ ] `Responsive design` - adaptive user interfaces that adjust seamlessly from smartphone to laptop screen sizes.\n    - The UI adapts on smartphone views for screens with widths ranging from 320px (20rem) to 448px (28rem).\n    - The UI adapts on laptop views for screens wider than 448px (28rem).\n- [ ] `Implement admin service features`:\n  - [ ] `Authentication` - support authentication via email and password.\n    - Ensure that only authorized users are permitted.\n  - [ ] `Statistic Dashboard`- general statistics visualization.\n  - [ ] `Order Processing` - view and manage customer orders.\n  - [ ] `Product Management` - add, edit, and delete products functionalities.\n  - [ ] `Category Management` - add and delete categories functionalities.\n  - [ ] `Inventory Management` - add quantities to products functionality.\n  - [ ] `Customer Management` - display list of customers, their profile information and statistics; add archive customers option.\n  - [ ] `Role Management` - create, edit, and delete roles functionalities for the super admin.\n  - [ ] `Role-Based Access Control` - restricts system access to authorized users based on their assigned roles.\n    - Users can be assigned to a single role.\n  - [ ] `Admin User Management` - create and delete admins functionalities for the super admin.\n  - [ ] `Form Validation` - server-side validation for user inputs and data integrity.\n\n## Architecture Diagram\n\n```mermaid\n\nflowchart TD\n\n    subgraph Data_Layer\n        Redis[(Redis Shopping Cart Storage)]\n        SessionCache[(Redis Session Cache)]\n        MongoDBOrders[(MongoDB Orders Storage)]\n        MongoDBCatalog[(MongoDB Catalog Storage)]\n        CassandraDatabase[(Cassandra Database)]\n        AdminDB[(PostgreSQL Database for Admins)]\n        CustomerDB[(PostgreSQL Database for Customers)]\n    end\n\n    subgraph Business_Logic_Layer\n        Catalog[Catalog Service]\n        ShoppingCart[Shopping Cart Service]\n        CacheService[Cache Service]\n        Order[Order Service]\n        LoggingService[Logging Service]\n    end\n\n    subgraph User_Management_Layer\n        Admins[Admin Management Service]\n        Customers[Customer Management Service]\n    end\n\n    subgraph UI_Layer\n        AdminWeb[Admin Web Application]\n        CustomerWeb[Customer Web Application]\n    end\n\n    subgraph External_Authorization_Layer\n        CustomerAuthService[Customer Authorization Service]\n        AdminAuthService[Admin Authorization Service]\n    end\n\n    %% Define Relationships\n    AdminAuthService --\u003e Admins\n    CustomerAuthService --\u003e Customers\n    UI_Layer --\u003e Business_Logic_Layer\n    UI_Layer --\u003e User_Management_Layer\n\n    Catalog -- Mongoose --\u003e MongoDBCatalog\n    ShoppingCart --\u003e Redis\n    CacheService --\u003e SessionCache\n    Order -- Mongoose --\u003e MongoDBOrders\n\n    LoggingService --\u003e CassandraDatabase\n\n    Admins -- TypeORM --\u003e AdminDB\n    Customers -- TypeORM --\u003e CustomerDB\n\n```\n\n## Environment Setup\n\n1. Install Visual Studio Code (`ms-vscode-remote.remote-containers` extension).\n2. Install Docker Engine [Install Docker Engine on Ubuntu](https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository) and [Linux post-installation steps for Docker Engine](https://docs.docker.com/engine/install/linux-postinstall/).\n3. Clone project.\n4. [Install turbo](https://turborepo.com/docs/getting-started/installation) by executing the following command:\n\n   ```bash\n   pnpm add turbo --save-dev\n   ```\n\n## Build \u0026 Run\n\n1. Open project in VS Code.\n2. [Reopen project in Dev Container](https://code.visualstudio.com/docs/devcontainers/containers).\n3. To run project, open the terminal in the root directory and execute the following command:\n\n   ```bash\n   pnpm turbo dev\n   ```\n\n   This command will start the service on the development server.\n\n4. Open \u003chttp://localhost:3000\u003e in a browser to see the customer web app or admin web on 3001 port.\n\n## UI Prototype\n\nThis project has been designed in Figma prior to development; based on [SEL Prototype V1.0](https://www.figma.com/design/AO5rA915a6xdGOhtnVNobW/SEL-Prototype-1.0?node-id=2003-5147\u0026t=0EzElkWsprYyA0pO-1).\n\nThe design process ensured that the layout, color schemes, typography, and overall aesthetics aligned with the project goals.\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"48%\"\u003eAdmin Home\u003c/td\u003e\n    \u003ctd width=\"48%\"\u003eCustomer Home\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr align=\"center\"\u003e\n    \u003ctd width=\"48%\" style=\"padding: 0;\"\u003e\n      \u003ca href=\"https://www.figma.com/design/AO5rA915a6xdGOhtnVNobW/SEL-Prototype-1.0?node-id=2003-5147\u0026t=O2mOqoVwI29NQ0iX-1\"\u003e\n        \u003cimg alt=\"Home\" src=\"https://github.com/user-attachments/assets/4ca974b0-1d01-48f8-b1b1-9ad00930007f\" /\u003e\n       \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"48%\" style=\"padding: 0;\"\u003e\n      \u003ca href=\"https://www.figma.com/design/AO5rA915a6xdGOhtnVNobW/SEL-Prototype-1.0?node-id=2003-5148\u0026t=O2mOqoVwI29NQ0iX-1\"\u003e\n        \u003cimg alt=\"News\" src=\"https://github.com/user-attachments/assets/52dbcdf3-484d-4b23-81de-96046a369ed1\" /\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Useful Commands\n\nThese commands should be executed in the root directory of the `sellify` project.\n\n- `pnpm install` - installs all dependencies for the project.\n- `pnpm turbo dev` - starts the development server.\n- `pnpm turbo build` - builds the project for production.\n- `pnpm turbo start` - starts the production server.\n- `pnpm turbo check-types` - runs type checking.\n- `pnpm turbo e2e-tests` - runs e2e tests.\n- `pnpm lint` - runs ESLint.\n- `pnpm format` - formats every .ts, .tsx or .md file with Prettier.\n- `pnpm store prune` - removes unreferenced packages from the store.\n- `pnpm clean` - removes .pnpm-store and node_modules folders; run `pnpm install` afterward.\n\n[Filtering](https://turborepo.com/docs/crafting-your-repository/running-tasks#using-filters) by package is a simple way to only run tasks for the selected packages.\n\nAdd `package-name#` after `pnpm turbo` to apply the command for a specific package only.\n\n```bash\npnpm turbo package-name#build\n```\n\nTo apply the command to all directory, include `--filter=\"./directory-name/*\"` at the end.\n\n```bash\npnpm turbo build --filter=\"./directory-name/*\"\n```\n\n## License\n\nLicensed under the GNU GPL v3.0 License. See [LICENSE](./LICENSE) file for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxamarsia%2Fsellify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxamarsia%2Fsellify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxamarsia%2Fsellify/lists"}