~repos /gromer

#golang#htmx#ssr

git clone https://pyrossh.dev/repos/gromer.git

gromer is a framework and cli to build multipage web apps in golang using htmx and alpinejs.


81f39a0d Peter John

3 years ago
Update readme.md
Files changed (1) hide show
  1. readme.md +72 -1
readme.md CHANGED
@@ -21,7 +21,7 @@ go get -u -v github.com/pyros2097/gromer/cmd/gromer
21
21
 
22
22
  # Using
23
23
 
24
- You need to follow this directory structure similar to nextjs for the api route handlers to be generated
24
+ You need to follow this directory structure similar to nextjs for the api route handlers to be generated and run the gromer command.
25
25
 
26
26
  [Example](https://github.com/pyros2097/gromer/tree/master/_example)
27
27
 
@@ -151,6 +151,77 @@ func POST(ctx context.Context, b PostParams) (*services.Todo, int, error) {
151
151
  }
152
152
  ```
153
153
 
154
+ And then run the gromer cli command annd it will generate the route handlers in a main.go file,
155
+ ```go
156
+ And it will generate your route handlers in the main.go file,
157
+ ```go
158
+ // Code generated by gromer. DO NOT EDIT.
159
+ package main
160
+
161
+ import (
162
+ "os"
163
+
164
+ "github.com/gorilla/mux"
165
+ "github.com/pyros2097/gromer"
166
+ "github.com/rs/zerolog/log"
167
+ "gocloud.dev/server"
168
+
169
+ "github.com/pyros2097/gromer/_example/assets"
170
+ "github.com/pyros2097/gromer/_example/components"
171
+ "github.com/pyros2097/gromer/_example/pages/404"
172
+ "github.com/pyros2097/gromer/_example/pages"
173
+ "github.com/pyros2097/gromer/_example/pages/about"
174
+ "github.com/pyros2097/gromer/_example/pages/api/recover"
175
+ "github.com/pyros2097/gromer/_example/pages/api/todos"
176
+ "github.com/pyros2097/gromer/_example/pages/api/todos/_todoId_"
177
+
178
+ )
179
+
180
+ func init() {
181
+ gromer.RegisterComponent(components.Header)
182
+ gromer.RegisterComponent(components.Page)
183
+ gromer.RegisterComponent(components.Todo)
184
+
185
+ }
186
+
187
+ func main() {
188
+ port := os.Getenv("PORT")
189
+ baseRouter := mux.NewRouter()
190
+ baseRouter.Use(gromer.LogMiddleware)
191
+
192
+ baseRouter.NotFoundHandler = gromer.StatusHandler(not_found_404.GET)
193
+
194
+ staticRouter := baseRouter.NewRoute().Subrouter()
195
+ staticRouter.Use(gromer.CacheMiddleware)
196
+ gromer.StaticRoute(staticRouter, "/assets/", assets.FS)
197
+ gromer.StylesRoute(staticRouter, "/styles.css")
198
+
199
+ pageRouter := baseRouter.NewRoute().Subrouter()
200
+ gromer.ApiExplorerRoute(pageRouter, "/explorer")
201
+ gromer.Handle(pageRouter, "GET", "/", pages.GET)
202
+ gromer.Handle(pageRouter, "GET", "/about", about.GET)
203
+
204
+
205
+ apiRouter := baseRouter.NewRoute().Subrouter()
206
+ apiRouter.Use(gromer.CorsMiddleware)
207
+ gromer.Handle(apiRouter, "GET", "/api/recover", recover.GET)
208
+ gromer.Handle(apiRouter, "GET", "/api/todos", todos.GET)
209
+ gromer.Handle(apiRouter, "POST", "/api/todos", todos.POST)
210
+ gromer.Handle(apiRouter, "DELETE", "/api/todos/{todoId}", todos_todoId_.DELETE)
211
+ gromer.Handle(apiRouter, "GET", "/api/todos/{todoId}", todos_todoId_.GET)
212
+ gromer.Handle(apiRouter, "PUT", "/api/todos/{todoId}", todos_todoId_.PUT)
213
+
214
+
215
+
216
+ log.Info().Msg("http server listening on http://localhost:"+port)
217
+ srv := server.New(baseRouter, nil)
218
+ if err := srv.ListenAndServe(":"+port); err != nil {
219
+ log.Fatal().Stack().Err(err).Msg("failed to listen")
220
+ }
221
+ }
222
+ ```
223
+ ```
224
+
154
225
  # Templating
155
226
 
156
227
  Gromer uses a handlebars like templating language for components and pages. This is a modified version of this package [velvet](https://github.com/gobuffalo/velvet)