hfmpse

Build type-safe full-stack apps with Haskell, Elm, and M36.

1|Updated Jun 15, 2025
One-click install
npx skills add https://github.com/yuidvg/nix-darwin --skill hfmpse
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: hfmpse
Source: https://github.com/yuidvg/nix-darwin/tree/main/prompt/claude-code/skills/hfmpse
Command: npx skills add https://github.com/yuidvg/nix-darwin --skill hfmpse

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This skill enables building end-to-end, type-safe full-stack web applications by unifying a Haskell backend, Elm frontend, and a typed data store with Haskell-flake, Project:M36, Polysemy, Servant, and servant-elm, ensuring cross-layer consistency and fewer runtime errors.

Core Features & Use Cases

  • Type-safe API and client generation across Haskell and Elm using Servant-Elm, ensuring API contracts stay in sync.
  • Event-sourced schema design with Project:M36, enabling auditable state and replayable projections.
  • End-to-end architecture with Polysemy effects, M36 persistence, and Elm UI powered by elm-ui for robust, maintainable apps.
  • Nix-based build and deployment integration that reproducibly builds the full stack from data model to frontend.

Quick Start

Install Nix, then run nix develop in the repository to start both Haskell and Elm development environments.

Frequently Asked Questions about hfmpse

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I build a type-safe full-stack app with Haskell and Elm?

You can build a type-safe full-stack app by integrating a Haskell backend with an Elm frontend using Servant-Elm to generate client code, ensuring API contracts stay synchronized. Project:M36 handles the typed data store.

What is the best way to keep Haskell Servant APIs in sync with an Elm frontend?

Using servant-elm is the best way to keep Haskell Servant APIs in sync with an Elm frontend. It automatically generates Elm client code from your Servant API type definitions, enforcing cross-layer consistency.

Do I need Nix to develop a Haskell and Elm full-stack project?

Yes, you need Nix flakes to reproducibly build and deploy this full-stack architecture. Running nix develop in the repository initializes both the Haskell and Elm development environments.

Can I use event sourcing with a typed data store in a Haskell backend?

Yes, you can implement event-sourced schema design using Project:M36. This enables auditable state and replayable projections directly within your Haskell backend architecture.

How does Polysemy integrate with a Haskell and Elm full-stack architecture?

Polysemy manages effects within the Haskell backend, orchestrating M36 persistence and Servant API logic. This provides a robust, maintainable architecture before generating the Elm UI.

What are the limitations of using generated Elm code for type-safe APIs?

Generated Elm code requires a Haskell Servant backend and specific Nix tooling to build. You must maintain the Servant API definitions in Haskell to ensure the Elm frontend remains synchronized.