⭐ Moe-Counter Compatible Website Hit Counter Written in Gleam
mayu.due.moe
hit-counter
svg
moe
1import cache
2import database
3import gleam/erlang/process
4import mist
5import request
6import simplifile
7import sqlight
8import wisp
9
10pub fn main() {
11 wisp.configure_logger()
12
13 let _ = simplifile.create_directory("./data")
14 let image_cache = cache.load_themes()
15 let index_html = case simplifile.read("index.html") {
16 Ok(content) -> content
17 Error(_) -> {
18 wisp.log_error("Failed to read index.html")
19
20 ""
21 }
22 }
23
24 use connection <- sqlight.with_connection("./data/count.db")
25
26 database.setup(connection)
27
28 let secret_key_base = wisp.random_string(64)
29 let assert Ok(_) =
30 wisp.mist_handler(
31 fn(request) {
32 request.handle(request, connection, image_cache, index_html)
33 },
34 secret_key_base,
35 )
36 |> mist.new
37 |> mist.port(3000)
38 |> mist.start_http
39
40 process.sleep_forever()
41}