diff --git a/pultosch/pultosch.go b/pultosch/pultosch.go
new file mode 100644
index 0000000000000000000000000000000000000000..8e7f492ea02bf420e59383d9f8d58913bb4ea7c2
--- /dev/null
+++ b/pultosch/pultosch.go
@@ -0,0 +1,153 @@
+package pultosch
+
+import (
+	"git.sch.bme.hu/disappointment-industries/becskasszasch/db"
+	"git.sch.bme.hu/disappointment-industries/becskasszasch/helpers"
+	"git.sch.bme.hu/disappointment-industries/becskasszasch/homepage"
+	"html/template"
+	"net/http"
+	"strconv"
+)
+
+var pultoschTemplate *template.Template
+var spendsLimitTemplate *template.Template
+var router = http.NewServeMux()
+var Handler = PultoschMW(router)
+
+type specialSpend struct {
+	Schacc  string
+	Name    string
+	Product string
+	Amount  int64
+	Date    string
+}
+
+type spendData struct {
+	User        *homepage.User
+	Spends      []*specialSpend
+	ProductName string
+}
+
+type pultData struct {
+	User       *db.User
+	Dark       bool
+	LoginURL   string
+	IsAdmin    bool
+	IsPultosch bool
+
+	Error    string
+	Products []*db.Product
+	Users    []*db.User
+}
+
+func init() {
+	var err error
+
+	pultoschTemplate, err = template.New("pultosch.template.html").ParseFiles("pultosch/pultosch.template.html", "homepage/navbar.template.html", "homepage/header.template.html", "homepage/footer.template.html")
+	spendsLimitTemplate, err = template.New("recentSpends.template.html").ParseFiles("pultosch/recentSpends.template.html", "homepage/navbar.template.html", "homepage/header.template.html", "homepage/footer.template.html")
+	if err != nil {
+		panic(err)
+	}
+
+	router.HandleFunc("/spends", spendsLimitHandler)
+	router.HandleFunc("/spends/", spendsLimitHandler)
+	router.HandleFunc("/", handler)
+}
+
+func PultoschMW(h http.Handler) http.Handler {
+	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+		user, err := homepage.GetUserInfoBySession(r)
+		if err != nil {
+			helpers.Logger.Println(err)
+			return
+		}
+		if user.IsPultosch {
+			h.ServeHTTP(w, r)
+		} else {
+			w.WriteHeader(http.StatusForbidden)
+		}
+	})
+}
+
+func handler(w http.ResponseWriter, r *http.Request) {
+	if r.Method == http.MethodGet {
+		user, err := homepage.GetUserInfoBySession(r)
+		if err != nil {
+			helpers.Logger.Println(err)
+			return
+		}
+
+		products, err := db.GetAvailableProducts()
+		if err != nil {
+			helpers.Logger.Println(err)
+			return
+		}
+
+		users, err := db.GetUsersSorted(db.GetDB())
+		if err != nil {
+			helpers.Logger.Println(err)
+			return
+		}
+
+		data := pultData{
+			User:     user.User,
+			Dark:     user.Dark,
+			LoginURL: user.LoginURL,
+			IsAdmin:  user.IsAdmin,
+			Products: products,
+			Users:    users,
+		}
+		er := pultoschTemplate.Execute(w, &data)
+		if er != nil {
+			helpers.Logger.Println(er)
+		}
+	} else {
+		w.WriteHeader(http.StatusMethodNotAllowed)
+	}
+}
+
+func convertSpends(spends []*db.Spend) []*specialSpend {
+	var ret []*specialSpend
+	for _, spend := range spends {
+		ret = append(ret, &specialSpend{
+			Schacc:  spend.User.SchAcc,
+			Name:    spend.User.Name,
+			Product: spend.Product.Name,
+			Amount:  spend.Amount,
+			Date:    spend.Date.String(),
+		})
+	}
+	return ret
+}
+
+func spendsLimitHandler(w http.ResponseWriter, r *http.Request) {
+	if r.Method == http.MethodGet {
+		limitStr := r.URL.Query().Get("limit")
+		limit, err := strconv.Atoi(limitStr)
+		if err != nil {
+			limit = 10 // Default value if the limit parameter is not a valid integer
+		}
+
+		spends, err := db.GetSpendsWithLimit(limit)
+		if err != nil {
+			helpers.Logger.Println(err)
+			return
+		}
+
+		usr, err := homepage.GetUserInfoBySession(r)
+		if err != nil {
+			return
+		}
+
+		sp := spendData{
+			User:   usr,
+			Spends: convertSpends(spends),
+		}
+		// You may also wish to include more data in the template's context.
+		// Make sure to create and parse a new template for this page.
+		er := spendsLimitTemplate.Execute(w, &sp)
+		if er != nil {
+			helpers.Logger.Println(er)
+		}
+	}
+}
diff --git a/pultosch/pultosch.template.html b/pultosch/pultosch.template.html
new file mode 100644
index 0000000000000000000000000000000000000000..0cdc871c94f85b8dd342545e0408147daab697f3
--- /dev/null
+++ b/pultosch/pultosch.template.html
@@ -0,0 +1,34 @@
+{{ template "header" .}}
+
+{{ template "navbar" . }}
+
+{{- if .User.IsPultosch }}
+
+    <form method="post" action="/api/v1/cart">
+            <label for="userSelect">Choose a user:</label><br>
+            <select id="userSelect" name="userId">
+                {{ range .Users }}
+                    <option value="{{ .SchAcc }}">{{ .SchAcc }} - {{ .Name }}</option>
+                {{ end }}
+            </select><br><br>
+
+            <div id="cart">
+                <label>Choose products:</label><br>
+                <select id="productSelect" name="productId">
+                    {{ range .Products }}
+                        <option value="{{ .ID }}">{{ .Name }}</option>
+                    {{ end }}
+                </select>
+                <label for="amount">Amount:</label>
+                <input type="number" id="amount" min="1" value="1" name="amount">
+                <input type="button" id="addToCart" value="Add to  cart"><br>
+            </div>
+
+            <input type="submit" value="Sell">
+        </form>
+
+        <script src="/static/js/cart.js"></script>
+
+{{- end }}
+
+{{ template "footer" . }}
\ No newline at end of file
diff --git a/pultosch/recentSpends.template.html b/pultosch/recentSpends.template.html
new file mode 100644
index 0000000000000000000000000000000000000000..48570b6e162535978b0a80fe2cba91926017329a
--- /dev/null
+++ b/pultosch/recentSpends.template.html
@@ -0,0 +1,53 @@
+{{ template "header" .User}}
+
+{{ template "navbar" .User }}
+
+{{- if .User.IsPultosch }}
+
+<main>
+    <div class="container">
+        <div class="text-center form justify-content-center">
+            <div class="d-flex align-items-center justify-content-center mb-3">
+            <h2>Recent Spends</h2>
+                <form action="" method="get" class="ml-5" id="autoReloadForm">
+                    <div class="d-flex align-items-center">
+                      <label for="limit" class="mr-3">limit:</label>
+                      <input type="number" id="limit" name="limit" min="1" value="10" class="form-control mr-3">
+                      <input type="submit" value="Reload" class="btn btn-primary">
+                    </div>
+              </form>
+            </div>
+
+            <div class="overflow-x-auto">
+                <table class="table" id="admin-table">
+                    <thead>
+                    <tr class="text-left">
+                        <th scope="col">Schacc</th>
+                        <th scope="col">Name</th>
+                        <th scope="col">Product</th>
+                        <th scope="col">Amount</th>
+                        <th scope="col">Date</th>
+                        <!-- Add other necessary fields -->
+                    </tr>
+                    </thead>
+                    <tbody>
+                    <tr>
+                    {{range .Spends }}
+                        <td class="text-left">{{ .Schacc}}</td>
+                        <td class="text-left">{{ .Name}}</td>
+                        <td class="text-left">{{.Product}}</td>
+                        <td class="text-right">{{.Amount}}</td>
+                        <td class="text-left">{{.Date}}</td>
+                        <!-- Render other fields here -->
+                    </tr>
+                    {{end}}
+                    </tbody>
+                </table>
+            </div>
+        </div>
+    </main>
+
+
+{{- end }}
+
+{{ template "footer" . }}
\ No newline at end of file