effect-start is a framework for building declarative full-stack applications by deeply integrating with the Effect ecosystem. Currently at version 0.36.0, the project is in its early stages of development, implying a rapid release cadence with potential for frequent, significant updates. It offers features such as automatic file-based routing, supporting frontend pages, backend API endpoints, and composable Route Layers for middleware. A key architectural design is a unified `server.ts` entrypoint for both development and production environments, aiming to eliminate configuration divergence. The framework also includes a lightweight Tailwind CSS plugin with minimal configuration, primarily demonstrated within the Bun runtime environment. Its declarative approach and reliance on Effect distinguish it from more imperative or traditional full-stack solutions, catering to developers already familiar with or interested in the Effect paradigm.
npm install effect-startVerified import paths — ran on the pinned version, not inferred.
This quickstart demonstrates the `server.ts` entrypoint, showing how to configure `effect-start` with file-based routing and serve the application.
Refer to the latest documentation, the `examples/` directory, and the project's changelog for updated patterns and migration guides.
It is recommended to use Bun for `effect-start` projects to ensure full compatibility and leverage all features as intended. If using other runtimes, thoroughly test compatibility.
Familiarize yourself with the core concepts and patterns of the Effect library before diving deep into `effect-start`. The official Effect documentation and examples are excellent resources.
Always use ES Module `import` syntax for all imports related to `effect-start` and ensure your project is configured for ESM.
Ensure `effect-start` is installed (`bun add effect-start`) and that `bunfig.toml` has `plugins = ["effect-start/tailwind"]` under `[serve.static]` exactly as specified in the documentation.
Verify that your `server.ts` file exports a default `Start.layer(...)` composition, and that `Start.serve(() => import("./server.ts"))` correctly imports and executes this. Ensure all inner layers are also correctly constructed.Ensure your development server or build process is running and successfully generating `src/routes/routes.gen.ts`. Check the console for any errors during the route generation phase.