diff --git a/src/handler/history/history.service.ts b/src/handler/history/history.service.ts
index 4dacade8f2bed6a9ce2c2450d5a430a82ee580ce..357001aa523acfe5ac87adfff946095fdd2e337c 100644
--- a/src/handler/history/history.service.ts
+++ b/src/handler/history/history.service.ts
@@ -2,7 +2,7 @@ import { History } from "../../interfaces/History";
 import { HistoryDetail } from "../../interfaces/HistoryDetail";
 import {db} from "../../utils/db.server"
 
-export const getHistory = async (): Promise<History[]> => {
+export async function getHistory () : Promise<History[]> {
     const user_id = 2; //ini buat temp aja karena auth belom dibuat
     return db.history.findMany({
         where:{
@@ -18,7 +18,7 @@ export const getHistory = async (): Promise<History[]> => {
     })
 }
 
-export const getHistoryDetail = async (historyId: number): Promise<HistoryDetail[]> => {
+export async function getHistoryDetail (historyId: number) : Promise<HistoryDetail[]> {
     return db.historyDetail.findMany({
         where:{
             history_id: historyId
diff --git a/src/handler/user/user.router.ts b/src/handler/user/user.router.ts
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f452f3f4cb086f4805561e936653eaf590d0a18d 100644
--- a/src/handler/user/user.router.ts
+++ b/src/handler/user/user.router.ts
@@ -0,0 +1,51 @@
+import { User } from "../../interfaces/User";
+import express from "express";
+import type { Request, Response } from "express";
+
+import * as UserServices from './user.service'
+
+export const UserRouter = express.Router()
+
+UserRouter.post('/checkUsername', async (request: Request, response: Response) => {
+    try {
+        const responseString= await UserServices.checkUsername(request.body.username);
+        return response.status(200).json(responseString);
+    } catch (error: any) {
+        return response.status(500).json(error.message);
+    }
+})
+
+UserRouter.post('/checkEmail', async (request: Request, response: Response) => {
+    try {
+        const responseString= await UserServices.checkEmail(request.body.email);
+        return response.status(200).json(responseString);
+    } catch (error: any) {
+        return response.status(500).json(error.message);
+    }
+})
+
+UserRouter.post('/register', async (request: Request, response: Response) => {
+    try {
+        const user : User = {
+            id : 0,
+            username : request.body.username,
+            name : request.body.name,
+            email : request.body.email,
+            password : request.body.password,
+            saldo : 0,
+        };
+        const responseString= await UserServices.register(user);
+        return response.status(200).json(responseString);
+    } catch (error: any) {
+        return response.status(500).json(error.message);
+    }
+})
+
+UserRouter.post('/validateLogin', async (request: Request, response: Response) => {
+    try {
+        const responseString= await UserServices.validateLogin(request.body.username, request.body.password);
+        return response.status(200).json(responseString);
+    } catch (error: any) {
+        return response.status(500).json(error.message);
+    }
+})
diff --git a/src/handler/user/user.service.ts b/src/handler/user/user.service.ts
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0907573ce229d1f9284cf463e3fabacc9b4507f5 100644
--- a/src/handler/user/user.service.ts
+++ b/src/handler/user/user.service.ts
@@ -0,0 +1,59 @@
+import { User } from "../../interfaces/User";
+import {db} from "../../utils/db.server"
+
+type queryResult = User | null;
+
+export async function checkUsername(username : string) {
+    const result : queryResult = await db.user.findFirst({
+        where: {
+            username : username
+        }
+    });
+    const responseString = !result ? "available" : "exist";
+    return responseString;
+}
+
+export async function checkEmail(email : string) {
+    const result : queryResult = await db.user.findFirst({
+        where: {
+            email : email
+        }
+    });
+    const responseString = !result ? "available" : "exist";
+    return responseString;
+}
+
+export async function register(user : User) {
+    let responseString = "success";
+    try {
+        const result : User = await db.user.create({
+            data : {
+                username : user.username,
+                name : user.name,
+                email : user.email,
+                password : user.password,
+            }
+        })
+    }catch (err) {
+        const usernameAvailable = await checkUsername(user.username);
+        const emailAvailable = await checkEmail(user.email);
+        if(usernameAvailable === "exist") {
+            responseString = "username already exist";
+        }else if(emailAvailable === "exist") {
+            responseString = "email already exist";
+        }else {
+            responseString = "failed";
+        }
+    }
+    return responseString;
+}
+
+export async function validateLogin(username : string, password : string) {
+    const result : queryResult = await db.user.findFirst({
+        where: {
+            username : username
+        }
+    });
+    const responseString = (password === result?.password) ? "success" : "failed";
+    return responseString;
+}
\ No newline at end of file
diff --git a/src/index.ts b/src/index.ts
index 8340e8f7e5ce1197519d7845ad453715889dc642..b8d1840d7578ab1639fcac42b29490598cce030d 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,11 +1,14 @@
 import express, {Express, Request, Response} from "express";
 import { HistoryRouter } from "./handler/history/history.router";
+import { UserRouter } from "./handler/user/user.router";
 
 const app = express();
 const port = 5000;
 
+app.use(express.json());
 
 app.use('/history', HistoryRouter);
+app.use('/user', UserRouter);
 app.get("/", (req, res) => {
     res.send("test get home");
 })
diff --git a/src/interfaces/User.ts b/src/interfaces/User.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d95d48832cd3ac9e52c8fb993c03c69f373882f6
--- /dev/null
+++ b/src/interfaces/User.ts
@@ -0,0 +1,9 @@
+
+export interface User {
+    id : number,
+    username : string,
+    name : string,
+    email : string,
+    password : string,
+    saldo : number,
+}
\ No newline at end of file