effect-forgegithub ↗

A TypeScript foundation for humans and agents.

Built with Effect, strong types, clear boundaries, and shared engineering standards.

Open in GitHub ↗

Use it your way.

I built Effect Forge as the starting point for my own TypeScript products—a place to refine the structure, tooling, and standards once, then carry them into the next project.

Built on strong engineering principles.

Shared principles give humans and agents a consistent way to make decisions. This foundation puts them into code, instructions, and checks, so each change builds on the same standards.

Some personal notes on agentic coding ↗

Agent instructions

AGENTS.md and task guides keep conventions beside the code. Working examples show how to apply them.

Type-driven development

Schemas validate input. Types make valid states, service dependencies, and expected failures explicit.

One check command

bun run check covers formatting, lint, types, tests, architecture, migrations, and dead code.

Clear boundaries

Application logic stays separate from frameworks and providers. Import checks enforce the boundaries.

Testable services

Compose services with Effect Layers. Substitute dependencies to test behavior through public interfaces.

Runtime foundations

Observability and infrastructure are wired in, with separate development and preview environments.

The principles, in a working app.

The template includes a small SaaS app with accounts, organizations, and shared todos to show these principles in practice. Build on it, adapt it, or discard the example and keep the engineering foundation for your own product.

Copy the full template.

I recommend starting with the agent prompt to choose what fits your product. If you want the full stack, copy the template directly and follow the README to set it up.

bunx degit mateoroldos/effect-forge my-app

Make Effect Forge yours.

Shape a new product with the starter prompt, or explore the complete foundation on GitHub.

Open in GitHub ↗