diff --git a/src/tjts5901/templates/listBid.php b/src/tjts5901/templates/listBid.html
similarity index 75%
rename from src/tjts5901/templates/listBid.php
rename to src/tjts5901/templates/listBid.html
index d0e05208d9587d37b4cc6a5253456b86c8f738fc..bfb322146908b57d1288b058a8dd37b1880f6e07 100644
--- a/src/tjts5901/templates/listBid.php
+++ b/src/tjts5901/templates/listBid.html
@@ -1,31 +1,9 @@
-
-<?php
-    $x=0;
-?>
 <!DOCTYPE html>
 <html lang="en">
     <head>
         <meta charset="utf-8">
         <title>View items</title>
         <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
-        <script>
-            function bid(id){
-                const button = document.querySelector("#button"+id);
-                const form = document.querySelector("#item"+id);
-                
-
-                if (form.className=="open"){
-                    form.className="";
-                    form.type="hidden";
-                    button.innerHTML = "Bid";
-                }
-                else{
-                    form.className="open";
-                    form.type="number";
-                    button.innerHTML = "Cancel";
-                }
-            }
-        </script>
     </head>
     <body>
         <header>
@@ -36,17 +14,14 @@
                 {%for item in items %}
                 <div class="d-flex w-100 justify-content-between mb-4">
                     <img src="data:image/png;base64,{{ item.image_base64 }}">
-                    <a href="#" class="list-group-item list-group-item-action" aria-current="true">
+                    <div class="list-group-item list-group-item-action" aria-current="true">
                         <div class="d-flex w-100 justify-content-between">
                             <h5 class="mb-1">{{ item.title }}</h5>
                             <small>{{ item.created_at }}</small>
                         </div>
                         <p class="mb-1">{{ item.description }}</p>
                         <small>{{ item.starting_bid }}</small>
-                        <?php 
-                            $x++;
-                            echo "<div class=\"row\"><button id=\"button".$x."\" for=\"item".$x."\" class=\"col-md-2\" onclick=\"bid(".$x.")\">Bid</button><form method=\"post\" action=\"#\" class=\"col-md-4\"><input id=\"item".$x."\" type=\"hidden\" min=\"{{ item.starting_bid }}\" placeholder=\"press enter to validate\" /></form></div>";
-                        ?>
+                        <a href="{{ url_for('views.page_bid', id=item.id) }}"><button class="btn btn-primary">Bid</button></a>
                     </div>
                     <div class="row justify-content-md-center">
                         <div class="col-md-auto">
diff --git a/src/tjts5901/templates/view.html b/src/tjts5901/templates/view.html
new file mode 100644
index 0000000000000000000000000000000000000000..5df612f052c189e31d7f2f774a632980d63fc577
--- /dev/null
+++ b/src/tjts5901/templates/view.html
@@ -0,0 +1,29 @@
+{% extends 'base.html' %}
+
+{% block header %}
+    <div class="container">
+        <div class="d-flex align-items-center">
+            <h1 class="mr-auto">{% block title %}{{item.title}}{% endblock %}</h1>
+        </div>
+    </div>
+{% endblock %}
+
+{% block content %}
+
+    <div class="d-flex mb-4 container">
+        <div class="col-md-4">
+            <img src="data:image/png;base64,{{ item.image_base64 }}">
+        </div>
+        <div class="col-md-4">
+            <h5 class="mb-1">{{ item.title }}</h5>
+            <p class="mb-1">{{ item.description }}</p>
+            <p class="mb-1">Created : {{ item.created_at }}</p>
+            <p class="mb-1">Current bid : {{ item.starting_bid }}</p><br/>
+            <form method="POST" action="{{ url_for('views.bid', id=item.id)}}" class="row" enctype="multipart/form-data">
+                <input class="col-md-9" id="bid" type="number" min="{{ item.starting_bid }}" placeholder="write your bid">
+                <button for="bid" type="submit" class="btn btn-primary col-md-3">Validate</button>
+            </form>
+        </div>
+    </div>
+
+{% endblock %}
\ No newline at end of file
diff --git a/src/tjts5901/views.py b/src/tjts5901/views.py
index 43a1f6379cc653bcd493795948fecd84296d23a2..5327c2e504d2875d808837de7b2ceda6bd20834e 100644
--- a/src/tjts5901/views.py
+++ b/src/tjts5901/views.py
@@ -169,7 +169,7 @@ def list_bid():
     for item in items:
         item.image_base64 = base64.b64encode(item.image.read()).decode('utf-8')
 
-    html = render_template("listBid.php", items=items)
+    html = render_template("listBid.html", items=items)
     return html
 
 @bp.route("/bid")
@@ -305,3 +305,21 @@ def api_item_place_bid(id):
         'success': True,
         'bid': bid.to_json()
     })
+
+@bp.route("/view/<id>")
+@login_required
+def page_bid(id):
+    """
+    Item view page.
+
+    Displays the item details, and a form to place a bid.
+    """
+
+    item = Item.objects.get_or_404(id=id)
+
+    # Dark pattern to show enticing message to user
+    #if item.closes_at < datetime.utcnow() + timedelta(hours=1):
+    #    flash("This item is closing soon! Act now! Now! Now!")
+
+    return render_template('view.html', item=item)
+