{"id":49351260,"url":"https://github.com/fluojs/fluo","last_synced_at":"2026-06-13T04:03:51.668Z","repository":{"id":349330775,"uuid":"1178644277","full_name":"fluojs/fluo","owner":"fluojs","description":"Standard-First TypeScript Backend Framework","archived":false,"fork":false,"pushed_at":"2026-06-11T14:16:24.000Z","size":15303,"stargazers_count":19,"open_issues_count":21,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-11T14:22:01.767Z","etag":null,"topics":["backend-framework","bun","cloudflare-workers","deno","dependency-injection","nodejs","standard-decorators","typescript"],"latest_commit_sha":null,"homepage":"https://github.com/fluojs/fluo/tree/main/docs","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fluojs.png","metadata":{"files":{"readme":"README.ko.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.ko.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.ko.md","support":"SUPPORT.ko.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-11T08:16:06.000Z","updated_at":"2026-06-11T13:35:41.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/fluojs/fluo","commit_stats":null,"previous_names":["konektijs/konekti","fluojs/fluo"],"tags_count":398,"template":false,"template_full_name":null,"purl":"pkg:github/fluojs/fluo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluojs%2Ffluo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluojs%2Ffluo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluojs%2Ffluo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluojs%2Ffluo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fluojs","download_url":"https://codeload.github.com/fluojs/fluo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluojs%2Ffluo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34271500,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend-framework","bun","cloudflare-workers","deno","dependency-injection","nodejs","standard-decorators","typescript"],"created_at":"2026-04-27T10:02:32.203Z","updated_at":"2026-06-13T04:03:51.633Z","avatar_url":"https://github.com/fluojs.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./src/fluo.png\" alt=\"fluo framework logo\" width=\"140\" /\u003e\n  \n  \u003ch1\u003efluo\u003c/h1\u003e\n  \n  \u003cp\u003e\n    \u003cb\u003e표준 우선(Standard-First) TypeScript 백엔드 프레임워크\u003c/b\u003e\n  \u003c/p\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"./README.md\"\u003eEnglish\u003c/a\u003e\n    \u0026nbsp;\u0026middot;\u0026nbsp;\n    \u003ca href=\"./README.ko.md\"\u003e한국어\u003c/a\u003e\n  \u003c/p\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"https://github.com/fluojs/fluo/stargazers\"\u003e\u003cimg alt=\"GitHub stars\" src=\"https://img.shields.io/github/stars/fluojs/fluo?style=social\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/fluojs/fluo/blob/main/LICENSE\"\u003e\u003cimg alt=\"License\" src=\"https://img.shields.io/github/license/fluojs/fluo\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/fluojs/fluo/actions/workflows/ci.yml\"\u003e\u003cimg alt=\"CI\" src=\"https://img.shields.io/github/actions/workflow/status/fluojs/fluo/ci.yml?branch=main\u0026label=ci\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/fluojs/fluo/issues\"\u003e\u003cimg alt=\"Issues\" src=\"https://img.shields.io/github/issues/fluojs/fluo\" /\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\n\u003e **fluo**는 **TC39 표준 데코레이터**를 기반으로 처음부터 다시 설계된 현대적인 TypeScript 백엔드 프레임워크입니다. 레거시 데코레이터 기반 프레임워크에 대한 고성능, 명시적, 그리고 메타데이터가 필요 없는 대안을 제공합니다.\n\n## 왜 fluo인가요?\n\nNestJS와 같은 대부분의 TypeScript 프레임워크는 JavaScript 언어의 발전 방향과 동떨어진 `experimentalDecorators` 및 `emitDecoratorMetadata` 플래그에 의존하는 과거에 머물러 있습니다. fluo는 기술 생태계를 미래로 이끕니다.\n\n- **🚀 마법 없는 고성능**: 무거운 리플렉션 라이브러리나 숨겨진 메타데이터 생성이 없습니다. fluo는 가볍고 빠르며, 하드웨어에 가까운 성능을 유지합니다.\n- **🛡️ 암묵적 대신 명시적**: 의존성 주입(DI)이 투명하고 감사 가능합니다. 컴파일러가 생성한 불투명한 블롭이 아니라, 코드에서 직접 의존성 그래프를 확인할 수 있습니다.\n- **🌍 어디서나 실행**: 통합된 런타임 파사드(Facade)를 기반으로 구축되었습니다. 로직 변경 없이 Node.js의 Fastify에서 Bun, Deno, 또는 Cloudflare Workers로 전환하세요.\n- **✨ 미래 지향적**: 현대적인 TypeScript 시대를 위해 설계되었습니다. 레거시 컴파일러 동작과 싸우지 않고 가장 강력한 타입 안정성 기능을 활용하세요.\n\n## 개발자 경험\n\n조직화 능력은 NestJS처럼 강력하면서도, 명시성은 Go 언어처럼 느껴지는 프레임워크를 상상해 보세요.\n\n```ts\nimport { Module, Inject } from '@fluojs/core';\nimport { UsersRepository } from './users.repository';\n\n@Inject(UsersRepository)\nexport class UsersService {\n  constructor(private readonly repo: UsersRepository) {}\n}\n\n@Module({\n  providers: [UsersService, UsersRepository],\n})\nexport class UsersModule {}\n```\n\n*레거시 플래그가 필요 없습니다. 오직 표준 TypeScript만 사용합니다.*\n\n## 빠른 시작\n\nCLI를 사용하는 것이 fluo를 경험하는 가장 빠른 방법입니다.\n\n```bash\n# CLI 설치\npnpm add -g @fluojs/cli\n\n# 프로젝트 생성\nfluo new my-backend\ncd my-backend\n\n# 엔진 가동\npnpm dev\n```\n\n생성된 Node.js 스타터 lifecycle script는 `fluo dev`, `fluo build`, `fluo start`로 위임하므로, CLI가 런타임별 명령을 선택하고 `NODE_ENV`가 없으면 적절한 기본값을 사용합니다. Bun, Deno, Cloudflare Workers 스타터는 같은 `fluo dev` 추상성을 유지하면서 runtime-owned watch loop를 기본값으로 사용하고, CLI restart supervisor가 필요하면 `fluo dev --runner fluo`를 제공하며, production 또는 deployment script는 각 런타임의 native 명령을 사용합니다.\n\n생성된 스타터 템플릿에는 바로 프로덕션에 투입 가능한 Fastify 설정, 내장된 헬스 체크, 그리고 확장이 용이한 디렉터리 구조가 포함되어 있습니다.\n\n## 모듈형 생태계\n\nfluo는 거대한 단일체(Monolith)가 아닙니다. 정교하게 설계된 모듈들의 집합입니다.\n\n| 카테고리 | 패키지 |\n| :--- | :--- |\n| **런타임** | [Fastify](./packages/platform-fastify), [Node.js](./packages/platform-nodejs), [Bun](./packages/platform-bun), [Deno](./packages/platform-deno), [Workers](./packages/platform-cloudflare-workers) |\n| **데이터베이스** | [Prisma](./packages/prisma), [Drizzle](./packages/drizzle), [Mongoose](./packages/mongoose) |\n| **API/통신** | [HTTP](./packages/http), [GraphQL](./packages/graphql), [OpenAPI](./packages/openapi), [WebSockets](./packages/websockets), [Socket.IO](./packages/socket.io) |\n| **로직** | [DI](./packages/di), [CQRS](./packages/cqrs), [Validation](./packages/validation), [Serialization](./packages/serialization), [Config](./packages/config), [I18n](./packages/i18n) |\n| **메시징** | [Notifications](./packages/notifications), [Email](./packages/email), [Slack](./packages/slack), [Discord](./packages/discord) |\n| **운영** | [Metrics](./packages/metrics), [Health (Terminus)](./packages/terminus), [Redis](./packages/redis), [Queue](./packages/queue) |\n\n## 이어서 읽기\n\n- 📖 **[문서 포털](./book/README.ko.md)**: 아키텍처, DI, 패턴에 대한 심층 문서.\n- 🚀 **[시작하기](./book/beginner/ch02-cli-setup.ko.md)**: fluo와 함께하는 첫 15분.\n- 🧭 **[Canonical Runtime Package Matrix](./docs/reference/package-surface.ko.md)**: 공식 런타임/패키지 범위를 보여주는 기준 문서.\n- 💡 **[예제 앱](./examples/README.ko.md)**: 최소 설정부터 복잡한 RealWorld API까지.\n- 🛠️ **[CLI 가이드](./packages/cli/README.ko.md)**: 신속한 개발을 위한 `fluo` 명령어 마스터하기.\n\n## 커뮤니티\n\n- 💬 **[Discussions](https://github.com/fluojs/fluo/discussions)**: 질문, 아이디어, RFC, 쇼케이스 공유.\n- 🐛 **[Issues](https://github.com/fluojs/fluo/issues)**: 버그 제보, 문서 개선 제안, 기능 요청.\n- 🤝 **[기여 가이드](./CONTRIBUTING.md)**: 로컬 개발 환경, 검증 절차, PR 흐름.\n- 🛟 **[지원 안내](./SUPPORT.md)**: 용도에 맞는 지원 채널 안내.\n- 🔒 **[보안 정책](./SECURITY.md)**: 비공개 취약점 제보 정책.\n\n## 우리의 철학\n\n우리는 **동작 계약(Behavioral Contracts)**의 힘을 믿습니다. 이 저장소의 모든 패키지는 엄격한 안정성 규칙을 따르며, 사용 중인 런타임에 관계없이 백엔드가 예상한 대로 정확하게 동작하도록 보장합니다.\n\n- [릴리스 거버넌스](./docs/contracts/release-governance.ko.md)\n- [동작 계약 정책](./docs/contracts/behavioral-contract-policy.ko.md)\n- [기여하기](./CONTRIBUTING.ko.md)\n- [지원 안내](./SUPPORT.ko.md)\n- [보안 정책](./SECURITY.ko.md)\n\n---\n\u003cp align=\"center\"\u003e\n  TypeScript 커뮤니티를 위해 ❤️로 만들었습니다.\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffluojs%2Ffluo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffluojs%2Ffluo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffluojs%2Ffluo/lists"}