threepp
C++20 기반 크로스플랫폼 3D 라이브러리, 파이썬 바인딩 및 three.js 수준 API 제공
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기The multilingual CMS that AI can build and run safely, for Laravel.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A multilingual CMS for Laravel that people and AI agents can build and run safely.
[!WARNING] Lynx is not ready for production. It is under active development and has not had a release yet. APIs, database tables, configuration and package names will change, sometimes without a migration path, and the structure of this repository may change too (packages may move into their own repositories). Try it, read it and open issues, but do not build a site you depend on with it yet.
Lynx brings ProcessWire's page tree, runtime fields and selector API to Laravel 13, as a standalone site in a new app or added to one you already have, with languages as a core concept and every change going through validated actions that people, Artisan, MCP clients and AI agents share.
pt-BR, then pt, then the default), and templates know which is which./courses/delivery-8 and /pt/cursos/navegando-entrega-8. Renamed or moved pages keep redirecting from their old addresses.template=course, price<300, title%=Delivery, sort=-title, limit=10 finds pages by the values visitors see, in the current language.laravel/ai agent are generated from the action registry. The agent plans first and applies only what you approve.$lynx = lynx();
// Languages are added at runtime
$lynx->languages->update('default', ['name' => 'English', 'locale' => 'en']);
$lynx->languages->add('pt', 'Português', locale: 'pt-PT', fallback: 'default');
// Fields and templates
$lynx->fields->add('body', 'textarea', translatable: true, settings: ['format' => 'html']);
$lynx->fields->add('price', 'integer');
$lynx->templates->add('course', fields: [['name' => 'title', 'required' => true], 'body', 'price']);
// Pages
$page = $lynx->pages->new('course', '/courses/');
$page->name = 'delivery-8';
$page->title = 'Navigating Project Delivery';
$page->body = '<p>Only in English for now.</p>';
$page->price = 249;
$page->setLanguageName('pt', 'navegando-entrega-8');
$page->setLanguageValue('pt', 'title', 'Navegando pela Entrega de Projetos');
$page->save();
// Reading, with fallback per field
$lynx->language('pt', function () use ($page) {
echo $page->title; // Navegando pela Entrega de Projetos
echo $page->body; // the English body, as a fallback
echo $page->body->isFallback(); // true
echo $page->url; // /pt/cursos/navegando-entrega-8
});
// Selectors
$lynx->pages->find('template=course, price<300, sort=-title, limit=10');
// Every write can be previewed
$lynx->pages->delete('/courses/', dryRun: true)->changes->summary();
A page on template course renders resources/views/templates/course.blade.php:
<html lang="{{ lynx()->languages->current()->appLocale() }}">
<head>@hreflang($page)</head>
<body>
<x-lynx-menu name="top" />
<h1>@field($page->title)</h1> {{-- marks a fallback with its lang --}}
@field($page->body)
<p>{{ $page->category?->title }}</p> {{-- a single page reference, or null --}}
</body>
</html>
This repository is a monorepo: every package lives in packages/, and changes are made here. Each package is also copied to its own read-only repository (LynxCMS/core, LynxCMS/admin...) on every push, ready for Packagist.
| Package | What it adds |
|---|---|
lynxcms/core | Languages, fields, templates, pages, selectors, actions, routing and Blade helpers. |
lynxcms/contracts | Interfaces and data objects that modules depend on. |
lynxcms/admin | The Livewire admin: page tree, editor, drafts and revisions, schema screens, languages, roles, users and sign in. |
lynxcms/menus | Multilingual menus stored as pages, the menu editor and <x-lynx-menu>. |
lynxcms/media | Images and files on pages, with sizes made on demand. |
lynxcms/forms | Forms defined in code, rendered with Livewire, with submissions in the admin. |
lynxcms/seo | Meta and social tags, canonical links, JSON-LD and robots.txt. |
lynxcms/sitemap | XML sitemaps for every language. |
lynxcms/page-password | Password protected pages and branches. |
lynxcms/cache | Page cache, islands and fragment cache. |
lynxcms/static-site | Exports the whole site as static files, to host without PHP. |
lynxcms/mcp | An MCP server generated from the actions. |
lynxcms/ai | The built in agent and the translation provider, on the Laravel AI SDK. |
Requirements: PHP 8.5, Laravel 13, and PostgreSQL (recommended) or SQLite.
The workbench holds a small multilingual course site with the admin and demo users.
git clone https://github.com/LynxCMS/lynxcms.git && cd lynxcms
composer install
npm --prefix packages/admin ci && composer assets # the admin's CSS and JS, built locally
composer build # creates the demo data (and wipes it when run again)
composer serve # the site, and the admin at /lynx/pages
Opening the admin signs you in as the demo superuser. /demo/sign-in/editor and /demo/sign-in/courses show what other roles see, and every demo password is password.
composer require lynxcms/core lynxcms/admin lynxcms/media lynxcms/menus
php artisan migrate
php artisan lynx:install # asks for your superuser's name, email and password
Add the other packages you need from the table above. The installation guide covers the first superuser, the scheduler, shared hosting and developing against a local clone of this repository.
The documentation is at lynxcms.org/cms/docs. Its Markdown lives in docs/; the site is built with VitePress and served by Cloudflare, deployed from main.
To work on the documentation, run npm --prefix docs ci once, then npm --prefix docs run dev for a live preview. npm --prefix docs run build checks every link, as CI does.
The design decisions are recorded as ADRs in documentation/ADRs.md, and AGENTS.md describes the architecture and the rules for contributors, people and coding agents alike.
composer test # SQLite, in parallel
composer test:pgsql # PostgreSQL, a database per test process
composer test:all # SQLite, PostgreSQL and a table prefix, as CI runs them
composer check # Pint, Rector and PHPStan at level max
composer assets # build the admin's CSS and JS (run npm --prefix packages/admin ci once first)
Every change comes with tests, and every action is tested for its happy path, a validation failure, a rollback and a dry run. Read AGENTS.md before opening a pull request.
Lynx is in active development. Feedback and issues are welcome. Expect breaking changes until 1.0, and expect larger pull requests to need a discussion first while the design settles.
Lynx is open source under the MIT license.