ๆญๅ๏ผๆจ็ๅจ็บฟ็ผ่ฏ็ณป็ป้กน็ฎๆถๆๅทฒ็ปๆญๅปบๅฎๆใไปฅไธๆฏๅฎๆด็้กน็ฎ็ปๆๅ่ฏดๆใ
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 - ๆฅๅฟ
Linux/Mac:
chmod +x start.sh
./start.shWindows:
start.bat# 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++ โ
โ ๅฎนๅจ โ โ ๅฎนๅจ โ โ ๅฎนๅจ โ
โโโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโโ
- โ ็จๆท่ฎค่ฏ็ณป็ป๏ผๆณจๅ/็ปๅฝ๏ผ
- โ ๅค่ฏญ่จไปฃ็ ็ผ่พๅจ
- โ ไปฃ็ ๆง่กๅผๆ
- โ Dockerๅฎนๅจ้็ฆป
- โ ๅผๆญฅไปปๅก้ๅ
- โ ๆง่ก็ปๆๅฑ็คบ
- โ ๆไบคๅๅฒ็ฎก็
- โ ้็้ๅถไฟๆค
- โ ้่ฏฏๅค็ๆบๅถ
- โ ๆฅๅฟ็ณป็ป
- ๅฎๆถๅไฝ็ผ่พ
- ไปฃ็ ๅไบซๅ่ฝ
- ้ขๅบ็ณป็ป
- AIไปฃ็ ๅฉๆ
- ไปฃ็ ๅฎกๆฅ
- ๆง่ฝๅๆ
- ็งปๅจ็ซฏ้้
- ๅคไธป้ขๅๆข
ๅ็ซฏ:
cd frontend
npm installๅ็ซฏ:
cd backend
npm install
npx prisma generate็ผ่พ .env ๆไปถ๏ผ้
็ฝฎๅฟ
่ฆ็็ฏๅขๅ้๏ผ
- ๆฐๆฎๅบ่ฟๆฅ
- Redis่ฟๆฅ
- JWTๅฏ้ฅ
- Docker้ ็ฝฎ
# ๅฏๅจๆๆๆๅก
docker-compose up -d
# ๆ่
ๅๅซๅฏๅจ
cd frontend && npm run dev # ๅ็ซฏๅผๅๆๅกๅจ
cd backend && npm run dev # ๅ็ซฏๅผๅๆๅกๅจcd backend
npx prisma migrate dev --name init
npx prisma generate่ฎฟ้ฎ 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
- ไปฃ็ ่ง่: ไฝฟ็จESLintๅPrettier
- ็ๆฌๆงๅถ: ไฝฟ็จGit๏ผ้ตๅพชGit Flow
- ๆต่ฏ: ็ผๅๅๅ ๆต่ฏๅ้ๆๆต่ฏ
- ๆๆกฃ: ไฟๆๆๆกฃๆดๆฐ
- ๅฎๅ จ: ๅฎๆๆดๆฐไพ่ต๏ผไฟฎๅคๆผๆด
- ๆง่ฝ: ็ๆง็ณป็ปๆง่ฝ๏ผไผๅ็ถ้ข
- ็ซฏๅฃๅ ็จ: ไฟฎๆนdocker-compose.ymlไธญ็็ซฏๅฃๆ ๅฐ
- ๆ้้ฎ้ข: ๅฐ็จๆทๆทปๅ ๅฐdocker็ป
- ้ๅๆๅๅคฑ่ดฅ: ้ ็ฝฎ้ๅๅ ้ๅจ
- ไพ่ตๅฎ่ฃ ๅคฑ่ดฅ: ๆธ ้ค็ผๅญ๏ผ้ๆฐๅฎ่ฃ
- ็ญๆดๆฐไธ็ๆ: ๆฃๆฅVite้ ็ฝฎ
- ็ฑปๅ้่ฏฏ: ่ฟ่ก
npx prisma generate
โ ้กน็ฎ็ปๆ: 100% โ ๅ็ซฏไปฃ็ : 100% โ ๅ็ซฏไปฃ็ : 100% โ ๆฐๆฎๅบ่ฎพ่ฎก: 100% โ Docker้ ็ฝฎ: 100% โ ๆๆกฃ็ผๅ: 100%
- ๐ง Email: support@example.com
- ๐ฌ GitHub Issues: ๆไบค้ฎ้ข
- ๐ ๆๆกฃ: ๆฅ็ๆๆกฃ
ๆจ็ๅจ็บฟ็ผ่ฏ็ณป็ป้กน็ฎๆถๆๅทฒๅฎๅ จๆญๅปบๅฎๆ๏ผ็ฐๅจๆจๅฏไปฅ๏ผ
- โญ ็ป้กน็ฎๅ Star
- ๐ง ๅผๅงๅผๅๆฐๅ่ฝ
- ๐ ไฟฎๅคๅ็ฐ็Bug
- ๐ ๅฎๅๆๆกฃ
- ๐ ้จ็ฝฒๅฐ็ไบง็ฏๅข
็ฅๆจๅผๅๆๅฟซ๏ผ ๐