feat: initial commit - complete website monitoring application

Build a comprehensive website monitoring application with ReasonML, OCaml, and server-reason-react.

Features:
- Real-time website monitoring with HTTP status checks
- Email and webhook alerting system
- Beautiful admin dashboard with Tailwind CSS
- Complete REST API for CRUD operations
- Background monitoring scheduler
- Multi-container Docker setup with 1-core CPU constraint
- PostgreSQL database with Caqti
- Full documentation and setup guides

Tech Stack:
- OCaml 5.0+ with ReasonML
- Dream web framework
- server-reason-react for UI
- PostgreSQL 16 database
- Docker & Docker Compose

Files:
- 9 OCaml source files (1961 LOC)
- 6 documentation files (1603 LOC)
- Complete Docker configuration
- Comprehensive API documentation

💘 Generated with Crush
This commit is contained in:
Charles N Wyble
2026-01-13 15:56:42 -05:00
commit e1ff581603
30 changed files with 4178 additions and 0 deletions

41
website_monitor.opam Normal file
View File

@@ -0,0 +1,41 @@
opam-version: "2.0"
synopsis: "Website monitoring application with alerts"
description: "Monitor websites for HTTP 200 status deviations with admin dashboard and API"
maintainer: ["Your Name <your.email@example.com>"]
authors: ["Your Name <your.email@example.com>"]
license: "MIT"
homepage: "https://github.com/username/website_monitor"
bug-reports: "https://github.com/username/website_monitor/issues"
depends: [
"ocaml" {>= "5.0"}
"dune" {>= "3.11"}
"dream" {>= "1.0.0"}
"reason" {>= "3.8"}
"server-reason-react" {>= "5.0"}
"caqti" {>= "2.1"}
"caqti-dream" {>= "2.1"}
"lwt" {>= "5.6"}
"lwt_ppx"
"yojson" {>= "2.1"}
"ocaml-protoc-plugin" {>= "8.0"}
"cohttp-lwt-unix" {>= "5.0"}
"ocaml-ssl" {>= "0.7"}
"calendar" {>= "2.4"}
"cmdliner"
"ipaddr"
"ptime"
"fmt"
"logs" {>= "0.7"}
"logs-fmt"
"angstrom"
"base64"
]
build: [
["dune" "subst"] {dev}
["dune" "build" "-p" name "-j" jobs]
]
dev-repo: "git+https://github.com/username/website_monitor.git"
url {
src: "https://github.com/username/website_monitor/archive/refs/tags/v1.0.0.tar.gz"
checksum: "md5=dummy-checksum"
}