feat: minimal IHP scaffold — T01-T05, T08 of IRP-WP-0001

- flake.nix adapted from inter-hub: appName=ihp-railiance-probe, stripped to
  core packages, GHC 9.10.3 Bug 1+2 overlays carried verbatim (pname check
  updated to ihp-railiance-probe-models)
- IHP project scaffold: Main.hs, Config.hs, App.cabal, Setup.hs, Makefile
- Schema: probes table (id, name, created_at)
- Health endpoint: GET /healthz → "ok" (HealthController)
- Probes CRUD: ProbesController + 4 views (Index, New, Show, Edit)
- Hspec test suite: Test/ProbeControllerSpec covers /probes and /healthz
- Helm chart in chart/: deployment, service, ingress, secret templates
- devenv.nix, devenv.yaml, .ghci, tailwind config

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-03 12:57:28 +02:00
parent b818866c7f
commit e372a0c9ce
35 changed files with 645 additions and 0 deletions

57
App.cabal Normal file
View File

@@ -0,0 +1,57 @@
-- Stub cabal file — only for HLS/tooling support. Not used by the build.
-- See flake.nix for actual package management.
name: App
version: 0.1.0.0
license: AllRightsReserved
license-file: LICENSE
author: Developers
maintainer: developers@example.com
build-type: Simple
cabal-version: >=1.10
executable App
main-is: Main.hs
build-depends:
ihp,
base,
wai,
text,
hspec,
ihp-hspec
hs-source-dirs: .
default-language: Haskell2010
extensions:
OverloadedStrings
, NoImplicitPrelude
, ImplicitParams
, Rank2Types
, DisambiguateRecordFields
, NamedFieldPuns
, DuplicateRecordFields
, OverloadedLabels
, FlexibleContexts
, TypeSynonymInstances
, FlexibleInstances
, QuasiQuotes
, TypeFamilies
, PackageImports
, ScopedTypeVariables
, RecordWildCards
, TypeApplications
, DataKinds
, InstanceSigs
, DeriveGeneric
, MultiParamTypeClasses
, TypeOperators
, DeriveDataTypeable
, MultiWayIf
, UndecidableInstances
, BlockArguments
, PartialTypeSignatures
, LambdaCase
, DefaultSignatures
, EmptyDataDeriving
, BangPatterns
, FunctionalDependencies
, StandaloneDeriving
, DerivingVia