A framework-agnostic backend starter kit for modern TypeScript servers.
Arcstack provides a structured foundation for building APIs with Express, H3, and future runtimes — without locking your application to a single framework.
It prioritizes architecture first, framework second.
Most starter kits are tightly coupled to one framework. Arcstack is designed around clean architecture and transport-layer abstraction.
- Multi-framework support (Express, H3 — more coming)
- Opinionated but not restrictive
- Clean and scalable folder structure
- TypeScript native
- Structured error handling
- Standardized API responses
- Easy to extend
Your business logic remains independent of the HTTP runtime.
npm init arcstack my-project
cd my-project
npm install
npm run devsrc/
├── app/
│ ├── http/
│ │ ├── controllers/
│ | |── resources/
│ └── services/
│
├── config/
│
├── core/
│ ├── console/
│ ├── middlewares/
│ └── utils/
│
├── routes/
│ ├── api/
│ └── web/
│
└── server.ts
- Controllers: HTTP layer
- Services: Business logic
- Resources: Response shaping
- Core: Framework-agnostic utilities
Switching frameworks should not require rewriting business logic.
| Framework | Status |
|---|---|
| Express | Stable |
| H3 | Stable |
| Fastify | Planned |
| Bun | Planned |
New adapters can be added without affecting the application layer.
Arcstack uses structured error classes and centralized error middleware.
Example:
throw new RequestError("Profile not found", 404);All errors return consistent JSON:
{
"status": "error",
"message": "Profile not found",
"code": 404
}Standardized API responses:
return new UserResource(req, res, user).json().status(200).additional({
status: "success",
message: "User retrieved",
});Response format:
{
"data": {},
"status": "success",
"message": "User retrieved",
"code": 200
}npm run devProduction:
npm run build
npm start- Minimal magic
- Strong typing
- Clear separation of concerns
- Predictable structure
- Future-proof architecture
- Fastify adapter
- Bun adapter
- CLI scaffolding generators
- Plugin system
- Authentication presets
- Validation layer abstraction
- Framework Switching
Contributions are welcome.
When adding framework adapters:
- Keep core framework-agnostic
- Avoid leaking framework types into business logic
- Follow established adapter patterns
MIT