diff --git a/README.md b/README.md
new file mode 100644
index 0000000..b119158
--- /dev/null
+++ b/README.md
@@ -0,0 +1,463 @@
+# π Π¨Π°Π±Π»ΠΎΠ½ ΠΏΡΠΎΠ΅ΠΊΡΠ° ASP NET CORE MVC, Frontend - Π½Π° TypeScript
+
+## π ΠΡΠ°ΠΏΡ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΌΠΈ π
+
+---
+1. β
ΠΠΌΠΏΠΎΡΡ `tsconfig.json` β
+---
+
+
+Π Π°ΡΠΊΡΡΡΡ ΠΊΠΎΠ΄ tsconfig.json
+
+```json
+{
+ "compilerOptions": {
+ "target": "es2016", // Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΡΠΎΠ²Π΅Π½Ρ JavaScript, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ TypeScript (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ES2016).
+ "module": "es6", // ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ (ES6 ΠΌΠΎΠ΄ΡΠ»ΠΈ).
+ "moduleResolution": "node", // Π‘ΠΏΠΎΡΠΎΠ± ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π² Node.js.
+ "jsx": "preserve", // ΠΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ JSX. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ JSX Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
+ "declaration": false, // Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π»ΠΈ ΡΠ°ΠΉΠ»Ρ ΡΠΈΠΏΠΎΠ² (.d.ts). ΠΠ΄Π΅ΡΡ ΡΡΠΎ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΎ.
+ "removeComments": true, // Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ΄Π°Π»Π΅Π½Ρ ΠΈΠ· ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
+ "noImplicitAny": false, // ΠΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΎ Π½Π΅ΡΠ²Π½ΡΡ
ΡΠΈΠΏΠ°Ρ
`any` Π² ΠΊΠΎΠ΄Π΅.
+ "noEmitOnError": true, // Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π°, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ.
+ "sourceMap": true, // ΠΠ΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΊΠ°ΡΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ
ΠΊΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ.
+ "esModuleInterop": true, // ΠΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ ES ΠΏΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠ΅ CommonJS ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ.
+ "experimentalDecorators": true, // ΠΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ
Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² Π² TypeScript.
+ "emitDecoratorMetadata": true, // ΠΠΊΠ»ΡΡΠ°Π΅Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΠ°ΠΊΠΈΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ
ΠΊΠ°ΠΊ TypeORM ΠΈΠ»ΠΈ Angular.
+ "outDir": "ScriptsAndCss/JsScripts", // Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π΄Π»Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ².
+ "lib": [ "es2016", "dom" ] // Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ (ES2016 ΠΈ DOM).
+ },
+ "exclude": [
+ "node_modules" // ΠΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΠ°ΠΏΠΊΡ node_modules ΠΈΠ· ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
+ ]
+}
+```
+
+
+
+---
+2. β
ΠΠΌΠΏΠΎΡΡ `webpack.config.js` β
+---
+
+
+Π Π°ΡΠΊΡΡΡΡ ΠΊΠΎΠ΄ webpack.config.js
+
+```js
+const path = require('path');
+const MiniCssExtractPlugin = require('mini-css-extract-plugin');
+const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
+const TerserPlugin = require('terser-webpack-plugin'); // ΠΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ TerserPlugin
+
+module.exports = {
+ entry: {
+ app: './ScriptsAndCss/TypeScripts/main_api.ts', // Π’ΠΎΡΠΊΠ° Π²Ρ
ΠΎΠ΄Π° Π΄Π»Ρ JavaScript
+ styles: './ScriptsAndCss/CssFiles/styles.css' // Π’ΠΎΡΠΊΠ° Π²Ρ
ΠΎΠ΄Π° Π΄Π»Ρ CSS (ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±ΠΎΠΉ CSS-ΡΠ°ΠΉΠ»)
+ },
+ output: {
+ path: path.resolve(__dirname, 'wwwroot/js'),
+ filename: '[name].min.js' // ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ [name] Π΄Π»Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°
+ },
+ resolve: {
+ extensions: ['.ts', '.js', '.css'] // ΠΠΎΠ±Π°Π²ΠΈΠ»ΠΈ .css
+ },
+ module: {
+ rules: [
+ {
+ test: /\.ts$/,
+ use: 'ts-loader',
+ exclude: /node_modules/
+ },
+ {
+ test: /\.css$/,
+ use: [
+ MiniCssExtractPlugin.loader, // ΠΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ CSS Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ
+ 'css-loader' // ΠΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ @import ΠΈ url()
+ ]
+ }
+ ]
+ },
+ plugins: [
+ new MiniCssExtractPlugin({
+ filename: '../css/app.min.css' // ΠΡΠ΄Π° Webpack Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ CSS-ΡΠ°ΠΉΠ»
+ })
+ ],
+ mode: 'development',
+ watch: true,
+};
+```
+
+
+
+
+> Π ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ Π² Production ΡΠ΅Π»ΠΈΠ·Π° Π½ΡΠΆΠ½ΠΎ ΡΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ `mode: 'development'` Π½Π° `mode: 'production'` Π² ΡΠ°ΠΉΠ»Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
+
+
+Π Π°ΡΠΊΡΡΡΡ ΠΊΠΎΠ΄ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ webpack.config.js
+
+```js
+mode: 'production', // ΠΠ·ΠΌΠ΅Π½Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ Π½Π° production Π΄Π»Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ
+optimization: {
+ minimize: true, // ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΡ
+ minimizer: [
+ new TerserPlugin(), // ΠΠ»Π°Π³ΠΈΠ½ Π΄Π»Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ JS
+ new CssMinimizerPlugin() // ΠΠ»Π°Π³ΠΈΠ½ Π΄Π»Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ CSS
+ ]
+},
+```
+
+
+
+---
+3. β
ΠΠΌΠΏΠΎΡΡ `package.json` - ΡΡΠ΄ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΎΠΏΡΠΈΠΎΠ½Π°Π»Π΅Π½ ΠΏΠΎΠ΄ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ β
+---
+
+
+Π Π°ΡΠΊΡΡΡΡ ΠΊΠΎΠ΄ package.json
+
+```json
+{
+ "version": "1.0.0",
+ "name": "asp.net",
+ "private": true,
+ "devDependencies": {
+ "css-minimizer-webpack-plugin": "7.0.0",
+ "terser-webpack-plugin": "5.3.12",
+ "cytoscape": "^3.31.0",
+ "cytoscape-cose-bilkent": "4.1.0",
+ "grunt": "1.4.1",
+ "style-loader": "^4.0.0",
+ "css-loader": "^7.1.2",
+ "mini-css-extract-plugin": "^2.9.2",
+ "grunt-webpack": "^7.0.0",
+ "webpack-cli": "^6.0.1",
+ "ts-loader": "^9.5.2",
+ "browser-sync": "^3.0.3",
+ "grunt-browser-sync": "^2.2.0",
+ "grunt-contrib-clean": "2.0.0",
+ "grunt-contrib-concat": "2.0.0",
+ "grunt-contrib-cssmin": "5.0.0",
+ "grunt-contrib-uglify": "5.0.1",
+ "grunt-contrib-watch": "1.1.0",
+ "grunt-ts": "6.0.0-beta.22"
+ },
+ "dependencies": {
+ "cytoscape": "^3.31.0"
+ },
+ "comments": {
+ "version": "Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ΅ΠΊΡΡΡΡ Π²Π΅ΡΡΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.",
+ "name": "ΠΠΌΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.",
+ "private": "Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌ ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π² npm.",
+ "devDependencies": {
+ "css-minimizer-webpack-plugin": "ΠΠ»Π°Π³ΠΈΠ½ Π΄Π»Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ CSS ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ Webpack.",
+ "terser-webpack-plugin": "ΠΠ»Π°Π³ΠΈΠ½ Π΄Π»Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ JavaScript Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Terser.",
+ "cytoscape": "ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π³ΡΠ°ΡΠ°ΠΌΠΈ ΠΈ ΡΠ΅ΡΡΠΌΠΈ.",
+ "cytoscape-cose-bilkent": "ΠΠ»Π°Π³ΠΈΠ½ Π΄Π»Ρ Cytoscape, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ·Π»ΠΎΠ².",
+ "grunt": "Π‘ΠΈΡΡΠ΅ΠΌΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π·Π°Π΄Π°Ρ Π΄Π»Ρ Node.js, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ, ΠΌΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.",
+ "style-loader": "ΠΠΎΠ°Π΄Π΅Ρ Π΄Π»Ρ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΈΠΈ CSS Π² DOM ΡΠ΅ΡΠ΅Π· ΡΠ΅Π³ΠΈ `