_______ __ __ __ __
| \ | \| \ | \ | \
| $$$$$$$\ ______ \$$| $$ ______ ______ ______ | $$ ______ _| $$_ ______
| $$__/ $$ / \ | \| $$ / \ / \ / \ | $$ | \ $$ \ / \
| $$ $$| $$$$$$\| $$| $$| $$$$$$\| $$$$$$\| $$$$$$\| $$ \$$$$$$\$$$$$$ | $$$$$$\
| $$$$$$$\| $$ | $$| $$| $$| $$ $$| $$ \$$| $$ | $$| $$ / $$| $$ __| $$ $$
| $$__/ $$| $$__/ $$| $$| $$| $$$$$$$$| $$ | $$__/ $$| $$| $$$$$$$| $$| \ $$$$$$$$
| $$ $$ \$$ $$| $$| $$ \$$ \| $$ | $$ $$| $$ \$$ $$ \$$ $$\$$ \
\$$$$$$$ \$$$$$$ \$$ \$$ \$$$$$$$ \$$ | $$$$$$$ \$$ \$$$$$$$ \$$$$ \$$$$$$$
| $$
| $$
\$$
Built by Trung PhαΊ‘m
- β‘ React.js
- π₯ Type checking TypeScript
- π Integrate with Tailwind CSS
- β¨οΈ Form handling with Mantine
- π΄ Validation library with Zod
- π Linter with ESLint (default Next.js, Next.js Core Web Vitals, Tailwind CSS and Airbnb configuration)
- π Code Formatter with Prettier
- π¦ Husky for Git Hooks
- π« Lint-staged for running linters on Git staged files
- π Lint git commit with Commitlint
- π Write standard compliant commit messages with Commitizen
- π‘ Absolute Imports using
@
prefix - π VSCode configuration: Debug, Settings and Extensions
- π± Phosphor Icons
- Node.js 20+ and pnpm
Run the following command on your local environment:
git clone --depth=1 https://gitlab.yody.io/unicorn/Omnichannel/e-commerce/yobuggy/fe/buggy-web-bo.git
cd buggy-web-bo
npm i -g pnpm
pnpm install
Start source
pnpm run dev
Open http://localhost:3000 with your favorite browser to see your project.
.
βββ README.md # Documentation for the project, including how to set up and use the application.
βββ .husky # Configuration for Husky, which is used to manage Git hooks (e.g., pre-commit or pre-push hooks).
βββ .vscode # VSCode-specific configuration files, such as recommended extensions or workspace settings.
βββ public # Static public assets that are served directly (e.g., images, favicon, robots.txt).
βββ index.html # Main HTML file that acts as the entry point for the application.
βββ src # Source code for the application.
β βββ components # React components responsible for building the UI.
β β βββ atoms # Small, reusable UI components (e.g., buttons, input fields, icons).
β β βββ molecules # Combinations of atoms to form slightly more complex UI components (e.g., a form field with a label and input).
β β βββ organisms # Complex and reusable components made from atoms and molecules (e.g., headers, footers, or cards).
β βββ core # Contains core logic and Clean Architecture layers.
β β βββ application # Application-level logic and business rules.
β β β βββ repositories # Interfaces for repositories, defining how data should be handled (e.g., CRUD operations).
β β β βββ services # Business services that interact with repositories and execute application logic.
β β β βββ use-cases # Specific use cases for the application, implementing business logic using services and repositories.
β β βββ entities # Domain entities and business logic.
β β β βββ models # Domain models representing the core data structures (e.g., User, Product).
β β β βββ dto # Data Transfer Objects used to define the shape of data sent or received.
β β βββ infrastructure # Handles communication with external systems (e.g., APIs).
β β β βββ services # Parameter configurations and request structures for API interactions.
β β β βββ repositories # Concrete implementations of repository interfaces for API communication.
β βββ hooks # Custom React hooks for managing reusable logic (e.g., useFetch, useAuth).
β βββ libs # Configuration for third-party libraries (e.g., Axios, i18n, or any library-specific setup).
β βββ store # State management setup (e.g., Redux, Zustand, or Context API configurations).
β βββ styles # Global or component-specific styles (e.g., CSS, SCSS, or Tailwind CSS imports).
β βββ utils # Utility functions and helpers (e.g., date formatters, validation utilities).
βββ tailwind.config.js # Configuration file for Tailwind CSS, customizing the design system (e.g., colors, spacing).
βββ tsconfig.json # TypeScript configuration file for defining project-specific TypeScript settings.
The project enforces Conventional Commits specification. This means that all your commit messages must be formatted according to the specification. To help you write commit messages, the project uses Commitizen, an interactive CLI that guides you through the commit process. To use it, run the following command:
pnpm commit
Made with β₯ by Team