{"id":28362570,"url":"https://github.com/andrejberezni/stance","last_synced_at":"2026-04-11T03:04:07.874Z","repository":{"id":289647369,"uuid":"971936551","full_name":"AndrejBerezni/Stance","owner":"AndrejBerezni","description":"E-commerce","archived":false,"fork":false,"pushed_at":"2025-06-15T09:48:35.000Z","size":5806,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-15T09:51:50.453Z","etag":null,"topics":["cypress","github-actions","neondb","nextjs15","postgresql","react","storybook","stripe","tailwindcss","typescript","vercel","vitest"],"latest_commit_sha":null,"homepage":"https://stance-liard.vercel.app","language":"TypeScript","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/AndrejBerezni.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}},"created_at":"2025-04-24T09:31:45.000Z","updated_at":"2025-06-15T09:48:38.000Z","dependencies_parsed_at":"2025-06-07T22:18:48.214Z","dependency_job_id":"23416690-8769-49ec-a055-dd0fcb2bb6e5","html_url":"https://github.com/AndrejBerezni/Stance","commit_stats":null,"previous_names":["andrejberezni/stylenest","andrejberezni/stance"],"tags_count":0,"template":false,"template_full_name":"AndrejBerezni/andrejb-nextjs-starter","purl":"pkg:github/AndrejBerezni/Stance","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndrejBerezni%2FStance","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndrejBerezni%2FStance/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndrejBerezni%2FStance/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndrejBerezni%2FStance/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AndrejBerezni","download_url":"https://codeload.github.com/AndrejBerezni/Stance/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndrejBerezni%2FStance/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261469249,"owners_count":23163055,"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","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":["cypress","github-actions","neondb","nextjs15","postgresql","react","storybook","stripe","tailwindcss","typescript","vercel","vitest"],"created_at":"2025-05-28T15:00:35.128Z","updated_at":"2025-12-30T20:14:47.697Z","avatar_url":"https://github.com/AndrejBerezni.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# StyleNest\r\n\r\n\u003e **Note:** This project is a work in progress.\r\n\r\nStyleNest is a modern, scalable e-commerce web application built with Next.js, TypeScript, and Tailwind CSS. It demonstrates best practices in web development, including internationalization, state management, reusable UI components, and comprehensive testing.\r\n\r\n---\r\n\r\n## 🚀 Purpose\r\n\r\nStyleNest aims to provide a robust foundation for an e-commerce platform, focusing on maintainability, performance, and developer experience.\r\n\r\n---\r\n\r\n## 🌐 Live Demo\r\n\r\nCheck out the production site here: [https://stance-liard.vercel.app](https://stance-liard.vercel.app/en)\r\n\r\n---\r\n\r\n## 🖼️ Screenshots\r\n\r\n![Home Page](screenshots/home.png)\r\n![Product Page](screenshots/product.png)\r\n![Catalogue Page](screenshots/catalogue.png)\r\n![Reviews](screenshots/reviews.png)\r\n![Cart Page](screenshots/cart.png)\r\n\r\n## 🛠️ Tech Stack\r\n\r\n- **Framework:** [Next.js](https://nextjs.org/) (App Router)\r\n- **Language:** TypeScript\r\n- **UI:** React, Tailwind CSS\r\n- **State Management:** Redux Toolkit, redux-persist\r\n- **Internationalization:** next-intl\r\n- **Testing:** Jest, @testing-library/react, Cypress (E2E)\r\n- **Component Development:** Storybook\r\n- **Linting \u0026 Formatting:** ESLint, Prettier\r\n- **CI/CD:** GitHub Actions\r\n\r\n---\r\n\r\n## 📄 Pages Implemented So Far\r\n\r\n- **Home Page:** Product listings, featured sections\r\n- **Product Catalogue Page:** Browse products, filter and sort\r\n- **Product Details Page:** Product info, reviews, add to cart\r\n- **Cart Page:** Cart management, checkout preview\r\n- **404 Not Found Page**\r\n- **(More pages coming soon...)**\r\n\r\n---\r\n\r\n## 📁 Project Structure\r\n\r\n```\r\n.github/workflows/    # GitHub Actions CI/CD workflows\r\n.husky                # Husky configuration\r\n.storybook            # Storybook configuration\r\n__tests__             # Unit and integration test\r\ncypress/              # End-to-end tests (Cypress)\r\nmessages              # Internationalization messages\r\npublic/               # Static assets\r\nsrc/\r\n  app/                # Next.js app directory (routing, layouts)\r\n  components/         # Shared and common UI components\r\n  features/           # Feature-based modules (e.g., product, cart)\r\n  hooks/              # Custom React hooks\r\n  i18n/               # Internationalization setup and configs\r\n  lib/                # Utilities, providers, and shared logic\r\n  stories/            # Storybook stories for UI components\r\n```\r\n\r\n---\r\n\r\n## ✨ Features\r\n\r\n- **Internationalization (i18n):** Multi-language support using next-intl.\r\n- **State Management:** Global state with Redux Toolkit and persisted cart state.\r\n- **Reusable UI Components:** Modular, accessible, and tested components.\r\n- **Performance:** SSR, SSG, and skeleton loaders for fast, SEO-friendly pages.\r\n- **SEO Optimization:** Dynamic metadata and structured data (`application/ld+json`) on product pages for improved search engine visibility and rich results.\r\n- **Testing:** Unit and integration tests with Jest and Testing Library.\r\n- **E2E Testing:** Automated end-to-end tests with Cypress for critical user flows.\r\n- **Continuous Integration:** GitHub Actions for automated linting, testing, and build checks on every push and pull request.\r\n- **Developer Experience:** Storybook for UI development, strict linting, and type safety.\r\n- **Scalable Architecture:** Feature-based folder structure for easy extensibility.\r\n\r\n---\r\n\r\n## ⚙️ GitHub Actions\r\n\r\nThis project uses GitHub Actions for continuous integration and delivery. The workflows include:\r\n\r\n- **Linting:** Runs ESLint and Prettier checks.\r\n- **Unit \u0026 Integration Tests:** Executes Jest and Testing Library tests.\r\n- **E2E Tests:** Runs Cypress end-to-end tests.\r\n- **Build:** Ensures the project builds successfully before merging.\r\n\r\nAll workflows are defined in [`.github/workflows/`](.github/workflows/).\r\n\r\n---\r\n\r\n## 🤝 Contributing\r\n\r\nContributions are welcome! Please open issues or submit pull requests for improvements and new features.\r\n\r\n---\r\n\r\n## 📄 License\r\n\r\nThis project is licensed under the MIT License.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrejberezni%2Fstance","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrejberezni%2Fstance","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrejberezni%2Fstance/lists"}