package main import ( "github.com/aerogo/aero" "github.com/aerogo/session-store-nano" "github.com/animenotifier/arn" "github.com/animenotifier/notify.moe/auth" "github.com/animenotifier/notify.moe/components/css" "github.com/animenotifier/notify.moe/layout" "github.com/animenotifier/notify.moe/middleware" "github.com/animenotifier/notify.moe/pages" ) var app = aero.New() func main() { // Configure and start configure(app).Run() } func configure(app *aero.Application) *aero.Application { // HTTPS app.Security.Load("security/fullchain.pem", "security/privkey.pem") // CSS app.SetStyle(css.Bundle()) // Sessions app.Sessions.Duration = 3600 * 24 * 30 * 6 app.Sessions.Store = nanostore.New(arn.DB.Collection("Session")) // Layout app.Layout = layout.Render // Pages pages.Configure(app) // Assets configureAssets(app) // Rewrite app.Rewrite(rewrite) // Middleware app.Use( middleware.Firewall(), middleware.Log(), middleware.Session(), middleware.UserInfo(), ) // API arn.API.Install(app) // Domain if arn.IsDevelopment() { app.Config.Domain = "beta.notify.moe" } // Authentication auth.Install(app) // Close the database node on shutdown app.OnShutdown(arn.Node.Close) // Prefetch all collections arn.DB.Prefetch() // Specify test routes for route, examples := range routeTests { app.Test(route, examples) } return app }