@t1ep1l0t/create-fsd 2.0.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +105 -49
  2. package/bin/cli.js +36 -12
  3. package/package.json +8 -4
  4. package/templates/react-ts/.editorconfig +12 -0
  5. package/templates/react-ts/.env.example +1 -0
  6. package/templates/react-ts/.prettierignore +7 -0
  7. package/templates/react-ts/.prettierrc +10 -0
  8. package/templates/react-ts/.vscode/extensions.json +7 -0
  9. package/templates/react-ts/README.md +70 -0
  10. package/templates/react-ts/eslint.config.js +143 -0
  11. package/templates/react-ts/index.html +13 -0
  12. package/templates/react-ts/package.json +55 -0
  13. package/templates/react-ts/public/locales/en/basic.json +9 -0
  14. package/templates/react-ts/public/locales/ru/basic.json +9 -0
  15. package/templates/react-ts/src/app/App.tsx +11 -0
  16. package/templates/react-ts/src/app/providers/i18n/index.ts +37 -0
  17. package/templates/react-ts/src/app/providers/router/index.tsx +25 -0
  18. package/templates/react-ts/src/app/styles/global.css +15 -0
  19. package/templates/react-ts/src/app/styles/index.css +9 -0
  20. package/templates/react-ts/src/entities/.gitkeep +0 -0
  21. package/templates/react-ts/src/features/.gitkeep +0 -0
  22. package/templates/react-ts/src/main.tsx +14 -0
  23. package/templates/react-ts/src/pages/about/AboutPage.tsx +91 -0
  24. package/templates/react-ts/src/pages/about/index.ts +1 -0
  25. package/templates/react-ts/src/pages/home/HomePage.tsx +94 -0
  26. package/templates/react-ts/src/pages/home/index.ts +1 -0
  27. package/templates/react-ts/src/shared/api/client.ts +32 -0
  28. package/templates/react-ts/src/shared/api/query-client.ts +11 -0
  29. package/templates/react-ts/src/shared/store/counter.ts +15 -0
  30. package/templates/react-ts/src/shared/ui/Button/Button.tsx +31 -0
  31. package/templates/react-ts/src/shared/ui/Button/index.ts +1 -0
  32. package/templates/react-ts/src/shared/ui/Card/Card.tsx +16 -0
  33. package/templates/react-ts/src/shared/ui/Card/index.ts +1 -0
  34. package/templates/react-ts/src/vite-env.d.ts +10 -0
  35. package/templates/react-ts/src/widgets/Header/Header.tsx +45 -0
  36. package/templates/react-ts/src/widgets/Header/index.ts +1 -0
  37. package/templates/react-ts/src/widgets/layouts/BaseLayout/BaseLayout.tsx +13 -0
  38. package/templates/react-ts/src/widgets/layouts/BaseLayout/index.ts +1 -0
  39. package/templates/react-ts/tsconfig.app.json +39 -0
  40. package/templates/react-ts/tsconfig.json +37 -0
  41. package/templates/react-ts/tsconfig.node.json +11 -0
  42. package/templates/react-ts/vite.config.ts +23 -0
package/README.md CHANGED
@@ -14,9 +14,9 @@
14
14
 
15
15
  ## 📖 About
16
16
 
17
- **@t1ep1l0t/create-fsd** is a powerful CLI tool that helps you quickly bootstrap production-ready React applications following the [Feature-Sliced Design (FSD)](https://feature-sliced.design/) architectural methodology. Not only can you create fully configured projects in seconds, but you can also generate FSD-compliant structures for features, entities, widgets, and pages on-demand!
17
+ **@t1ep1l0t/create-fsd** is a powerful CLI tool that helps you quickly bootstrap production-ready frontend applications following the [Feature-Sliced Design (FSD)](https://feature-sliced.design/) architectural methodology. Create fully configured projects with **JavaScript** or **TypeScript** in seconds, and generate FSD-compliant structures for features, entities, widgets, and pages on-demand!
18
18
 
19
- > 🎯 Currently supports **React** template. More frameworks (Vue, Next, Nuxt, Svelte) coming soon!
19
+ > 🎯 **Supports both JavaScript and TypeScript** with automatic project type detection
20
20
 
21
21
  ---
22
22
 
@@ -25,15 +25,20 @@
25
25
  ### 🏗️ **Architecture**
26
26
  - **Feature-Sliced Design (FSD)** - Scalable and maintainable project structure
27
27
  - **FSD Structure Generator** - Quickly generate features, entities, widgets, and pages
28
+ - **Auto-detection** - Automatically detects TypeScript/JavaScript and creates appropriate files
28
29
  - Clear separation of concerns across layers
29
30
  - Ready-to-use folder structure with automated scaffolding
30
31
 
31
- ### ⚡ **Modern Stack**
32
+ ### ⚡ **Language Support**
33
+ - **JavaScript & TypeScript** - Full support for both languages
34
+ - **Smart Detection** - Automatically detects project type when generating structures
35
+ - **Type Safety** - TypeScript templates with proper typing for all libraries
36
+ - **Zero Config** - Works out of the box with optimal settings
37
+
38
+ ### 📦 **Modern Stack** (React Template)
32
39
  - **React 18** - Latest React with concurrent features
33
40
  - **Vite** - Lightning-fast build tool and dev server
34
41
  - **TailwindCSS v4** - Utility-first CSS framework
35
-
36
- ### 📦 **Pre-configured Libraries**
37
42
  - **React Router DOM** - Declarative routing
38
43
  - **Zustand** - Lightweight state management
39
44
  - **Axios** - HTTP client with interceptors configured
@@ -44,44 +49,47 @@
44
49
  ### 🎨 **Developer Experience**
45
50
  - Path aliases configured (`@app`, `@pages`, `@widgets`, `@features`, `@entities`, `@shared`)
46
51
  - Example code demonstrating best practices
52
+ - Full TypeScript support with type definitions
47
53
  - Zero configuration needed - start coding immediately
48
54
 
49
55
  ---
50
56
 
51
57
  ## 🚀 Quick Start
52
58
 
53
- ### Using npm
59
+ ### Create a JavaScript Project
54
60
 
55
61
  ```bash
56
- npm create @t1ep1l0t/fsd my-app
62
+ npx @t1ep1l0t/create-fsd app my-app
57
63
  cd my-app
58
64
  npm run dev
59
65
  ```
60
66
 
61
- ### Using npx
67
+ ### Create a TypeScript Project
62
68
 
63
69
  ```bash
64
- npx @t1ep1l0t/create-fsd my-app
70
+ npx @t1ep1l0t/create-fsd app my-app --typescript
65
71
  cd my-app
66
72
  npm run dev
67
73
  ```
68
74
 
69
- ### With template option
75
+ ### With npm create
70
76
 
71
77
  ```bash
72
- npx @t1ep1l0t/create-fsd my-app --template react
78
+ npm create @t1ep1l0t/fsd app my-app
79
+ cd my-app
80
+ npm run dev
73
81
  ```
74
82
 
75
83
  ---
76
84
 
77
- ## 🏗️ FSD Structure Generator
85
+ ## 🏗️ FSD Architecture Generator
78
86
 
79
- After creating your project, you can use the `fsd` command to quickly generate FSD-compliant directory structures for features, entities, widgets, and pages.
87
+ After creating your project, you can use the `arch` command to quickly generate FSD-compliant directory structures for features, entities, widgets, and pages. The command **automatically detects** whether your project uses TypeScript or JavaScript and creates the appropriate files.
80
88
 
81
89
  ### Usage
82
90
 
83
91
  ```bash
84
- create-fsd fsd [options]
92
+ create-fsd arch [options]
85
93
  ```
86
94
 
87
95
  ### Options
@@ -97,30 +105,47 @@ create-fsd fsd [options]
97
105
 
98
106
  ### Examples
99
107
 
108
+ #### TypeScript Project
100
109
  ```bash
101
- # Create a feature with UI and model segments
102
- create-fsd fsd -f user -s ui model -i
110
+ # The CLI detects tsconfig.json and creates .ts files automatically
111
+ create-fsd arch -f user-auth -s ui model api -i
103
112
 
104
- # Result:
105
- # src/features/user/
113
+ # Result in TypeScript project:
114
+ # src/features/user-auth/
106
115
  # ├── ui/
107
- # │ └── index.js
116
+ # │ └── index.ts
117
+ # ├── model/
118
+ # │ └── index.ts
119
+ # ├── api/
120
+ # │ └── index.ts
121
+ # └── index.ts (exports all segments)
122
+ ```
123
+
124
+ #### JavaScript Project
125
+ ```bash
126
+ # The CLI detects no tsconfig.json and creates .js files automatically
127
+ create-fsd arch -e product -s model ui -i
128
+
129
+ # Result in JavaScript project:
130
+ # src/entities/product/
108
131
  # ├── model/
109
132
  # │ └── index.js
133
+ # ├── ui/
134
+ # │ └── index.js
110
135
  # └── index.js (exports all segments)
136
+ ```
111
137
 
112
- # Create an entity with API and lib segments
113
- create-fsd fsd -e product -s api lib -i
114
-
138
+ #### More Examples
139
+ ```bash
115
140
  # Create a widget without index files (uses .gitkeep)
116
- create-fsd fsd -w header -s ui model
141
+ create-fsd arch -w header -s ui model
117
142
 
118
143
  # Create a page
119
- create-fsd fsd -p home -s ui api -i
144
+ create-fsd arch -p home -s ui api -i
120
145
 
121
146
  # Add more segments to existing structure
122
- create-fsd fsd -f user -s api config -i
123
- # This will add api/ and config/ folders and update the root index.js
147
+ create-fsd arch -f user-auth -s config types -i
148
+ # This will add new folders and update the root index file
124
149
  ```
125
150
 
126
151
  ### Common Segment Names
@@ -145,7 +170,7 @@ src/
145
170
  ├── 📱 app/ # Application initialization layer
146
171
  │ ├── providers/ # App providers (Router, i18n, Query Client)
147
172
  │ ├── styles/ # Global styles
148
- │ └── App.jsx # Root component
173
+ │ └── App.tsx/jsx # Root component
149
174
 
150
175
  ├── 📄 pages/ # Pages layer - route components
151
176
  │ ├── home/ # Home page
@@ -163,10 +188,12 @@ src/
163
188
 
164
189
  └── 🔧 shared/ # Shared layer - reusable code
165
190
  ├── api/ # API client configuration
166
- ├── store/ # Zustand stores
191
+ ├── store/ # State management stores
167
192
  └── ui/ # UI kit components
168
193
  ```
169
194
 
195
+ > **Note:** TypeScript projects include `.tsx`/`.ts` files, while JavaScript projects use `.jsx`/`.js`
196
+
170
197
  ### Layer Responsibilities
171
198
 
172
199
  | Layer | Purpose | Examples |
@@ -198,22 +225,32 @@ The generated project includes working examples for all included libraries:
198
225
 
199
226
  ## 🛠️ Available Templates
200
227
 
201
- | Template | Status | Description |
202
- |----------|--------|-------------|
203
- | **React** | ✅ Available | React 18 + Vite + FSD architecture |
204
- | **Vue** | 🔜 Coming Soon | Vue 3 + Vite + FSD architecture |
205
- | **Next.js** | 🔜 Coming Soon | Next.js + FSD architecture |
206
- | **Nuxt** | 🔜 Coming Soon | Nuxt 3 + FSD architecture |
207
- | **Svelte** | 🔜 Coming Soon | Svelte + Vite + FSD architecture |
228
+ | Template | Language | Status | Description |
229
+ |----------|----------|--------|-------------|
230
+ | **React** | JS / TS | ✅ Available | React 18 + Vite + FSD architecture |
231
+ | **Vue** | JS / TS | 🔜 Coming Soon | Vue 3 + Vite + FSD architecture |
232
+ | **Next.js** | JS / TS | 🔜 Coming Soon | Next.js + FSD architecture |
233
+ | **Nuxt** | JS / TS | 🔜 Coming Soon | Nuxt 3 + FSD architecture |
234
+ | **Svelte** | JS / TS | 🔜 Coming Soon | Svelte + Vite + FSD architecture |
208
235
 
209
236
  ---
210
237
 
211
238
  ## 📋 CLI Commands
212
239
 
213
- ### Create Project
240
+ ### Main Commands
241
+
242
+ ```bash
243
+ create-fsd # Show help
244
+ create-fsd app <name> [opts] # Create new project
245
+ create-fsd arch [opts] # Generate FSD structure
246
+ ```
247
+
248
+ ### `create-fsd app` - Create Project
249
+
250
+ Create a new project from template
214
251
 
215
252
  ```bash
216
- create-fsd <project-name> [options]
253
+ create-fsd app <project-name> [options]
217
254
  ```
218
255
 
219
256
  #### Options
@@ -221,24 +258,28 @@ create-fsd <project-name> [options]
221
258
  | Option | Alias | Description | Default |
222
259
  |--------|-------|-------------|---------|
223
260
  | `--template <name>` | `-t` | Template to use | `react` |
261
+ | `--typescript` | `-ts` | Use TypeScript instead of JavaScript | `false` |
224
262
 
225
263
  #### Examples
226
264
 
227
265
  ```bash
228
- # Create project with React template (default)
229
- npx @t1ep1l0t/create-fsd my-app
266
+ # Create JavaScript project (default)
267
+ npx @t1ep1l0t/create-fsd app my-app
230
268
 
231
- # Explicitly specify template
232
- npx @t1ep1l0t/create-fsd my-app --template react
269
+ # Create TypeScript project
270
+ npx @t1ep1l0t/create-fsd app my-app --typescript
271
+ npx @t1ep1l0t/create-fsd app my-app -ts
233
272
 
234
- # Short form
235
- npx @t1ep1l0t/create-fsd my-app -t react
273
+ # Specify template explicitly
274
+ npx @t1ep1l0t/create-fsd app my-app -t react -ts
236
275
  ```
237
276
 
238
- ### Generate FSD Structure
277
+ ### `create-fsd arch` - Generate FSD Structure
278
+
279
+ Generate FSD-compliant architecture structures. Automatically detects project type (TS/JS) and creates appropriate files.
239
280
 
240
281
  ```bash
241
- create-fsd fsd [options]
282
+ create-fsd arch [options]
242
283
  ```
243
284
 
244
285
  #### Options
@@ -256,24 +297,39 @@ create-fsd fsd [options]
256
297
 
257
298
  ```bash
258
299
  # Create feature with index files
259
- create-fsd fsd -f authentication -s ui model api -i
300
+ create-fsd arch -f authentication -s ui model api -i
260
301
 
261
302
  # Create entity without index files
262
- create-fsd fsd -e user -s model api
303
+ create-fsd arch -e user -s model api
263
304
 
264
305
  # Create widget
265
- create-fsd fsd -w sidebar -s ui lib -i
306
+ create-fsd arch -w sidebar -s ui lib -i
266
307
 
267
308
  # Create page
268
- create-fsd fsd -p dashboard -s ui model -i
309
+ create-fsd arch -p dashboard -s ui model -i
310
+
311
+ # Add more segments to existing structure
312
+ create-fsd arch -f authentication -s config types -i
269
313
  ```
270
314
 
315
+ #### Auto-Detection
316
+
317
+ The `arch` command automatically detects your project type:
318
+
319
+ - **TypeScript projects** (with `tsconfig.json`) → creates `.ts`/`.tsx` files
320
+ - **JavaScript projects** (without `tsconfig.json`) → creates `.js`/`.jsx` files
321
+
271
322
  ---
272
323
 
273
324
  ## 🎓 Learn More
274
325
 
326
+ ### Core Concepts
275
327
  - [Feature-Sliced Design Documentation](https://feature-sliced.design/)
328
+ - [FSD Best Practices](https://feature-sliced.design/docs/guides)
329
+
330
+ ### Technologies (React Template)
276
331
  - [React Documentation](https://react.dev/)
332
+ - [TypeScript Documentation](https://www.typescriptlang.org/docs/)
277
333
  - [Vite Documentation](https://vitejs.dev/)
278
334
  - [TailwindCSS Documentation](https://tailwindcss.com/)
279
335
 
package/bin/cli.js CHANGED
@@ -13,16 +13,35 @@ const __dirname = path.dirname(__filename);
13
13
 
14
14
  const program = new Command();
15
15
 
16
+ // Helper function to detect if project uses TypeScript
17
+ function isTypeScriptProject() {
18
+ const tsconfigPath = path.join(process.cwd(), 'tsconfig.json');
19
+ return fs.existsSync(tsconfigPath);
20
+ }
21
+
16
22
  program
17
23
  .name('create-fsd')
18
- .description('CLI to create React projects with FSD architecture')
19
- .version('2.0.0')
24
+ .description('CLI for Feature-Sliced Design architecture')
25
+ .version('3.0.0');
26
+
27
+ // App creation command
28
+ program
29
+ .command('app')
30
+ .description('Create a new project from template')
20
31
  .argument('<project-name>', 'name of the project')
21
32
  .option('-t, --template <template>', 'template to use', 'react')
33
+ .option('-ts, --typescript', 'use TypeScript instead of JavaScript', false)
22
34
  .action(async (projectName, options) => {
23
- const { template } = options;
35
+ const { template, typescript } = options;
24
36
 
25
- console.log(chalk.blue.bold(`\n🚀 Creating ${projectName} with ${template} template...\n`));
37
+ // Determine the actual template to use
38
+ let actualTemplate = template;
39
+ if (typescript && template === 'react') {
40
+ actualTemplate = 'react-ts';
41
+ }
42
+
43
+ const languageLabel = typescript ? 'TypeScript' : 'JavaScript';
44
+ console.log(chalk.blue.bold(`\n🚀 Creating ${projectName} with ${template} template (${languageLabel})...\n`));
26
45
 
27
46
  const targetDir = path.join(process.cwd(), projectName);
28
47
 
@@ -35,10 +54,10 @@ program
35
54
  // Create project directory
36
55
  fs.mkdirSync(targetDir, { recursive: true });
37
56
 
38
- const templateDir = path.join(__dirname, '..', 'templates', template);
57
+ const templateDir = path.join(__dirname, '..', 'templates', actualTemplate);
39
58
 
40
59
  if (!fs.existsSync(templateDir)) {
41
- console.log(chalk.red(`❌ Template ${template} not found!`));
60
+ console.log(chalk.red(`❌ Template ${actualTemplate} not found!`));
42
61
  process.exit(1);
43
62
  }
44
63
 
@@ -81,9 +100,9 @@ program
81
100
  console.log();
82
101
  });
83
102
 
84
- // FSD structure generation command
103
+ // FSD architecture generation command
85
104
  program
86
- .command('fsd')
105
+ .command('arch')
87
106
  .description('Generate FSD (Feature-Sliced Design) structure')
88
107
  .option('-f, --feature <name>', 'create feature in features/')
89
108
  .option('-e, --entity <name>', 'create entity in entities/')
@@ -94,6 +113,10 @@ program
94
113
  .action(async (options) => {
95
114
  const { feature, entity, widget, page, segments, index } = options;
96
115
 
116
+ // Detect project type
117
+ const isTS = isTypeScriptProject();
118
+ const fileExtension = isTS ? 'ts' : 'js';
119
+
97
120
  // Determine layer and name based on which flag was used
98
121
  let layer, name, layerType;
99
122
 
@@ -125,6 +148,7 @@ program
125
148
  }
126
149
 
127
150
  console.log(chalk.blue.bold(`\n🏗️ Generating FSD structure...\n`));
151
+ console.log(chalk.cyan(`Project type: ${isTS ? 'TypeScript' : 'JavaScript'}`));
128
152
  console.log(chalk.cyan(`Layer: ${layer}`));
129
153
  console.log(chalk.cyan(`${layerType}: ${name}`));
130
154
  console.log(chalk.cyan(`Segments: ${segments.join(', ')}`));
@@ -150,7 +174,7 @@ program
150
174
 
151
175
  // Create index file in segment if requested
152
176
  if (index) {
153
- const segmentIndexPath = path.join(segmentDir, 'index.js');
177
+ const segmentIndexPath = path.join(segmentDir, `index.${fileExtension}`);
154
178
  fs.writeFileSync(segmentIndexPath, '');
155
179
  } else {
156
180
  // Create a .gitkeep file to ensure empty directories are tracked
@@ -169,7 +193,7 @@ program
169
193
  if (index) {
170
194
  const indexSpinner = ora('Creating root index file...').start();
171
195
  try {
172
- const indexPath = path.join(baseDir, 'index.js');
196
+ const indexPath = path.join(baseDir, `index.${fileExtension}`);
173
197
 
174
198
  // If index file exists, read existing exports and merge with new ones
175
199
  let existingExports = new Set();
@@ -216,11 +240,11 @@ program
216
240
  const prefix = index ? '├──' : (isLast ? '└──' : '├──');
217
241
  console.log(chalk.white(` ${prefix} ${segment}/`));
218
242
  if (index) {
219
- console.log(chalk.white(` │ └── index.js`));
243
+ console.log(chalk.white(` │ └── index.${fileExtension}`));
220
244
  }
221
245
  });
222
246
  if (index) {
223
- console.log(chalk.white(` └── index.js`));
247
+ console.log(chalk.white(` └── index.${fileExtension}`));
224
248
  }
225
249
  console.log();
226
250
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@t1ep1l0t/create-fsd",
3
- "version": "2.0.1",
4
- "description": "CLI tool to create React projects with FSD architecture",
3
+ "version": "3.0.0",
4
+ "description": "CLI for Feature-Sliced Design architecture. Create production-ready projects from framework templates and generate FSD structures with single commands.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "create-fsd": "./bin/cli.js"
@@ -12,7 +12,7 @@
12
12
  "README.md"
13
13
  ],
14
14
  "scripts": {
15
- "test": "node bin/cli.js test-project --template react"
15
+ "test": "node bin/cli.js app test-project --template react"
16
16
  },
17
17
  "keywords": [
18
18
  "cli",
@@ -20,7 +20,11 @@
20
20
  "feature-sliced-design",
21
21
  "react",
22
22
  "vite",
23
- "template"
23
+ "template",
24
+ "typescript",
25
+ "javascript",
26
+ "scaffold",
27
+ "generator"
24
28
  ],
25
29
  "author": "t1ep1l0t",
26
30
  "license": "MIT",
@@ -0,0 +1,12 @@
1
+ root = true
2
+
3
+ [*]
4
+ charset = utf-8
5
+ end_of_line = lf
6
+ indent_size = 2
7
+ indent_style = space
8
+ insert_final_newline = true
9
+ trim_trailing_whitespace = true
10
+
11
+ [*.md]
12
+ trim_trailing_whitespace = false
@@ -0,0 +1 @@
1
+ VITE_API_URL=https://api.example.com
@@ -0,0 +1,7 @@
1
+ node_modules
2
+ dist
3
+ build
4
+ .vite
5
+ coverage
6
+ *.min.js
7
+ package-lock.json
@@ -0,0 +1,10 @@
1
+ {
2
+ "semi": false,
3
+ "singleQuote": true,
4
+ "tabWidth": 2,
5
+ "trailingComma": "es5",
6
+ "printWidth": 80,
7
+ "arrowParens": "always",
8
+ "endOfLine": "lf",
9
+ "plugins": ["prettier-plugin-tailwindcss"]
10
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "recommendations": [
3
+ "dbaeumer.vscode-eslint",
4
+ "esbenp.prettier-vscode",
5
+ "bradlc.vscode-tailwindcss"
6
+ ]
7
+ }
@@ -0,0 +1,70 @@
1
+ # FSD React Application
2
+
3
+ A modern React application built with Feature-Sliced Design architecture.
4
+
5
+ ## Technologies
6
+
7
+ - **React 18** - UI library
8
+ - **Vite** - Build tool and dev server
9
+ - **React Router DOM** - Client-side routing
10
+ - **Zustand** - State management
11
+ - **Axios** - HTTP client
12
+ - **React Query** - Server state management
13
+ - **i18next** - Internationalization
14
+ - **TailwindCSS v4** - Styling
15
+
16
+ ## Project Structure
17
+
18
+ ```
19
+ src/
20
+ ├── app/ # Application initialization
21
+ │ ├── providers/ # Context providers (router, i18n)
22
+ │ └── styles/ # Global styles
23
+ ├── pages/ # Page components
24
+ ├── widgets/ # Composite UI components
25
+ ├── features/ # Business features
26
+ ├── entities/ # Business entities
27
+ └── shared/ # Shared code
28
+ ├── api/ # API client configuration
29
+ ├── store/ # Global stores
30
+ └── ui/ # Reusable UI components
31
+ ```
32
+
33
+ ## Getting Started
34
+
35
+ ### Install dependencies
36
+
37
+ ```bash
38
+ npm install
39
+ ```
40
+
41
+ ### Development
42
+
43
+ ```bash
44
+ npm run dev
45
+ ```
46
+
47
+ ### Build for production
48
+
49
+ ```bash
50
+ npm run build
51
+ ```
52
+
53
+ ### Preview production build
54
+
55
+ ```bash
56
+ npm run preview
57
+ ```
58
+
59
+ ## Configuration
60
+
61
+ - **API URL**: Set `VITE_API_URL` in `.env` file
62
+ - **Languages**: Configure in `src/app/providers/i18n/index.js`
63
+ - **Routes**: Define in `src/app/providers/router/index.jsx`
64
+ - **Tailwind**: Customize in `src/app/styles/index.css`
65
+
66
+ ## Learn More
67
+
68
+ - [Feature-Sliced Design](https://feature-sliced.design/)
69
+ - [React Documentation](https://react.dev/)
70
+ - [Vite Guide](https://vitejs.dev/guide/)