diff --git a/Dockerfile b/Dockerfile
index b646295..abbe549 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -7,6 +7,8 @@
 # 复制 JAR 文件到容器
 COPY target/*.jar team12.jar
 
+COPY nginx.conf /etc/nginx/conf.d/g12b.conf
+
 # 暴露端口（与 application.yml/server.port 一致）
 EXPOSE 8080
 
diff --git a/nginx.conf b/nginx.conf
index 7057dbd..d1ccc05 100644
--- a/nginx.conf
+++ b/nginx.conf
@@ -1,20 +1,15 @@
-server {
+server{
     listen 80;
-    server_name team12.10813352.xyz;  # 替换为你的域名
-
-    location /api/ {
-        proxy_pass http://localhost:8080;
-        proxy_set_header Host $host;
-        proxy_set_header X-Real-IP $remote_addr;
-        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-
-         # 长连接支持
-         proxy_http_version 1.1;
-         proxy_set_header Connection "";
-
-         # 超时设置
-         proxy_connect_timeout 60s;
-         proxy_send_timeout 60s;
-         proxy_read_timeout 60s;
+    server_name team12.10813352.xyz;
+    
+    # 解决 React Router 单页应用路由问题
+    location / {
+       return 200 "Hello, World!"
     }
+    
+    # API 请求代理到后端
+    location /api/ {
+
+    }
+
 }
\ No newline at end of file
diff --git a/src/main/java/com/pt/constant/Constants.java b/src/main/java/com/pt/constant/Constants.java
index d277ea2..e8cecd3 100644
--- a/src/main/java/com/pt/constant/Constants.java
+++ b/src/main/java/com/pt/constant/Constants.java
@@ -23,4 +23,20 @@
             return value;
         }
     }
+
+    public enum UserLevel {
+        NEWBIE(0),
+        FRESH(1),
+        SENIOR(2),
+        MASTER(3);
+
+        private final int value;
+        UserLevel(int value) {
+            this.value = value;
+        }
+
+        public int getValue() {
+            return value;
+        }
+    }
 }
diff --git a/src/main/java/com/pt/controller/TrackerController.java b/src/main/java/com/pt/controller/TrackerController.java
index 1e0302d..edae09f 100644
--- a/src/main/java/com/pt/controller/TrackerController.java
+++ b/src/main/java/com/pt/controller/TrackerController.java
@@ -10,6 +10,8 @@
 import java.util.Map;
 
 @RestController
+@CrossOrigin(origins = "*")
+@RequestMapping("/api/tracker")
 public class TrackerController {
 
     @Autowired
diff --git a/src/main/java/com/pt/controller/UserController.java b/src/main/java/com/pt/controller/UserController.java
index 7603f9d..577b2a3 100644
--- a/src/main/java/com/pt/controller/UserController.java
+++ b/src/main/java/com/pt/controller/UserController.java
@@ -2,6 +2,7 @@
 
 import com.pt.constant.Constants;
 import com.pt.entity.User;
+import com.pt.service.InvitedCodeService;
 import com.pt.utils.JWTUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
@@ -18,6 +19,7 @@
 
     @Autowired
     private UserService userService;
+    private InvitedCodeService invitedCodeService;
 
     @PostMapping("/register")
     public ResponseEntity<?> registerUser(@RequestBody Map<String, String> request) {
@@ -35,6 +37,17 @@
         } else {
             User newUser = new User();
 
+            if(request.get("invitedCode") != null) {
+                String invitedCode = request.get("invitedCode");
+                if (!invitedCodeService.isCodeValid(invitedCode)) {
+                    return ResponseEntity.badRequest().body("Invalid invited code");
+                }
+                else {
+                    newUser.setLevel(Constants.UserLevel.FRESH.getValue());
+                    newUser.setPoints(300);
+                }
+            }
+
             String uid = String.valueOf(System.currentTimeMillis());
             newUser.setUid(uid);
             newUser.setUsername(username);
diff --git a/src/main/java/com/pt/entity/InvitedCode.java b/src/main/java/com/pt/entity/InvitedCode.java
new file mode 100644
index 0000000..33a1cf8
--- /dev/null
+++ b/src/main/java/com/pt/entity/InvitedCode.java
@@ -0,0 +1,35 @@
+package com.pt.entity;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+
+@Entity
+public class InvitedCode {
+
+    @Id
+    private String code;
+
+    private String owner;
+
+    public InvitedCode() {
+    }
+
+    public InvitedCode(String code, String owner) {
+        this.code = code;
+        this.owner = owner;
+    }
+
+    public String getCode() {
+        return code;
+    }
+    public void setCode(String code) {
+        this.code = code;
+    }
+    public String getOwner() {
+        return owner;
+    }
+    public void setOwner(String owner) {
+        this.owner = owner;
+    }
+
+}
diff --git a/src/main/java/com/pt/repository/InvitedCoedRepository.java b/src/main/java/com/pt/repository/InvitedCoedRepository.java
new file mode 100644
index 0000000..5d7a366
--- /dev/null
+++ b/src/main/java/com/pt/repository/InvitedCoedRepository.java
@@ -0,0 +1,15 @@
+package com.pt.repository;
+
+import com.pt.entity.InvitedCode;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+
+public interface InvitedCoedRepository extends JpaRepository<InvitedCode, String> {
+
+    // Method to find an InvitedCode by its code
+    InvitedCode findByCode(String code);
+
+    // Method to find all InvitedCodes by owner
+    List<InvitedCode> findByOwner(String owner);
+}
diff --git a/src/main/java/com/pt/service/InvitedCodeService.java b/src/main/java/com/pt/service/InvitedCodeService.java
new file mode 100644
index 0000000..cd73452
--- /dev/null
+++ b/src/main/java/com/pt/service/InvitedCodeService.java
@@ -0,0 +1,16 @@
+package com.pt.service;
+
+import com.pt.repository.InvitedCoedRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class InvitedCodeService {
+
+    @Autowired
+    private InvitedCoedRepository invitedCodeRepository;
+
+    public boolean isCodeValid(String code) {
+        return invitedCodeRepository.findByCode(code) != null;
+    }
+}
