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"){ +
+
+

Fill out our form

+
+
+
+ + +
+ +
+ + +

Twitter username is required

+
+ + +
+
+
+
+ } +} + +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() { + +
+
+
+
+
+

+ Useful Tools to + Help You Build Faster. +

+

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 +
  • +
+
+
+
feature image
+
+
+
+ + +
+
+
+

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=