From Vision to Production-Ready Architecture
It started with a simple but ambitious idea: build a high-end, open-source version of what we successfully created with the 11-11 project. We called it Dojo Genesis. The goal wasn't just to replicate something like the n8n-io self-hosted AI starter kit, but to create a truly autonomous development orchestrator. This meant the architecture had to be robust, scalable, and built for AI from the ground up.
[Image blocked: Dojo Genesis Welcome Screen]
The initial challenge was to define a tech stack that was both powerful and flexible. As a freelance developer, choosing the right tools is critical; it sets the foundation for the entire project's velocity and ceiling. We needed a stack that could handle real-time AI interactions, complex workflows, and a beautiful, responsive frontend, all while remaining open-source and community-driven.
The Build: A High-End, Composable Stack
After reviewing the constraints of our internal Zenflow automation platform and scouting various modern technologies, we settled on a composable, production-ready architecture. The core philosophy was to use best-in-class tools for each layer of the application, rather than relying on a monolithic framework.
Backend: We chose FastAPI (Python 3.11+) for its raw speed and asynchronous capabilities, which are perfect for handling AI model streaming. For orchestration, we went with Temporal.io to manage long-running, durable workflows—a significant step up from simple background tasks. This allows Dojo Genesis to execute complex, multi-step build processes without losing state. Supabase (PostgreSQL with pgvector) was a natural fit for the database, providing not just a relational store but also authentication and vector embeddings for future semantic search features.
Frontend: Next.js 16+ with the App Router was the clear winner for the frontend. Its server-side rendering capabilities, combined with the developer experience of TypeScript and the utility-first approach of Tailwind CSS, provided the perfect canvas for a modern UI. We also decided early on to incorporate Framer Motion for animations to give the app a premium, calm feel.
AI & Observability: The AI core is powered by the Manus API and Google Gemini, routed through LiteLLM to keep our options open. For observability—a non-negotiable in complex AI systems—we integrated Langfuse. This allows us to create a full "Harness Trace," a visual graph of every thought and tool use, which we later dubbed the "Trail of Thought."
Key Insights
- Orchestration over Automation: Simple automation scripts are fragile. A true orchestrator like Temporal provides the durability needed for complex, stateful AI tasks. This was a key decision that elevated the project beyond a basic starter kit.
- Observability is a Feature: Integrating Langfuse from the start wasn't an afterthought; it was a core feature. For any serious AI integration, being able to visualize the agent's reasoning is crucial for debugging and building trust.
- Composable is Scalable: By picking specialized tools for each layer (FastAPI for API, Next.js for UI, Supabase for DB), we created a system that is easier to scale, maintain, and upgrade independently. This is a vital lesson for any freelance developer building long-term projects.
Results: A Blueprint for Autonomous Development
The result of this initial phase was a comprehensive technical specification for a platform far more ambitious than a simple starter kit. We had a clear blueprint for an autonomous development orchestrator with a production-ready tech stack. This wasn't just a plan; it was a declaration of the craft and quality we intended to bring to the project. The next step was to bring this vision to life, starting with a design language that could match our technical ambitions.
Takeaway
Don't just accept the defaults. For any serious project, especially one involving AI integration, take the time to architect a stack that truly serves your vision. Moving beyond starter kits and thinking in terms of durable orchestration, observability, and composability can be the difference between a fun prototype and a scalable, production-ready platform.
