Inspiration
Codex has an official Marketplace and also lets users add their own Marketplaces. Although custom Marketplaces are useful for team development, they are rarely used. However, we believe Local Marketplaces have enormous potential to accelerate collaborative development. We wanted to create an app that would help everyone enjoy Local Marketplaces more and inspire them to create more and more Plugins. We therefore represented a collection of Local Marketplaces as a mall inside the app, with each Marketplace presented as a store that users can explore, giving the experience a sense of warmth and making Local Marketplaces feel more approachable.
What it does
- Automatically displays Local Marketplaces registered in Codex as stores in a mall
- Provides an isometric 2D RPG-style interface where the character moves to the location the user clicks
- Supports the complete flow of entering a store, exploring its interior, and returning to the mall through the exit
- Displays Plugins as clerks and presents their names, descriptions, and icons through conversations
- Shows whether installed Plugins are enabled or disabled and lets users switch their state from within a conversation
- Continues displaying available data even when some Marketplace or Plugin information cannot be loaded
- Displays an empty mall when no Marketplaces are registered and provides manual reloading
How we built it
- Desktop app: Tauri v2
- Frontend: React 19, TypeScript, and Vite
- 2D rendering: PixiJS 8
- Styling: Tailwind CSS 4
- Local data loading and Plugin control: Rust
- Testing: Vitest, React Testing Library, and Cargo test
React and PixiJS handle the mall's visuals and interactions, while Rust safely reads local files and communicates with the Codex app-server. Marketplace files are treated as read-only, and changes to whether a Plugin is enabled or disabled are made through the Codex app-server.
A desktop app felt like the right choice because we wanted to place a compact 2D RPG-style experience on the user's screen. We chose Tauri because its Rust foundation works exceptionally well with Codex for rigorous implementation and testing. PixiJS is an essential library for building the game-like interface.
Challenges we ran into
- The project began as a browser app, but we worked hard to recreate the feel of a 2D game while still delivering the minimum functionality needed for an RPG-like experience
- We struggled with how to translate the structure of Marketplaces, Plugins, and their descriptions into a 2D world. Setting the experience in a near-future shopping mall ultimately let us express the nested structure of multiple Marketplaces
- Users type with a keyboard while working in the Codex App, but typically use a mouse when interacting with this app. We therefore made character movement feel like a natural extension of mouse interaction
- A shopping mall can be embellished endlessly, so we searched for a level of visual detail that fit the time available
- Correctly layering objects in front of and behind one another in an isometric view required careful, fine-grained adjustments
Accomplishments that we're proud of
- Marketplace information such as icons, names, and descriptions appears in conversation bubbles when talking to clerks. This makes users curious about what the next clerk knows and encourages them to keep talking to characters
- A Plugin icon and name appear above each clerk, with a generated fallback when no icon exists, so users can understand the available Plugins at a glance
- The outdoor map expands as more Local Marketplaces are added, increasing the number of stores and making users want to add even more Local Marketplaces
- Stores grow as the number of clerks—and therefore the Plugin selection—increases, creating an experience that feels a little like a growth simulation game
- Users can enable or disable a Plugin while talking to a clerk through the Codex App Server
- Because it is packaged as an app, no installation-time configuration is required. Users can simply launch it
- Each clerk is colored according to its Plugin ID
- Clerks move randomly, making them feel more alive
What we learned
- We learned how to choose between GPT-5.6 Sol and Terra. Planning with GPT-5.6 Sol seems especially valuable for completing many tasks in a short period. Terra appeared well suited to balancing a broad workload, but because this project was an intensive short sprint, we eventually used Sol for everything
- We gained a detailed understanding of the information available in a Local Marketplace
- We learned that the Codex App Server can control whether Plugins are enabled or disabled
- Because English is not our strength, we generally wrote documents in Japanese and then translated them into English. We also created the
translate-documentsskill for that work - We used SpecKit to keep development orderly and adopted an SDD workflow. The documents under
specs/are SpecKit SDD documents - We maintained a detailed log of Codex usage in
USE_CODEX.md - We learned that Codex may use a locally installed Ollama model during translation
What's next for Local Marketplace Mall
- Display more detailed Plugin information, such as full descriptions and skill lists
- Enrich store interiors with counters, plants, posters on the walls, and other furnishings
- Add stores in a variety of shapes
Built With
- chatgpt
- pixi.js
- rust
- speckit
- tauri
- typescript
Log in or sign up for Devpost to join the conversation.