A first-of-its-kind free educational tool, UX Core quickly spread through global product management communities after its release in 2020.
Contains 1,000+ practical examples of cognitive biases applied to product design, software development, and team management.
Widely recognized by leading scholars in cognitive science and behavioral economics (Duke University, Harvard Business School, AUD, and others).
Actively used by managers, designers, and educators worldwide.
-
React (via Next.js)
-
TypeScript
-
SCSS modules
-
Node.js version: 18.18.0
-
ESLint – for consistent code quality
-
Prettier – for automatic code formatting
-
Husky – used to
run npx lint-stagedon pre-commit
In this project we use Yarn, so make sure you have it installed.
yarn installyarn devApp runs at http://localhost:3005
We use Conventional Commits to keep our history clean and readable.
Commit prefixes and branch names should be in the following format:
feat:- ✨ A new featurehotfix:- 🚑 A critical fixdocs:- 📝 Documentation only changesstyle:- 💅 Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)refactor:- 🔨 A code change that neither fixes a bug nor adds a featurechore:- 👷Dev setup, tooling, config or just some random taskbugfix:- 🐛 A bug fix
Example commit message:
feat: added new button component
Example commit message with emoji, to make life easier and more fun:
✨ feat: added new button component
There are two ways of creating a branch:
| Case | Rule | Example |
|---|---|---|
| From an Issue (preferred if Issue exists) | GitHub auto-adds the Issue number. Always use this when related Issue exists. | feat/123-add-new-button-component |
| Without an Issue | Use standard format with type/purpose. | feat/add-new-button-componenthotfix/fix-login-crashbugfix/button-alignment |
- cypress - contains all the e2e tests
- public - contains static assets like images, icons, etc.
- src - contains the main application code
- api - contains API requests and related code
- data - contains static data in Russian, English and Armenian languages
- assets - contains static assets like images, icons, etc.
- components - reusable components
- hooks - custom React hooks
- layouts - layout components
- lib - utility functions and libraries
- local-types - local shareable types used in the project
- pages - Next.js pages
- styles - global styles and variables
To keep the project structure consistent, please follow this import order in files:
-
Third-party libraries (e.g., React, Next.js, lodash)
-
Global styles (/src/styles)
-
Constants (/src/constants)
-
Helpers (/src/helpers)
-
Types (/src/types)
-
Hooks (/src/hooks)
-
Lib (/src/lib)
-
Api (/src/api)
-
Components (/src/components)
-
Layouts (/src/layouts)
-
Features (/src/features)
-
Assets (/public/images, SVGs, icons) - *But in general we will be using Icon component
-
Local styles
Each Component have its own folder with the following structure:
src/components/ComponentName/
src/components/ComponentName/index.tsx
src/components/ComponentName/ComponentName.tsx
src/components/ComponentName/ComponentName.module.scss
src/components/ComponentName/ComponentName.types.ts
Same approach applies to Layouts.
❗️Some components don't have separate types, instead types are defined directly in the component file. That's an old approach, but we will be moving to the new one gradually.
Thank you for reading! Be Kind. Do Good. 🍃
