Skip to content

Latest commit

ย 

History

History
367 lines (308 loc) ยท 11.5 KB

File metadata and controls

367 lines (308 loc) ยท 11.5 KB

๐ŸŽฏ ๅœจ็บฟ็ผ–่ฏ‘็ณป็ปŸ - ้กน็›ฎๆฆ‚่งˆ

๐Ÿ“‹ ้กน็›ฎๅทฒๅฎŒๆˆ

ๆญๅ–œ๏ผๆ‚จ็š„ๅœจ็บฟ็ผ–่ฏ‘็ณป็ปŸ้กน็›ฎๆžถๆž„ๅทฒ็ปๆญๅปบๅฎŒๆˆใ€‚ไปฅไธ‹ๆ˜ฏๅฎŒๆ•ด็š„้กน็›ฎ็ป“ๆž„ๅ’Œ่ฏดๆ˜Žใ€‚

๐Ÿ“ ๅฎŒๆ•ด้กน็›ฎ็ป“ๆž„

Online-Compilation-System/
โ”œโ”€โ”€ ๐Ÿ“„ README.md                    # ้กน็›ฎไธปๆ–‡ๆกฃ
โ”œโ”€โ”€ ๐Ÿ“„ LICENSE                      # MIT่ฎธๅฏ่ฏ
โ”œโ”€โ”€ ๐Ÿ“„ .gitignore                   # Gitๅฟฝ็•ฅๆ–‡ไปถ
โ”œโ”€โ”€ ๐Ÿ“„ .env.example                 # ็Žฏๅขƒๅ˜้‡ๆจกๆฟ
โ”œโ”€โ”€ ๐Ÿ“„ CONTRIBUTING.md              # ่ดก็ŒฎๆŒ‡ๅ—
โ”œโ”€โ”€ ๐Ÿ“„ docker-compose.yml           # ๅผ€ๅ‘็ŽฏๅขƒDocker้…็ฝฎ
โ”œโ”€โ”€ ๐Ÿ“„ docker-compose.prod.yml      # ็”Ÿไบง็ŽฏๅขƒDocker้…็ฝฎ
โ”œโ”€โ”€ ๐Ÿ”ง start.sh                     # Linux/MacๅฏๅŠจ่„šๆœฌ
โ”œโ”€โ”€ ๐Ÿ”ง start.bat                    # WindowsๅฏๅŠจ่„šๆœฌ
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ frontend/                    # Reactๅ‰็ซฏ้กน็›ฎ
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ package.json
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ tsconfig.json
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ vite.config.ts
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ tailwind.config.js
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ Dockerfile
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ nginx.conf
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ index.html
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ src/
โ”‚       โ”œโ”€โ”€ ๐Ÿ“„ main.tsx            # ๅบ”็”จๅ…ฅๅฃ
โ”‚       โ”œโ”€โ”€ ๐Ÿ“„ App.tsx             # ไธปๅบ”็”จ็ป„ไปถ
โ”‚       โ”œโ”€โ”€ ๐Ÿ“„ index.css           # ๅ…จๅฑ€ๆ ทๅผ
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ components/         # UI็ป„ไปถ
โ”‚       โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ Layout/
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ index.tsx
โ”‚       โ”‚   โ”‚   โ””โ”€โ”€ Layout.css
โ”‚       โ”‚   โ”œโ”€โ”€ Header.tsx
โ”‚       โ”‚   โ””โ”€โ”€ CodeEditor.tsx
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ pages/              # ้กต้ข็ป„ไปถ
โ”‚       โ”‚   โ”œโ”€โ”€ HomePage.tsx       # ้ฆ–้กต
โ”‚       โ”‚   โ”œโ”€โ”€ EditorPage.tsx     # ็ผ–่พ‘ๅ™จ้กต้ข
โ”‚       โ”‚   โ”œโ”€โ”€ LoginPage.tsx      # ็™ปๅฝ•้กต้ข
โ”‚       โ”‚   โ”œโ”€โ”€ RegisterPage.tsx   # ๆณจๅ†Œ้กต้ข
โ”‚       โ”‚   โ””โ”€โ”€ HistoryPage.tsx    # ๅކๅฒ่ฎฐๅฝ•้กต้ข
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ hooks/              # ่‡ชๅฎšไน‰Hooks
โ”‚       โ”‚   โ””โ”€โ”€ useExecuteCode.ts
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ store/              # ็Šถๆ€็ฎก็†
โ”‚       โ”‚   โ””โ”€โ”€ authStore.ts
โ”‚       โ””โ”€โ”€ ๐Ÿ“‚ services/           # APIๆœๅŠก
โ”‚           โ””โ”€โ”€ api.ts
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ backend/                     # Node.jsๅŽ็ซฏ้กน็›ฎ
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ package.json
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ tsconfig.json
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ Dockerfile
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ prisma/
โ”‚   โ”‚   โ””โ”€โ”€ schema.prisma          # ๆ•ฐๆฎๅบ“Schema
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ src/
โ”‚       โ”œโ”€โ”€ ๐Ÿ“„ server.ts           # ๆœๅŠกๅ™จๅ…ฅๅฃ
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ config/
โ”‚       โ”‚   โ””โ”€โ”€ index.ts           # ้…็ฝฎ็ฎก็†
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ controllers/        # ๆŽงๅˆถๅ™จ
โ”‚       โ”‚   โ”œโ”€โ”€ auth.controller.ts
โ”‚       โ”‚   โ”œโ”€โ”€ execute.controller.ts
โ”‚       โ”‚   โ””โ”€โ”€ submission.controller.ts
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ routes/             # ่ทฏ็”ฑ
โ”‚       โ”‚   โ”œโ”€โ”€ auth.routes.ts
โ”‚       โ”‚   โ”œโ”€โ”€ execute.routes.ts
โ”‚       โ”‚   โ””โ”€โ”€ submission.routes.ts
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ middleware/         # ไธญ้—ดไปถ
โ”‚       โ”‚   โ”œโ”€โ”€ auth.ts
โ”‚       โ”‚   โ”œโ”€โ”€ errorHandler.ts
โ”‚       โ”‚   โ”œโ”€โ”€ rateLimiter.ts
โ”‚       โ”‚   โ””โ”€โ”€ validator.ts
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ services/           # ไธšๅŠก้€ป่พ‘
โ”‚       โ”‚   โ””โ”€โ”€ docker.service.ts
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ workers/            # ไปปๅŠกๅค„็†ๅ™จ
โ”‚       โ”‚   โ””โ”€โ”€ execute.worker.ts
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ queues/             # ไปปๅŠก้˜Ÿๅˆ—
โ”‚       โ”‚   โ””โ”€โ”€ execute.queue.ts
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ schemas/            # ้ชŒ่ฏSchema
โ”‚       โ”‚   โ”œโ”€โ”€ auth.schema.ts
โ”‚       โ”‚   โ””โ”€โ”€ execute.schema.ts
โ”‚       โ””โ”€โ”€ ๐Ÿ“‚ utils/              # ๅทฅๅ…ทๅ‡ฝๆ•ฐ
โ”‚           โ””โ”€โ”€ logger.ts
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ nginx/                       # Nginx้…็ฝฎ
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ Dockerfile
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ nginx.conf
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ conf.d/
โ”‚       โ””โ”€โ”€ default.conf
โ”‚
โ””โ”€โ”€ ๐Ÿ“‚ docs/                        # ๆ–‡ๆกฃ
    โ”œโ”€โ”€ ๐Ÿ“„ API.md                  # APIๆ–‡ๆกฃ
    โ””โ”€โ”€ ๐Ÿ“„ DEVELOPMENT.md          # ๅผ€ๅ‘ๆ–‡ๆกฃ

๐ŸŽจ ๆŠ€ๆœฏๆ ˆๆ€ป่งˆ

ๅ‰็ซฏ

  • โš›๏ธ React 18 - UIๆก†ๆžถ
  • ๐Ÿ“˜ TypeScript - ็ฑปๅž‹ๅฎ‰ๅ…จ
  • โšก Vite - ๆž„ๅปบๅทฅๅ…ท
  • ๐ŸŽจ Ant Design - UI็ป„ไปถๅบ“
  • ๐ŸŽจ Tailwind CSS - ๆ ทๅผๆก†ๆžถ
  • ๐Ÿ“ Monaco Editor - ไปฃ็ ็ผ–่พ‘ๅ™จ
  • ๐Ÿ”„ React Query - ๆ•ฐๆฎ่Žทๅ–
  • ๐Ÿ—ƒ๏ธ Zustand - ็Šถๆ€็ฎก็†
  • ๐ŸŒ Axios - HTTPๅฎขๆˆท็ซฏ

ๅŽ็ซฏ

  • ๐ŸŸข Node.js 18 - ่ฟ่กŒ็Žฏๅขƒ
  • ๐Ÿ“˜ TypeScript - ็ฑปๅž‹ๅฎ‰ๅ…จ
  • ๐Ÿš‚ Express - Webๆก†ๆžถ
  • ๐Ÿ” JWT - ่บซไปฝ่ฎค่ฏ
  • โœ… Joi - ๆ•ฐๆฎ้ชŒ่ฏ
  • ๐ŸŽฏ Prisma - ORM
  • ๐Ÿ˜ PostgreSQL - ๆ•ฐๆฎๅบ“
  • ๐Ÿ”ด Redis - ็ผ“ๅญ˜/้˜Ÿๅˆ—
  • ๐Ÿ‚ Bull - ไปปๅŠก้˜Ÿๅˆ—
  • ๐Ÿณ Dockerode - DockerๆŽงๅˆถ

ๅŸบ็ก€่ฎพๆ–ฝ

  • ๐Ÿณ Docker - ๅฎนๅ™จๅŒ–
  • ๐Ÿ™ Docker Compose - ็ผ–ๆŽ’
  • ๐ŸŒ Nginx - ๅๅ‘ไปฃ็†
  • ๐Ÿ“Š Winston - ๆ—ฅๅฟ—

๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹

ๆ–นๅผ1๏ผšไฝฟ็”จๅฏๅŠจ่„šๆœฌ๏ผˆๆŽจ่๏ผ‰

Linux/Mac:

chmod +x start.sh
./start.sh

Windows:

start.bat

ๆ–นๅผ2๏ผšๆ‰‹ๅŠจๅฏๅŠจ

# 1. ๅคๅˆถ็Žฏๅขƒๅ˜้‡ๆ–‡ไปถ
cp .env.example .env

# 2. ๅฏๅŠจๆ‰€ๆœ‰ๆœๅŠก
docker-compose up -d

# 3. ๅˆๅง‹ๅŒ–ๆ•ฐๆฎๅบ“
cd backend
npm install
npx prisma migrate dev
npx prisma generate

# 4. ่ฎฟ้—ฎๅบ”็”จ
# ๅ‰็ซฏ: http://localhost:3000
# ๅŽ็ซฏ: http://localhost:8000

๐Ÿ“Š ็ณป็ปŸๆžถๆž„

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                      ็”จๆˆท                           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ”‚ HTTPS
                     โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                   Nginx (ๅๅ‘ไปฃ็†)                   โ”‚
โ”‚              ่ดŸ่ฝฝๅ‡่กก + ้™ๆ€่ต„ๆบๆœๅŠก                 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
             โ”‚                โ”‚
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚   Frontend    โ”‚    โ”‚    Backend      โ”‚
    โ”‚   (React)     โ”‚    โ”‚   (Express)     โ”‚
    โ”‚   Port: 80    โ”‚    โ”‚   Port: 8000    โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚     โ”‚
                    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ” โ”Œโ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                    โ”‚PostgreSQL โ”‚ โ”‚   Redis    โ”‚
                    โ”‚   ๆ•ฐๆฎๅบ“  โ”‚ โ”‚  ไปปๅŠก้˜Ÿๅˆ—   โ”‚
                    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                    โ”‚
                              โ”Œโ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”
                              โ”‚   Worker   โ”‚
                              โ”‚ ไปฃ็ ๆ‰ง่กŒๅ™จ  โ”‚
                              โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                    โ”‚
                    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                    โ”‚               โ”‚                โ”‚
            โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”
            โ”‚  Python   โ”‚   โ”‚   Java    โ”‚   โ”‚   C++     โ”‚
            โ”‚  ๅฎนๅ™จ     โ”‚   โ”‚   ๅฎนๅ™จ    โ”‚   โ”‚   ๅฎนๅ™จ     โ”‚
            โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ”‘ ๆ ธๅฟƒๅŠŸ่ƒฝ

โœ… ๅทฒๅฎž็Žฐ

  1. โœ… ็”จๆˆท่ฎค่ฏ็ณป็ปŸ๏ผˆๆณจๅ†Œ/็™ปๅฝ•๏ผ‰
  2. โœ… ๅคš่ฏญ่จ€ไปฃ็ ็ผ–่พ‘ๅ™จ
  3. โœ… ไปฃ็ ๆ‰ง่กŒๅผ•ๆ“Ž
  4. โœ… Dockerๅฎนๅ™จ้š”็ฆป
  5. โœ… ๅผ‚ๆญฅไปปๅŠก้˜Ÿๅˆ—
  6. โœ… ๆ‰ง่กŒ็ป“ๆžœๅฑ•็คบ
  7. โœ… ๆไบคๅކๅฒ็ฎก็†
  8. โœ… ้€Ÿ็އ้™ๅˆถไฟๆŠค
  9. โœ… ้”™่ฏฏๅค„็†ๆœบๅˆถ
  10. โœ… ๆ—ฅๅฟ—็ณป็ปŸ

๐Ÿšง ๅพ…ๆ‰ฉๅฑ•

  • ๅฎžๆ—ถๅไฝœ็ผ–่พ‘
  • ไปฃ็ ๅˆ†ไบซๅŠŸ่ƒฝ
  • ้ข˜ๅบ“็ณป็ปŸ
  • AIไปฃ็ ๅŠฉๆ‰‹
  • ไปฃ็ ๅฎกๆŸฅ
  • ๆ€ง่ƒฝๅˆ†ๆž
  • ็งปๅŠจ็ซฏ้€‚้…
  • ๅคšไธป้ข˜ๅˆ‡ๆข

๐Ÿ“ ไธ‹ไธ€ๆญฅๆ“ไฝœ

1. ๅฎ‰่ฃ…ไพ่ต–

ๅ‰็ซฏ:

cd frontend
npm install

ๅŽ็ซฏ:

cd backend
npm install
npx prisma generate

2. ้…็ฝฎ็Žฏๅขƒๅ˜้‡

็ผ–่พ‘ .env ๆ–‡ไปถ๏ผŒ้…็ฝฎๅฟ…่ฆ็š„็Žฏๅขƒๅ˜้‡๏ผš

  • ๆ•ฐๆฎๅบ“่ฟžๆŽฅ
  • Redis่ฟžๆŽฅ
  • JWTๅฏ†้’ฅ
  • Docker้…็ฝฎ

3. ๅฏๅŠจๅผ€ๅ‘็Žฏๅขƒ

# ๅฏๅŠจๆ‰€ๆœ‰ๆœๅŠก
docker-compose up -d

# ๆˆ–่€…ๅˆ†ๅˆซๅฏๅŠจ
cd frontend && npm run dev    # ๅ‰็ซฏๅผ€ๅ‘ๆœๅŠกๅ™จ
cd backend && npm run dev     # ๅŽ็ซฏๅผ€ๅ‘ๆœๅŠกๅ™จ

4. ๆ•ฐๆฎๅบ“่ฟ็งป

cd backend
npx prisma migrate dev --name init
npx prisma generate

5. ๆต‹่ฏ•็ณป็ปŸ

่ฎฟ้—ฎ http://localhost:3000 ๆต‹่ฏ•็ณป็ปŸๅŠŸ่ƒฝ

๐Ÿ“š ๆ–‡ๆกฃๆธ…ๅ•

  • โœ… README.md - ้กน็›ฎไป‹็ป
  • โœ… docs/API.md - APIๆŽฅๅฃๆ–‡ๆกฃ
  • โœ… docs/DEVELOPMENT.md - ๅผ€ๅ‘ๆŒ‡ๅ—
  • โœ… CONTRIBUTING.md - ่ดก็ŒฎๆŒ‡ๅ—
  • โœ… .env.example - ็Žฏๅขƒๅ˜้‡็คบไพ‹

๐Ÿ› ๏ธ ๅผ€ๅ‘ๅทฅๅ…ทๆŽจ่

  • VS Code - ไปฃ็ ็ผ–่พ‘ๅ™จ
  • Postman - APIๆต‹่ฏ•
  • Docker Desktop - ๅฎนๅ™จ็ฎก็†
  • Prisma Studio - ๆ•ฐๆฎๅบ“็ฎก็†
  • Redis Commander - Redis็ฎก็†

๐Ÿ”’ ๅฎ‰ๅ…จๆฃ€ๆŸฅๆธ…ๅ•

  • โœ… JWTไปค็‰Œ่ฎค่ฏ
  • โœ… ๅฏ†็ ๅŠ ๅฏ†ๅญ˜ๅ‚จ
  • โœ… ่พ“ๅ…ฅๆ•ฐๆฎ้ชŒ่ฏ
  • โœ… SQLๆณจๅ…ฅ้˜ฒๆŠค
  • โœ… XSS้˜ฒๆŠค
  • โœ… CSRF้˜ฒๆŠค
  • โœ… ้€Ÿ็އ้™ๅˆถ
  • โœ… Dockerๅฎนๅ™จ้š”็ฆป
  • โœ… ่ต„ๆบไฝฟ็”จ้™ๅˆถ
  • โœ… ็ฝ‘็ปœ้š”็ฆป

๐Ÿ“Š ๆ€ง่ƒฝๆŒ‡ๆ ‡

็›ฎๆ ‡ๆ€ง่ƒฝ

  • APIๅ“ๅบ”ๆ—ถ้—ด: < 100ms
  • ไปฃ็ ๆ‰ง่กŒๅฏๅŠจ: < 2s
  • ๅนถๅ‘ๆ”ฏๆŒ: 100+ ๅŒๆ—ถๆ‰ง่กŒ
  • ๆ•ฐๆฎๅบ“ๆŸฅ่ฏข: < 50ms
  • ้กต้ขๅŠ ่ฝฝ: < 1s

๐ŸŽ“ ๅญฆไน ่ต„ๆบ

๐Ÿ’ก ๆœ€ไฝณๅฎž่ทต

  1. ไปฃ็ ่ง„่Œƒ: ไฝฟ็”จESLintๅ’ŒPrettier
  2. ็‰ˆๆœฌๆŽงๅˆถ: ไฝฟ็”จGit๏ผŒ้ตๅพชGit Flow
  3. ๆต‹่ฏ•: ็ผ–ๅ†™ๅ•ๅ…ƒๆต‹่ฏ•ๅ’Œ้›†ๆˆๆต‹่ฏ•
  4. ๆ–‡ๆกฃ: ไฟๆŒๆ–‡ๆกฃๆ›ดๆ–ฐ
  5. ๅฎ‰ๅ…จ: ๅฎšๆœŸๆ›ดๆ–ฐไพ่ต–๏ผŒไฟฎๅคๆผๆดž
  6. ๆ€ง่ƒฝ: ็›‘ๆŽง็ณป็ปŸๆ€ง่ƒฝ๏ผŒไผ˜ๅŒ–็“ถ้ขˆ

๐Ÿ› ๅธธ่ง้—ฎ้ข˜

Docker็›ธๅ…ณ

  1. ็ซฏๅฃๅ ็”จ: ไฟฎๆ”นdocker-compose.ymlไธญ็š„็ซฏๅฃๆ˜ ๅฐ„
  2. ๆƒ้™้—ฎ้ข˜: ๅฐ†็”จๆˆทๆทปๅŠ ๅˆฐdocker็ป„
  3. ้•œๅƒๆ‹‰ๅ–ๅคฑ่ดฅ: ้…็ฝฎ้•œๅƒๅŠ ้€Ÿๅ™จ

ๅผ€ๅ‘็›ธๅ…ณ

  1. ไพ่ต–ๅฎ‰่ฃ…ๅคฑ่ดฅ: ๆธ…้™ค็ผ“ๅญ˜๏ผŒ้‡ๆ–ฐๅฎ‰่ฃ…
  2. ็ƒญๆ›ดๆ–ฐไธ็”Ÿๆ•ˆ: ๆฃ€ๆŸฅVite้…็ฝฎ
  3. ็ฑปๅž‹้”™่ฏฏ: ่ฟ่กŒnpx prisma generate

๐ŸŽ‰ ๅฎŒๆˆๆƒ…ๅ†ต

โœ… ้กน็›ฎ็ป“ๆž„: 100% โœ… ๅ‰็ซฏไปฃ็ : 100% โœ… ๅŽ็ซฏไปฃ็ : 100% โœ… ๆ•ฐๆฎๅบ“่ฎพ่ฎก: 100% โœ… Docker้…็ฝฎ: 100% โœ… ๆ–‡ๆกฃ็ผ–ๅ†™: 100%

๐Ÿ“ž ๆ”ฏๆŒ


๐ŸŽŠ ๆญๅ–œ๏ผ

ๆ‚จ็š„ๅœจ็บฟ็ผ–่ฏ‘็ณป็ปŸ้กน็›ฎๆžถๆž„ๅทฒๅฎŒๅ…จๆญๅปบๅฎŒๆˆ๏ผ็Žฐๅœจๆ‚จๅฏไปฅ๏ผš

  1. โญ ็ป™้กน็›ฎๅŠ Star
  2. ๐Ÿ”ง ๅผ€ๅง‹ๅผ€ๅ‘ๆ–ฐๅŠŸ่ƒฝ
  3. ๐Ÿ› ไฟฎๅคๅ‘็Žฐ็š„Bug
  4. ๐Ÿ“ ๅฎŒๅ–„ๆ–‡ๆกฃ
  5. ๐Ÿš€ ้ƒจ็ฝฒๅˆฐ็”Ÿไบง็Žฏๅขƒ

็ฅๆ‚จๅผ€ๅ‘ๆ„‰ๅฟซ๏ผ ๐ŸŽˆ