Powrót do bloga
Architektura
5 min czytania

Jeden endpoint. Każda powierzchnia.

Jedna definicja na funkcję. Formularz web, polecenie CLI, narzędzie MCP, ekran natywny, zadanie cron - wszystko naraz. Bez duplikacji.

Każda funkcja potrzebowała formularza web, polecenia CLI, narzędzia MCP dla agentów AI, czasem ekranu mobilnego. Ta sama walidacja Zod, to samo i18n, ta sama obsługa błędów - tylko inaczej ubrana. Więc zbudowałem next-vibe: framework, w którym piszesz jeden plik definition.ts na funkcję i renderuje się jako wszystkie jednocześnie.

Zasila też unbottled.ai - 119 modeli AI, kontrolowana przez użytkownika cenzura. Ta sama baza kodu działa jako aplikacja web Next.js, serwer dev TanStack/Vite, aplikacja mobilna React Native, CLI, serwer MCP, system cron i magistrala zdarzeń WebSocket. Jedna definicja endpointu. Bez duplikacji.

Typy muszą się zgadzać. Bez wyjątków.

To nie są preferencje stylistyczne. To reguły architektoniczne wbudowane we framework.

Reguła jest surowa: typy muszą być całkowicie zgodne. Jeśli twoje typy są błędne, twoja architektura jest błędna. Zbudowaliśmy vibe check do egzekwowania - Oxlint + ESLint + TypeScript równolegle, z niestandardowymi wtyczkami dla reguł specyficznych dla projektu.

brak any

Zastąp prawdziwym typowanym interfejsem. Jeśli sięgasz po any, twoja architektura ma dziurę.

brak unknown

Ta sama reguła. unknown to tylko any z dodatkowymi krokami. Zdefiniuj typ.

brak gołego object

Gołe object jest bez znaczenia. Napisz kształt, którego naprawdę oczekujesz.

brak as X

Asercje typów to kłamstwa dla kompilatora. Napraw architekturę zamiast tego.

brak throw

Użyj ResponseType<T> z success(data) lub fail({message, errorType}). Błędy to dane, nie wyjątki.

brak zakodowanych na stałe stringów w JSX

Checker wykrywa nieprzetłumaczone literalne stringi. Każdy string potrzebuje klucza tłumaczenia.

Przypadkowy silnik grafu

Bot tradingowy, który nie może handlować

Vibe Sense zaczął jako bot tradingowy. Nigdy nie wykonywał zleceń - tylko obserwował ceny i wyzwalał sygnały. Kiedy go porzuciłem, architektura potoku przeżyła: źródła danych łączą się ze wskaźnikami, wskaźniki zasilają ewaluatory, ewaluatory wysyłają sygnały, sygnały wyzwalają akcje. Każdy węzeł to endpoint HTTP.

"Każdy węzeł w grafie to tylko endpoint HTTP - możesz zrobić curl do dowolnego kroku w potoku, testować go w izolacji lub wywoływać z agenta AI. Silnik grafu to harmonogramista, nie DSL."

Ponieważ każdy węzeł to standardowy endpoint, są indywidualnie testowalne przez CLI, dostępne dla agentów AI przez MCP i buforowane z tą samą infrastrukturą co wszystko inne. Silnik grafu nie wymyśla własnego języka. Harmonogramuje endpointy.

Zobacz na GitHubie
git clone https://github.com/techfreaque/next-vibe