updated README.md
This commit is contained in:
parent
9330ed8e74
commit
2017f04541
1 changed files with 51 additions and 1 deletions
52
README.md
52
README.md
|
|
@ -1,3 +1,53 @@
|
|||
# Goffee Core
|
||||
|
||||
The core packages of Goffee framework
|
||||
The core library of the Goffee framework. It provides the building blocks used by every
|
||||
Goffee application: routing, the request `Context` and `Response`, hooks, events, JWT,
|
||||
sessions/cookies, cache, mailer, validation, templating, queues and the DB-backed scheduler.
|
||||
|
||||
If you are going to develop an application, the way to do so is through the Cup project. Check out the [Goffee Cup repository](https://git.smarteching.com/goffee/cup).
|
||||
|
||||
|
||||
## Main concepts
|
||||
|
||||
### App
|
||||
`core.App` is the application container. `core.New()` creates it, `Bootstrap()` initializes
|
||||
the logger, router and events manager, and `Run()` starts the HTTP server. Configuration is
|
||||
applied through the `Set...Config` methods (`SetRequestConfig`, `SetGormConfig`,
|
||||
`SetCacheConfig`, `SetEnvFileConfig`, ...).
|
||||
|
||||
### Router and controllers
|
||||
Routes are registered on the singleton returned by `core.ResolveRouter()`. Each route maps
|
||||
a method + path to a `Controller` (a `func(*core.Context) *core.Response`) and an optional
|
||||
list of `Hook`s.
|
||||
|
||||
```go
|
||||
router := core.ResolveRouter()
|
||||
router.Get("/users/:id", showUser, hooks.AuthCheck)
|
||||
```
|
||||
|
||||
### Context and Response
|
||||
A `*core.Context` carries the request and exposes helpers: `GetRequestParam`, `GetPathParam`,
|
||||
`GetHeader`, `GetRequesBodyStruct`, `GetUploadedFile`, `MoveFile`, `CopyFile`,
|
||||
`MapToJson`, `CastToString`/`CastToInt`/`CastToFloat`, `GetBaseDirPath`, and service
|
||||
accessors like `GetLogger`, `GetGorm`, `GetCache`, `GetJWT`, `GetMailer`, `GetSession`,
|
||||
`GetQueueClient` and `GetEventsManager`. `c.Response` builds the reply with
|
||||
`Json`, `Text`, `HTML`, `Template`, `BufferFile`, `Redirect`, etc.
|
||||
|
||||
## Packages
|
||||
|
||||
| Package | Description |
|
||||
| --- | --- |
|
||||
| `core` | The framework itself: app, router, context, response, hooks, events, jwt, session, cache, mailer, validator, templates, queues and scheduler wiring. |
|
||||
| `core/env` | Helpers to read environment variables with defaults. |
|
||||
| `core/logger` | Logging drivers (`LogFileDriver`, `LogNullDriver`, ...). |
|
||||
| `core/scheduler` | The DB-backed task scheduler: `Store`, `QueueItem`, `ProcessedItem`, `SchedulerMeta`. |
|
||||
| `core/template/components` | Reusable template components (e.g. `PageCard`). |
|
||||
|
||||
## Background processing
|
||||
- **Queues** (asynq): see `core.Queuemux` / `QueueConfig`.
|
||||
- **Scheduler**: a lightweight DB-backed runner with priorities, concurrent threads and a
|
||||
global semaphore kill-switch. Use `core.Schedulermux` to register task handlers, then
|
||||
`scheduler.NewStore(core.ResolveGorm())` and `SetStore` before `RunScheduler`.
|
||||
|
||||
## License
|
||||
MIT-style license. See the [LICENSE](./LICENSE) file for details.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue