https://github.com/chyVacheck/evo
Type-safe backend framework for building structured and explicit HTTP services.
https://github.com/chyVacheck/evo
bun mongodb typescript webserver
Last synced: 5 months ago
JSON representation
Type-safe backend framework for building structured and explicit HTTP services.
- Host: GitHub
- URL: https://github.com/chyVacheck/evo
- Owner: chyVacheck
- License: other
- Created: 2025-11-08T20:18:25.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-11-19T15:41:22.000Z (6 months ago)
- Last Synced: 2025-11-19T17:26:10.865Z (6 months ago)
- Topics: bun, mongodb, typescript, webserver
- Language: TypeScript
- Homepage:
- Size: 240 KB
- Stars: 4
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-opensource-projects - Evo - Modern TypeScript framework for creating structured, type-safe HTTP services (Project Categories)
README
# ⚡️ Evo Framework
> **Evo** — современный TypeScript-фреймворк для создания структурированных, типобезопасных HTTP-сервисов без магии и внешних зависимостей.
---
## 🧩 Основная идея
Evo создан, чтобы дать полный контроль над архитектурой бэкенда.
Без скрытых абстракций, без зависимостей, без магии — всё явно и предсказуемо.
- 💡 **Type-safe от начала до конца** — строгая типизация для роутов, DTO, сервисов и контекста.
- ⚙️ **Модульная структура** — чёткое разделение ответственности (core, base, middleware, modules).
- 🧠 **Предсказуемость** — никакой «магии» как у крупных фреймворков, только чистый и понятный код.
- 🔍 **Контроль** — вся маршрутизация, валидация и ответы определяются вручную.
- 🧰 **Гибкость** — можно использовать как основу для REST API, CLI, сервисов или собственных инструментов.
---
## 🧱 Архитектура
```
logs/ # логи приложения
src/
├── config/ # конфигурационные файлы
├── core/ # ядро: базовые классы, типы, ошибки, middleware
│ ├── app/ # главный класс приложения
│ ├── base/ # базовые модули и контроллеры
│ ├── database/ # базы данных с которыми работает приложение с коробки
│ ├── errors/ # ошибки ядра
│ ├── exceptions/ # исключения уровня API
│ ├── logger/ # логгер
│ ├── middleware/ # стандартные middleware
│ ├── types/ # общие типы и интерфейсы
│ └── utils/ # вспомогательные утилиты
├── modules/ # прикладные модули (user, todo, etc.)
└── index.ts # точка входа приложения
```
---
## 🚀 Быстрый старт
```bash
# Клонировать репозиторий
git clone https://github.com/chyvacheck/evo.git
cd evo
# Установить зависимости
bun install
# Запустить dev-сервер
bun run dev
```
---
## 💡 Пример простого контроллера
```ts
import { ControllerModule } from '@core/base';
import { HttpStatusCode, SuccessResponse } from '@core/http';
import { HttpContext, PathParamsOf } from '@core/types/http';
import { UserService } from '@modules/user/User.service';
import { CreateUserRequest } from '@modules/user/request/CreateUser.dto';
export class UserController extends ControllerModule {
private service = UserService.getInstance();
/** GET /user/:id */
public async getOneUserById(
ctx: HttpContextValidated<
'/user/:id', // auto generate params from path
any, // Query
ValidatedParamsState // state
>
) {
this.info({
message: 'Request to get one user by id',
requestId: ctx.requestId,
details: {
id: ctx.state.validated.params.id
}
});
const resp = await this.service.getOneUserById({
requestId: ctx.requestId,
id: ctx.state.validated.params.id
});
const response = SuccessResponse.ok({
message: 'User found successfully',
details: { id: resp.getData()._id },
data: resp.getData()
});
ctx.reply.status(response.getStatusCode()).json(response.toJSON());
}
}
```
---
## 🧰 Ключевые возможности
- 🌐 RESTful API с поддержкой JSON
- 🔗 Централизованная маршрутизация с поддержкой вложенных маршрутов
- 🔨 Валидация входных данных с помощью `zod`
- 🔄 Централизованная обработка ошибок
- 🔒 Унифицированные ответы (`SuccessResponse`, `ErrorResponse`)
- 🧾 Типизированный контекст `HttpContext` и `HttpContextValidated`
- 🧩 Middleware-пайплайн (before / after / finally)
- 📦 Простая интеграция с MongoDB через `BaseMongoRepository` и `BaseMongoService`
- 🚀 CLI для генерации новых модулей (в разработке)
---
## 📜 Лицензия
Проект распространяется под лицензией
**[Evo Non-Commercial License v1.0](./LICENSE)**
> Свободно использовать в образовательных, исследовательских и личных целях.
> Коммерческое использование запрещено.
> Все права принадлежат **Dmytro Shakh**.
---
## ✨ Автор
**Dmytro Shakh**
💻 GitHub: [@chyvacheck](https://github.com/chyvacheck)
📧 Email: dmytro.4or.dev@gmail.com
🧠 Framework: [Evo](https://github.com/chyvacheck/evo)
---