Skip to content

Instantly share code, notes, and snippets.

View UrbanChrisy's full-sized avatar
💻
Always coding

Christian Mitchell UrbanChrisy

💻
Always coding
View GitHub Profile
@UrbanChrisy
UrbanChrisy / tanstack-vs-mastra.md
Created December 9, 2025 00:07
tanstack-vs-mastra

Quite familiar with the Mastra API so just leafing through the Tanstack AI docs for a quick comparison ahead of actually using it:

  • Mastra is clearly extending ai-sdk and is explicitly compatible with ai-sdk (including useChat), tanstack is replacing it, so bit more of a refactor if you're already on ai-sdk
  • I like tanstack's implementation of server vs client side tool implementation, the .server .client notation is interesting. It's a litttttle boilerplate-y to have a separate definition and implementation but I can see why they wanted to do it that way
  • Their useChat seems good
  • Mastra supports conditional tool approval, Tanstack has tool approval as a boolean
  • That being said, Tanstack's tool approval flow is way less complicated DX-wise, very nice
  • Tanstack supports parallel tool calling, Mastra does not. This is very interesting, because now the LLM will need to decide if it wants multiple tools independently from each other or in sequence. I'd love to see how LLMs actually perform when doing

Looti Platform Architecture Plan

Overview

The Looti platform enables a marketplace where:

  • Mini app developers (like Alex) can integrate rewards into their apps using the Rewards SDK
  • Game developers (like Bob) can monetize their games using the Game Dev SDK
  • End users enjoy games and earn rewards through the Looti ecosystem

Core Architecture Principles

@UrbanChrisy
UrbanChrisy / schema.graphql
Created June 28, 2025 21:01
Expo Graphql Schema
schema {
query: RootQuery
mutation: RootMutation
}
directive @deprecated(
reason: String = "No longer supported"
) on ARGUMENT_DEFINITION | ENUM_VALUE | FIELD_DEFINITION | INPUT_FIELD_DEFINITION
directive @include(
{
"id": "build",
"name": "Local Build",
"description": "Local build workflow for the application",
"type": "BUILD",
"trigger": ["MANUAL"],
"env": {
"ENV": "development"
},
"steps": [
/**
*
* ▬▬ι═══════ﺤ -═══════ι▬▬
* Created by Chris on 16/04/20.
* ▬▬ι═══════ﺤ -═══════ι▬▬
*
*/
import CleaveJs from "cleave.js";
// eslint-disable-next-line import/no-unresolved