Skip to content

Latest commit

Β 

History

17,940 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Build Status Repository Score Apache-2.0 licensed

Table of Contents

We highly recommend you take a look at the documentation to level up.

Frontend


Nuxt

The Intuitive Web Framework, based on Vue.


Vue

πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.


Vuetify 0

πŸ‰ Headless building blocks for Vue, under the app's own UI library.


Pinia

🍍 Intuitive, type safe, light and flexible Store for Vue using the composition api with DevTools support.

Backend


tRPC

πŸ§™β€β™€οΈ Move Fast and Break Nothing. End-to-end typesafe APIs made easy.


Zod

TypeScript-first schema validation with static type inference.


Drizzle ORM

TypeScript ORM that feels like writing SQL.


PostgreSQL

PostgreSQL is a powerful, open source object-relational database system with over 35 years of active development that has earned it a strong reputation for reliability, feature robustness, and performance.

Infrastructure


Pulumi

Infrastructure as Code in any programming language.

Hosting & Domain Providers


Railway

Infrastructure, Instantly.


Namecheap

ICANN-accredited domain name registrar providing domain name registration and web hosting.

VSCode Extensions

Name Link
Better Comments https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments
UnoCSS https://marketplace.visualstudio.com/items?itemName=antfu.unocss
ESLint https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint
GitLens β€” Git supercharged https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens
GitHub Actions https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-github-actions
Azure Functions https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurefunctions
Powershell https://marketplace.visualstudio.com/items?itemName=ms-vscode.PowerShell
Oxfmt - Code formatter https://marketplace.visualstudio.com/items?itemName=oxc.oxc-vscode
Material Icon Theme https://marketplace.visualstudio.com/items?itemName=PKief.material-icon-theme
Vue - Official (Volar) https://marketplace.visualstudio.com/items?itemName=Vue.volar

Git configuration to enable symlinks

The projects make use of symlinks in the git project. On Windows, this may not work as expected without extra configuration. To configure git to create symlinks on windows, you need to enable the Windows "Developer Mode" setting, and also set the core.symlinks git feature using either of the following commands:

# Global setting
git config --global core.symlinks true

# Local setting
git config core.symlinks true

After applying this setting, you may need to reset your local branch to ensure the files get rewritten as symlinks. Note that this step is destructive and you will want to push any changes you have made prior to resetting your branch.

git reset --hard

Installing Dependencies

  1. Install Node Modules:
pnpm i
  1. Install PostgreSQL + PgAdmin.

  2. Add .env file according to .env.example in apps/web directory.

Checkout the deployment documentation for more information.

Development Server

  1. Build the packages to be used by the application:
pnpm build:packages
  1. Change to the app directory:
cd apps/web
  1. Start the development server on http://localhost:3000
pnpm dev

Production

Build the application for production:

pnpm build

Locally preview production build:

pnpm preview

Esposter is a pnpm workspaces monorepo. See monorepo tooling for workspace script orchestration and publishing boundaries. Packages are used directly by the nuxt application via workspace:*.

Workspace Graph

Workspace dependency graph

Each node's hue and tint are the role its edges give it, darkest at what the repo ships and lightest at what the rest of it stands on; the key is drawn into the image. Regenerate it from the repo root with:

pnpm graph:gen

Review Collector

Three branches, each written by exactly one actor, turn a stream of AI-authored commits into reviewed releases without anyone waiting on anyone. Sessions push to ai/queue as fast as they commit. The review collector β€” a GitHub Actions workflow fired by every ai/queue push and every CodeRabbit review β€” drains the open findings, ports the largest window under CodeRabbit's file cap onto develop, and replies on each thread with the pushed sha. A review that comes back clean merges develop to main itself, and the push to main runs the same collector, which fast-forwards develop back onto it. A window is budgeted in files and spent on findings, so a commit that claims nothing in it needs a reviewer carries that claim as a trailer, and the collector cuts it straight to main once the checks pass on it β€” rather than letting a folder sweep occupy a window it will return nothing from. An external contributor's pull request enters at the same door: opened against ai/queue β€” never main, whose only pull request is the release, since any other spends the slot on arrival β€” and squash-merged onto the queue by a maintainer, where the collector cuts it like any session commit. The design and its fine print live in the review collector docs.

flowchart LR
  S[AI sessions<br/>commit continuously] -->|git push| Q[(ai/queue)]
  Q -->|push event| C{{Review collector<br/>gates, drains, ports}}
  C -->|largest window<br/>under the cap| D[(develop)]
  C -->|express: claims no review,<br/>checks agree| M
  D -->|pull request synchronized| R[CodeRabbit review<br/>one slot per hour]
  R -->|review submitted| C
  C -->|fixes parked| F[(ai/review-fixes)]
  F -->|lead the next window| D
  D -->|review clean at the head| M[(main)]
  P[External contributor<br/>external/* branch, PR squash-merged] -->|one commit| Q
  M -->|push event| C
  C -->|fast-forward after the merge<br/>fold what landed there into the next window| D
Loading
Package Description Published
apps/functions Serverless Azure Functions backend β€” push notifications, webhooks, EventGrid β€”
apps/infra Pulumi infrastructure code and migration tools for Azure resources β€”
apps/web Main Nuxt web application β€” frontend, server routes, tRPC API β€”
packages/agent-console-server Agent console host β€” Claude Code sessions over a token-gated loopback WebSocket βœ“
packages/azure Azure wire conventions β€” OData filter clauses, entity key casing, service limits βœ“
packages/azure-mock Mock Azure service classes for local dev and testing βœ“
packages/configuration Shared ESLint, TSConfig, and tsdown build configurations β€”
packages/db Database connection utilities for Drizzle ORM, Azure Table, Blob, and WebPubSub β€”
packages/db-mock In-memory PGlite database factory for unit and integration tests β€”
packages/db-schema Drizzle ORM schemas and migrations (PostgreSQL source of truth) β€”
packages/genshin-persona Claude Code plugin β€” a Genshin character picked by birthday, replies spoken in its own cloned voice β€”
packages/keyframe-store Content-addressed version store β€” zstd keyframes and deltas over any backend βœ“
packages/parse-tmx Parser for Tiled Map Editor .tmx files βœ“
packages/shared Shared TypeScript types, utilities, and error classes βœ“
packages/shared-node Node-only shared tooling β€” benchmark reporting for vitest bench runs β€”
packages/virrun Ephemeral, in-memory virtual runner β€” runs a repo's real toolchain isolated βœ“
packages/vue-phaserjs Phaser game engine integration for Vue βœ“
packages/xml2js TypeScript rewrite of xml2js β€” XML ↔ JSON conversion βœ“
scripts The repository's own tooling β€” workspace graph, dependency report, sweep scans β€”

This repository is also a Claude Code plugin marketplace named esposter, declared in .claude-plugin/marketplace.json. Anyone adds it by the repository's GitHub name and installs a plugin by its marketplace name:

claude plugin marketplace add Esposter/Esposter
claude plugin install genshin-persona@esposter
Plugin What it does
genshin-persona Speaks as the Genshin Impact character whose birthday is nearest to today, in prose only, and reads each reply aloud, a sentence at a time, in the character's own cloned voice.

A plugin here is an ordinary workspace package, so it is formatted, linted, tested and dependency-bumped with everything else, and a merge to main is its release: an installed copy follows the marketplace on the next plugin update. How that is built, and what it deliberately does not do, is on the Claude interface page.

We welcome contributions from everyone and are committed to maintaining a friendly, safe, and welcoming community. Please see our Code of Conduct and Security Policy for more information.

This project is licensed under the Apache-2.0 license.

Releases

Used by

Contributors

Languages