diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..cfb9095
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+*_templ.go
diff --git a/README.md b/README.md
index a26db14..57994e0 100644
--- a/README.md
+++ b/README.md
@@ -2,10 +2,14 @@
## Heading 2
-
-
**untuk** __membuka__ ketik
```
go run cmd/server/main.go
-```
\ No newline at end of file
+```
+
+TODO:
+kjdfkljd
+
+
+ksdjflkjsdlkfj
\ No newline at end of file
diff --git a/cmd/server/main.go b/cmd/server/main.go
index de4a8f8..88ff6fa 100644
--- a/cmd/server/main.go
+++ b/cmd/server/main.go
@@ -1,7 +1,51 @@
package main
-import "fmt"
+import (
+ "fmt"
+ "net/http"
+
+ "git.proximination.com/pcpelatihan/wstempl/component"
+ "github.com/go-chi/chi/v5"
+)
func main() {
- fmt.Println("HARUSNYA JALAN")
+ port := ":8123"
+ router := chi.NewRouter()
+
+ router.Get("/", HandleHome)
+ router.Get("/satu", HandleFormSatu)
+ router.Get("/dua", HandleFormDua)
+ router.Get("/tiga", HandleFormTiga)
+ router.Get("/coba", HandleCoba)
+
+ server := http.Server{
+ Addr: port,
+ Handler: router,
+ }
+
+ fmt.Printf("server jalan di http://localhost%s", port)
+
+ if err := server.ListenAndServe(); err != nil {
+ panic(err)
+ }
+}
+
+func HandleHome(w http.ResponseWriter, r *http.Request) {
+ component.HomePage().Render(r.Context(), w)
+}
+
+func HandleFormSatu(w http.ResponseWriter, r *http.Request) {
+ component.FormSatu().Render(r.Context(), w)
+}
+
+func HandleFormDua(w http.ResponseWriter, r *http.Request) {
+ component.FormDua().Render(r.Context(), w)
+}
+
+func HandleFormTiga(w http.ResponseWriter, r *http.Request) {
+ component.FormTiga().Render(r.Context(), w)
+}
+
+func HandleCoba(w http.ResponseWriter, r *http.Request) {
+ component.Try().Render(r.Context(), w)
}
diff --git a/component/homepage.templ b/component/homepage.templ
new file mode 100644
index 0000000..1091e38
--- /dev/null
+++ b/component/homepage.templ
@@ -0,0 +1,90 @@
+package component
+
+templ HomePage() {
+ @PageWrapper("HOME"){
+ @LandingContent()
+ }
+}
+
+templ FormSatu() {
+ @PageWrapper("Form Satu"){
+
+ }
+}
+
+templ FormDua() {
+ @PageWrapper("HOME"){
+
+ }
+}
+
+templ FormTiga() {
+ @PageWrapper("HOME"){
+
+
+ }
+}
+
+
+templ Try() {
+ @PageWrapper("TRY"){
+
+
CIE MAU COBA YA
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/component/landingcontent.templ b/component/landingcontent.templ
new file mode 100644
index 0000000..47423c5
--- /dev/null
+++ b/component/landingcontent.templ
@@ -0,0 +1,333 @@
+package component
+
+templ LandingContent() {
+
+
+
+
+
+
+
+
It's never been easier to build beautiful websites that convey your message and tell your story.
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+ Boost Productivity
+
+
+ Build an atmosphere that creates productivity in your organization and your company culture.
+
+
+ -
+ ✓ Maximize productivity and growth
+
+ -
+ ✓ Speed past your competition
+
+ -
+ ✓ Learn the top techniques
+
+
+
+
+
+
+
+
+
+
+ Automated Tasks
+
+
+ Save time and money with our revolutionary services. We are the leaders in the industry.
+
+
+ -
+ ✓ Automated task management workflow
+
+ -
+ ✓ Detailed analytics for your data
+
+ -
+ ✓ Some awesome integrations
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
Jam-packed with all the tools you need to succeed!
+
It's never been easier to build a business of your own. Our tools will help you with the following:
+
+ -
+
+ Faster Processing and Delivery
+
+ -
+
+ Out of the Box Tracking and Monitoring
+
+ -
+
+ 100% Protection and Security for Your App
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Don't just take our word for it
+
+
+
+
+ See what others are saying
+
+
+
+
+
+
+

+
+
+
John Doe
+
CEO of Something
+
+
+
"This is a no-brainer if you want to take your business to the next level. If you are looking for the ultimate toolset, this is it!"
+
+
+
+
+

+
+
+
Jane Doe
+
CTO of Business
+
+
+
"Thanks for creating this service. My life is so much
+ easier.
+ Thanks for making such a great product."
+
+
+
+
+

+
+
+
John Smith
+
Creator of Stuff
+
+
+
"Packed with awesome content and exactly what I was
+ looking
+ for. I would highly recommend this to anyone."
+
+
+
+
+
+
+
+
+
+
+
+ Pricing Options
+
+
+ We've got a plan for companies of any size
+
+
+
+
+
+ Basic
+
+
+ The basic plan is a good fit for smaller teams and startups
+
+
+
+ $19
+
+
+ per user per month
+
+
+
+
+
+
+
+ Plus
+
+
+ The plus plan is a good fit for medium-size to larger companies
+
+
+
+ $39
+
+
+ per user per month
+
+
+
+
+
+
+ Pro
+
+
+ The pro plan is a good fit for larger and enterprise companies.
+
+
+
+ $59
+
+
+ per user per month
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ © 2021 SomeCompany, Inc. All rights reserved.
+
+
+
+}
\ No newline at end of file
diff --git a/component/page.templ b/component/page.templ
new file mode 100644
index 0000000..c38afa0
--- /dev/null
+++ b/component/page.templ
@@ -0,0 +1,127 @@
+package component
+
+templ PageWrapper(title string) {
+
+
+
+
+
+
+
+
+ {title}
+
+
+ @Navbar()
+ {children...}
+
+
+}
+
+
+templ Navbar() {
+
+}
\ No newline at end of file
diff --git a/go.mod b/go.mod
new file mode 100644
index 0000000..91c4cd7
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,24 @@
+module git.proximination.com/pcpelatihan/wstempl
+
+go 1.24.1
+
+require (
+ github.com/a-h/parse v0.0.0-20250122154542-74294addb73e // indirect
+ github.com/a-h/templ v0.3.865 // indirect
+ github.com/andybalholm/brotli v1.1.0 // indirect
+ github.com/cenkalti/backoff/v4 v4.3.0 // indirect
+ github.com/cli/browser v1.3.0 // indirect
+ github.com/fatih/color v1.16.0 // indirect
+ github.com/fsnotify/fsnotify v1.7.0 // indirect
+ github.com/go-chi/chi/v5 v5.2.1 // indirect
+ github.com/mattn/go-colorable v0.1.13 // indirect
+ github.com/mattn/go-isatty v0.0.20 // indirect
+ github.com/natefinch/atomic v1.0.1 // indirect
+ golang.org/x/mod v0.24.0 // indirect
+ golang.org/x/net v0.39.0 // indirect
+ golang.org/x/sync v0.13.0 // indirect
+ golang.org/x/sys v0.32.0 // indirect
+ golang.org/x/tools v0.32.0 // indirect
+)
+
+tool github.com/a-h/templ/cmd/templ
diff --git a/go.sum b/go.sum
new file mode 100644
index 0000000..f8bd014
--- /dev/null
+++ b/go.sum
@@ -0,0 +1,35 @@
+github.com/a-h/parse v0.0.0-20250122154542-74294addb73e h1:HjVbSQHy+dnlS6C3XajZ69NYAb5jbGNfHanvm1+iYlo=
+github.com/a-h/parse v0.0.0-20250122154542-74294addb73e/go.mod h1:3mnrkvGpurZ4ZrTDbYU84xhwXW2TjTKShSwjRi2ihfQ=
+github.com/a-h/templ v0.3.865 h1:nYn5EWm9EiXaDgWcMQaKiKvrydqgxDUtT1+4zU2C43A=
+github.com/a-h/templ v0.3.865/go.mod h1:oLBbZVQ6//Q6zpvSMPTuBK0F3qOtBdFBcGRspcT+VNQ=
+github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M=
+github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY=
+github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
+github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
+github.com/cli/browser v1.3.0 h1:LejqCrpWr+1pRqmEPDGnTZOjsMe7sehifLynZJuqJpo=
+github.com/cli/browser v1.3.0/go.mod h1:HH8s+fOAxjhQoBUAsKuPCbqUuxZDhQ2/aD+SzsEfBTk=
+github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
+github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
+github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
+github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
+github.com/go-chi/chi/v5 v5.2.1 h1:KOIHODQj58PmL80G2Eak4WdvUzjSJSm0vG72crDCqb8=
+github.com/go-chi/chi/v5 v5.2.1/go.mod h1:L2yAIGWB3H+phAw1NxKwWM+7eUH/lU8pOMm5hHcoops=
+github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
+github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
+github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/natefinch/atomic v1.0.1 h1:ZPYKxkqQOx3KZ+RsbnP/YsgvxWQPGxjC0oBt2AhwV0A=
+github.com/natefinch/atomic v1.0.1/go.mod h1:N/D/ELrljoqDyT3rZrsUmtsuzvHkeB/wWjHV22AZRbM=
+golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU=
+golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
+golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY=
+golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E=
+golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610=
+golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
+golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
+golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
+golang.org/x/tools v0.32.0 h1:Q7N1vhpkQv7ybVzLFtTjvQya2ewbwNDZzUgfXGqtMWU=
+golang.org/x/tools v0.32.0/go.mod h1:ZxrU41P/wAbZD8EDa6dDCa6XfpkhJ7HFMjHJXfBDu8s=