BeamNG.Earth
BeamNG.drive용 1:1 비율 실시간 지구, 실제 고도·위성 이미지·부동 원점·보조 서버에서 LOD 스트리밍
테이블탑 RPG용 규칙 엔진 및 캐릭터 생성기로 규칙을 커스터마이즈하고 캐릭터를 만들며 캠페인을 관리합니다
A programmable ruleset engine and character creator for tabletop RPGs. Customize rules, build characters, and manage campaigns.
게임TypeScript · JavaScriptGitHub @PhilippeChab온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A programmable ruleset engine for tabletop RPGs.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A programmable ruleset engine for tabletop RPGs.
Original idea and core architecture implemented by myself, the rest was done by AI agents.
• Bun v1.3+
• Docker with Compose for PostgreSQL and local email
1. Clone the repository and install dependencies
2. Create local environment files from the supplied examples
3. Start the database and seed it
The reset command deletes and recreates the configured development database.
Verify that .env points to the local arkyvree_dev database before running it.README 전문 보기 ↗A programmable ruleset engine for tabletop RPGs.
Original idea and core architecture implemented by myself, the rest was done by AI agents.
Hosted app · Help · Changelog · Contributing · Issues · Security · Support on Ko-fi
git clone https://github.com/PhilippeChab/arkyvree.git
cd arkyvree
git switch develop
bun install
cp .env.example .env
cp .env.test.example .env.test
bun dev:db
bun dev:mail
bun dev:db:reset
The reset command deletes and recreates the configured development database.
Verify that .env points to the local arkyvree_dev database before running it.
bun dev
The app will be available at http://localhost:5173, the API at
http://localhost:8000, and the Mailpit inbox at http://localhost:8025.
bun dev runs the frontend, API, and background worker. Seeded local accounts
include [email protected] with password LocalTest123!; use them only in
the disposable local setup.
Email/password development works without production service credentials. Google sign-in and uploads require their own optional configuration; leave them unconfigured unless you need to work on those features. The example environment leaves monitoring credentials empty.
# Start test database and seed it
bun test:db
bun test:db:reset
# Run unit/integration tests
bun run test
# Run E2E tests
bunx playwright install chromium
bun test:e2e
# Run everything
bun test:all
Tests use the separate local arkyvree_test database on port 5433.
test:db:reset deletes and recreates that database; bun run test runs on copies
of it, the other test commands on it directly, and Playwright on a copy of its own.
Never point .env.test at production. Playwright serves the built client and the
API on port 8010.
See CONTRIBUTING.md for focused checks.
client/
src/
components/ # Shared UI by domain (auth, characters, common, contributors, customization, icons, invites, layout, notifications, onboarding, rulesets)
contexts/ # React contexts (theme, snackbar, websocket)
hooks/ # Shared hooks (useIsMobile, useListParams, useListboxQuery, useFormSync, …)
lib/ # The query client, shared queries and keys, formatters, validation rules
pages/ # Pages by domain, each with its own components, hooks and queries
services/ # RPC client and its ApiError
stores/ # What the browser keeps: Zustand stores (auth, user preferences, dirty forms), storage guards
theme/ # The theme: palette, components' looks, animations, global styles
server/
main.ts # The web server; worker.ts, the background worker
environment.ts # Every environment variable the server reads
routers/
application.ts # The app: middleware, the error envelope, the routes
api/ # API routes organized by domain
validation.ts # Shared Zod schemas (params, pagination, sanitized text)
authentication/ # Auth routes: signedOut/, then signedIn/ behind the session
static.ts # Static file serving + SEO (the shell: PageTemplates.ts)
ws.ts # The websocket; health.ts, the health probe
services/ # One folder per service, laid out like routers/api
activities/ # Activity log and the notifications it sends
attachments/ # Uploaded images (avatars, portraits)
authentication/ # Sign in / up, demo, account, linked accounts
campaigns/ # Campaign, player, invite, campaign character services
characters/ # Character, inventory, levels, modifiers, contributors, sharing services
levels/ # Level-up wizard (slot queries, pick queries, finalize): reads, asks the engine, writes
dashboard/ # Dashboard statistics
exports/ # PDF exports
notifications/ # Notifications
policies/ # Authorization policies
rulesets/ # Ruleset and ruleset entity services (feats, spells, classes, etc.)
customization/ # Modifiers, requirements, target paths
repositories/ # Database access layer (Drizzle ORM), in folders by domain; concerns/, the mixins they include
cache/ # In-memory cache (a ruleset's rows, its COW data, its target paths)
cow/ # Copy-on-write's writes: the copy of an inherited entity, the rows a change writes
database/ # Database connection, transactions, request-scoped query cache, job queue
middlewares/ # Session, validation, rate limiting, request logging, demo gate
errors/ # Error classes
jobs/ # Background jobs run by the worker (PDF export, emails, cleanup)
emails/ # Email sending (templates in emails/)
storage/ # S3 attachment storage
websockets/ # Server events pushed to the client
engine/ # The ruleset engine: computes a ruleset's rules over the rows it's given, reads and writes nothing
index.ts # Its one entry, Engine: the handles the server, the seeders and the codegen ask
api/ # Engine and its handles, each bound to a view and what it's about, asking the ruleset's module
core/ # Machinery: modifiers, requirements, the path language, the ruleset view, COW data, the module's contract
rulesets/dnd3.5/ # D&D 3.5e: the character, its components by domain, its entities, level-ups and printed sheet
lib/ # What the engine and the server share: the mixins (include)
content/
core/ # What every ruleset's content is written with: the customization builders, the seed types they share, a package's and a test character's shape
dnd3.5/ # The 3.5 content, data: its builders, its hand-written rows, the generated books, its packages, its test characters
codegen/
dnd3.5/ # The SRD scraper and generator: reference files, and the tools that write content/dnd3.5/generated
database/
packages/ # The content packages' runner and registry: each base rules' packages, seeder and test characters, which a database gets
seeders/ # What writes content to the database: core/ (ContentSeeder, a seeder's contract, and the steps every ruleset's content seeds alike), dnd3.5/ (its seeder)
drizzle/
schema.ts # Database schema (and relations.ts), pulled from the database
database.ts # What a query runs on: the schema with its relations, Db, Transaction
NNNN_*.sql, meta/ # Migrations, generated by drizzle-kit
shared/ # Types and pure helpers shared by the client, the server and the database packages
vocabulary/
dnd3.5/ # The 3.5 vocabulary, data only: its lists, labels, tables and bounds, which the engine, the content, the codegen and the seeders read
emails/ # Email templates (React Email)
scripts/ # Database scripts (reset, migrate, seed; db/seeds/, the dev and test data: users, each base rules' test characters) and ops scripts (prod diff, impersonate, validation)
docs/ # Developer docs
help/ # The user-facing help, linked from the app
tests/
routers/ # API route tests, through the typed client
services/ # Service-level tests
engine/ # The engine: its machinery, its operations, the 3.5 module's characters, level-ups and sheets
cache/ # Cache tests
cow/ # Copy-on-write's server part: the views it composes
seeds/ # The seeders, the seeded content, the package runner, the test data
codegen/ # The codegen, mirrored: its core's tools, each ruleset's parser tools
jobs/ # Background jobs
emails/ # The email service and its templates
middlewares/ # Rate limits, error wrapping
shared/ # Shared code, and its enums against the schema
vocabulary/ # A ruleset's vocabulary
scripts/ # The database scripts' guards, the prod diff
lint/ # The repo's own lint rules, and the docs that name them
client/ # Client logic that needs no browser
e2e/ # Playwright E2E tests
fixtures/ # Playwright's setup and auth fixture, the PDF bundle check's document
support/ # Shared test helpers, one module per topic, a ruleset's own in a folder of its name (dnd3.5/)
3-layer backend: Routers -> Services -> Repositories
Ruleset system: Rulesets support COW forking (edit inherited content without modifying the parent), extensions, publishing, and multi-contributor collaboration. See docs/rulesets.md.
Ruleset engine: engine/ computes every ruleset rule over the data the server reads, through one entry, Engine (engine/index.ts): a handle bound to a ruleset's view and to what its rules are about (Engine.for(scope).character(input).describe(…)), whose operations take a character's rows or a request's body, and answer descriptions, plans of the writes the server makes, or refusals. A ruleset's module (engine/rulesets/dnd3.5/) builds a complete character state from its rows, reading its fields and evaluating modifiers and requirements, and projects level-ups before they're saved.
Read CONTRIBUTING.md before opening a pull request, and target
develop. Community participation follows our Code of Conduct.
Use GitHub issues for questions
and bug reports. Report security issues privately as described in SECURITY.md.
The code is under the Elastic License 2.0: you may use, copy, modify and distribute it, but not provide it to others as a hosted or managed service. The game content from the System Reference Document is Open Game Content under the Open Game License 1.0a.