Task: Develop and launch the website
Develop and launch the website
Develop and launch haih.site as a product website for the new HAIH concept: a minimal architecture that grows with requirements, featuring live showcases ranging from a static site and standalone API to a full-featured e-commerce store.
Goal
Develop and launch haih.site as the primary public website for the new HAIH concept.
The website should not simply describe technologies or the existing engine, but rather visibly explain the new AI-assisted development approach to the end user and provide working showcases directly on the site, while the separate GitHub case library is still being formed.
What We Want to Convey
Core idea:
Do not start a project with a heavy engine. Start with a minimal architecture that solves the current task, and add the next layer only when it is truly needed.
HAIH should help humans and coding agents evolve a project inexpensively: from a few static files to a complex typed application.
The main value is not the number of out-of-the-box features, but the cost of adding the next required feature.
If HTML/CSS/JS is enough for the task, you don't need React, a database, GraphQL, or an application server.
If there is a need to store data, persistence is added.
If data needs to be provided to programmatic clients, an API appears.
If the API needs a frontend, a typed client integration is added.
If users are needed, auth is added.
If a full commerce product is needed, the architecture grows into it, but the project shouldn't pay that price prematurely.
Positioning
HAIH should not currently be presented as yet another large full-stack framework or as a catalog of mandatory modules.
A more accurate model:
minimal foundation + compatible architectural principles + best practices + complete vertical cases for AI-assisted development.
In the long term, this might be more of an architectural protocol rather than a single runtime: different projects use different parts of the stack, but remain predictable and understandable to coding agents.
Key principle:
Use the cheapest architecture that completely solves the requirement.
Each new dependency must be justified by a user-facing feature.
Who the Website is For
First and foremost:
- developers actively using Claude Code, Codex, Cursor, and other coding agents;
- solo developers and small teams who need to launch and modify products quickly;
- developers tired of the excessive complexity of modern full-stack boilerplates;
- people who want a self-hosted/open-source foundation and the ability to tailor the architecture to their needs;
- authors of their own solutions and cases who can later share them with the community.
The website must be clear to someone who is hearing about HAIH for the first time and knows nothing about the history of the existing haih-net/agent.
Main Marketing Promise
Do not promise "we have already implemented everything."
Show:
Start with almost nothing. Add architecture only when your requirements demand it.
And the second promise:
Give your coding agent clear contracts, verified examples, and minimal context β and it will be able to evolve the project along with your requirements.
After exploring the website, the user should understand that:
- they are not being asked to adopt a massive stack upfront;
- a simple project can genuinely remain simple;
- as requirements grow, proven paths for scaling up exist;
- solutions are designed so that an AI agent can easily understand, modify, and verify them;
- showcases are not toy screenshots, but working examples of architectural transitions;
- the user and the AI adapt the final implementation to the specific task, rather than being forced to install a universal module.
Why This Matters for AI
The website should explicitly explain Agent Experience (AX).
For a coding agent, the following are crucial:
- the minimum necessary context;
- a predictable project structure;
- locality of changes;
- explicit dependencies;
- absence of manual contract duplication;
- typed component connection points;
- clear compiler/runtime errors;
- a reproducible way to verify results;
- ready-made cases from which an architectural principle can be transferred to a new task.
End-to-end typing in complex applications should be shown as a feedback loop for AI, for example:
Prisma schema
β
Prisma types
β
Pothos
β
GraphQL schema
β
GraphQL Codegen
β
Typed frontend
β
tsc / tests
However, it must not create the impression that this entire stack is mandatory for every project.
Showcases as the Central Part of the Website
Until a separate showcase/cases database on GitHub is established, implement the foundational showcases directly on haih.site.
Showcases should demonstrate not just a list of technologies, but various sensible architectural states and transitions between them.
Each showcase should answer the questions:
- what the task was;
- why the current architecture is sufficient or no longer sufficient;
- what new requirement emerged;
- what exactly was added;
- why nothing more was added;
- what the project structure looks like;
- what dependencies were introduced;
- how to verify the result;
- what parts of this case an AI can transfer to another project.
Showcase 1. Static Website
Task: corporate website / landing page / documentation page without dynamic data.
Minimal architecture:
HTML / CSS / JS / assets
+ Docker Compose
+ Traefik
No database, GraphQL, auth, React, or application server.
Main thesis: if static is enough, an engine is not needed.
Demonstrate how cheaply AI can modify such a project.
Showcase 2. Standalone API
Task: a service that provides a programmatic API and does not need its own frontend at all.
Present the API-first project as an independent final state rather than an unfinished web application.
Evolution options:
API only
or, if persistence is needed:
PostgreSQL
+ Prisma
+ API
Show that UI is not a mandatory layer of the system.
Showcase 3. Static Website + Small Dynamic Feature
Task: for example, a feedback form.
Do not turn the entire website into a full-stack application just for this.
Show the minimal transition:
static site
+ small endpoint/service
If messages can be sent directly to an external service, do not add a database.
This is an important case against overengineering.
Showcase 4. Website with Persistence
Task: data now needs to be saved: submissions, a catalog, records, or another domain object.
Add:
PostgreSQL
+ Prisma
Show Prisma as the source of a typed data model and explain why persistence appeared precisely at this stage.
Add API and a complex frontend only if the task truly demands it.
Showcase 5. Typed API on Top of Data
Task: saved data needs to be consumed by multiple clients, or the frontend must work with a full API.
Add, for example:
PostgreSQL
+ Prisma
+ Pothos
+ GraphQL
Show the connection between Prisma and GraphQL types and the minimization of manual glue code.
Showcase 6. Full-Featured Typed Web Application
Task: an interactive frontend appears, working with its own API.
Architecture evolves to:
PostgreSQL
+ Prisma
+ Pothos / GraphQL
+ GraphQL Codegen
+ client
+ UI
Show the end-to-end contract database β server β API β frontend and automatic verification of changes by the compiler.
Do not position a frontend framework as mandatory. Choosing React or another solution should follow from the task requirements.
Showcase 7. User Application with Authorization
Task: personal data, accounts, or restricted operations appear.
Only now add auth/session/permissions.
Show that authorization is not mandatory infrastructure for every website, but a response to a specific requirement.
Demonstrate passing identity/permissions through the API and UI without breaking the previous architecture.
Showcase 8. Full-Featured E-Commerce Store
Task: a real, complex product.
The necessary domain parts should appear, such as:
- product catalog;
- categories;
- product card;
- search/filtering, if justified by requirements;
- shopping cart;
- user/buyer;
- checkout process;
- orders and their statuses;
- administrative product and order management;
- images/files;
- payment integration as a separate architectural step;
- necessary background processes/notifications.
This showcase should demonstrate that the minimalist approach is not limited to landing pages: from the same system of principles, you can evolutionarily build a full-fledged production-oriented application.
At the same time, it is important to visually/architecturally show the origin of complexity: every new layer exists because a specific business requirement demanded it.
Showcasing Not Only States, but Transitions
It is desirable to link showcases into a visual graph rather than a linear ladder.
Example:
ββ small endpoint
static website ββββ€
ββ persistence β API β typed web app β auth β commerce
API service ββββββββββ persistence
ββββββββββββββ agent/client integrations
Core thought: there is no mandatory final stack.
The user can stop at any point if it completely solves the task.
What Each Showcase on the Site Should Do
Do not limit it to a text description.
Whenever possible, each showcase should be a working example:
- open the result;
- view the architecture/structure;
- see the components used;
- see the diff or sequence of changes relative to the previous state;
- read a brief explanation of the architectural decision;
- see the verification method;
- receive instructions/prompts/context with which a coding agent can reproduce or adapt the solution.
In the future, these materials can be moved to/synchronized with separate GitHub cases.
Proposed Main Page Structure
Hero
Explain HAIH's differentiator very briefly.
Not "yet another AI framework", but the idea of a minimal evolutionary architecture for development alongside coding agents.
The main CTA should lead to working showcases.
Problem
Modern boilerplates/frameworks often force a project to pay for complexity upfront.
AI additionally pays for it with context and the number of connections it must understand.
Principle
Start minimal. Add only what the next requirement needs.
Show visual evolution from static to complex application.
Live Showcase
The central section of the site featuring the cases described above.
AI / AX
Explain why the architecture is specifically optimized for coding agents: context, locality, types, compiler feedback, tests, cases.
Best Practices / Cases
Explain the knowledge base model: do not impose a single final implementation, but gather verified architectural solutions and complete vertical changes.
Open Source / Participate
Explain the future community loop:
requirement
β minimal solution
β verified case
β AI reuse
β new projects
β new cases
Invite users to try the approach, adapt cases, and publish their own solutions.
What Not to Promise Right Now
- do not position HAIH as a ready-made universal SaaS platform;
- do not emphasize sales/monetization;
- do not promise a massive marketplace of pre-built modules that doesn't exist yet;
- do not create the impression that Prisma/Pothos/Apollo/React are mandatory;
- do not carry over the entire feature list of the old
haih-net/agentinto the new product; - do not claim that a single correct architecture exists;
- do not overload the homepage with technical details before the user understands the value.
Result Criteria for the Website
A new visitor with no prior knowledge of HAIH's history should understand after browsing the site:
"I can start with a minimal project. When a new requirement appears, AI can take a verified case, add only the necessary architecture, and verify the result. I don't need to accept a massive framework in advance and drag functionality into my project that I don't have."
After grasping this idea, the user should be able to immediately open a live showcase, see it applied to a real project, and get enough information to try a similar approach on their own.
Dissemination Goal
At the current stage, optimize the website for understanding the concept, experimentation, and participation, rather than sales.
Desired cycle:
visitor
β understands the principle
β views a live case
β tries the approach
β adapts the solution with AI
β shares their own case/best practice
β the next user gets another verified path
The website should become the first public demonstration of this model and temporarily serve as a showcase/base for key cases until a fully fledged open case catalog is established.
ΠΠΎΡΠΊΠ»ΠΎΠ³ΠΈ
Progress: from application engine to engineering solutions base for AI
During further design, the general HAIH paradigm was refined and verified against how it already manifests in the current haih.site, specifically on the /solutions page.
1. Reusing an application engine is not required
The core hypothesis has become more radical: in the era of coding agents, a significant portion of the value of a large application framework/engine can shift from ready-made universal code to reusable engineering knowledge.
New schema:
requirements
+ best practices
+ showcases
+ evidence
+ mature primitives
β
coding agent
β
project-specific implementation
That is, reuse remains, but its object is increasingly not a universal implementation of the business and application layer, but a proven way of solving a problem.
2. The boundary does not lie between "ready-made" and "custom-built"
There is no goal to rewrite PostgreSQL, OpenSSL, Sharp, and other mature specialized primitives. However, integration frameworks should be evaluated based on the capabilities actually used.
The Next.js example: the task is not to create a custom analogue of Next.js, but to determine which of its features the project actually requires β routing, layouts, build, SSR/SSG, image processing, etc. If a specific set of requirements can be implemented cheaper and more transparently via React + Vite + specialized primitives + a small project-specific glue code, a large framework ceases to be mandatory.
The key effect of coding agents: the cost of writing and maintaining small specialized glue code has dropped sharply. Therefore, the old rule "do not write your own because you will have to maintain it" can no longer be applied without comparing it to the cost of someone else's abstraction model, upgrade path, and compatibility constraints.
3. React is an example of a dependency with high architectural leverage
It is specifically clarified that minimalism does not mean the mechanical exclusion of framework/library dependencies.
React fits the new model well: with a comparatively compact conceptual surface, it removes a large volume of complex universal work regarding declarative UI, state, composition, and rendering, without imposing the persistence/API/deployment architecture of the entire application.
A useful criterion:
How much useful complexity does the dependency take away from the project, and how much foreign complexity does it force the project to accept?
Thus, HAIH should not optimize dependency count. It is necessary to optimize architectural leverage and total friction.
4. /solutions is already the inception of a knowledge layer
The current haih.site/solutions page effectively implements part of this model. It separates application, development/build, production runtime, and optional deployment services, and describes technologies through the capabilities they perform and their dependencies.
The solution status model is particularly useful: In use, Optional, Configured, Connected; verification in progress, Implementation open, Future branches. This allows the coding agent to see not only the solution, but also the reliability status of the knowledge regarding it.
The page also leaves future capabilities open β standalone API, persistence, typed API/data contracts, identity/authorization, payments, formal solution composition β without prematurely assigning a mandatory technology to every requirement.
5. The next step is to invert the solutions catalog
Currently, /solutions primarily answers the question: "What is used in haih.site and what work does it perform?"
The next level should allow going from a requirement to a composition of solutions:
Requirement
β
Capabilities needed
β
Trade-offs
β
Solution composition
β
Implementation
β
Verification
β
Evidence
Example: responsive images β on-demand transformation β Sharp β expensive deterministic computation β cache β Varnish/CDN/other suitable implementation.
Importantly, a showcase is not obligated to prescribe a specific stack. The agent must be able to take engineering experience and adapt it: for example, not installing Varnish if the required caching is already provided by an existing CDN.
6. Possible evolution: machine-readable solution graph
A promising direction is a machine-readable description of solutions: what capabilities a solution provides, what prerequisites it requires, what verification checks confirm correctness, and with which solutions it is compositionally compatible.
Then HAIH can be not a runtime framework present in every production project, but an engineering knowledge system from which a coding agent synthesizes the architecture of a specific project based on requirements.
Current formulation of the direction
Not a "new modular engine", but a system for reusing engineering experience:
Libraries provide primitives. Cases provide engineering experience. Agents synthesize the application. Evidence verifies it.
haih.site/solutions can already be considered the first practical layer of this system; showcases should add complete vertical transitions from requirement to verified result.
Progress: Testing the haih.site architecture on a real project
We studied the current implementation of haih.site and refined the criterion for architectural minimalism. An important takeaway: minimalism cannot be measured by the number of technologies or dependencies. The goal is to minimize the total friction of development, operations, and future changes, including the human and AI feedback loop.
Development stack
React/Vite are not inherently redundant, even for a site that primarily serves static content in production.
Vite is justified by a real development requirement: a fast edit β HMR β browser feedback loop without manual user actions like reloading or resetting the cache.
React can be justified by its component model and the locality of changes in a growing UI. For AI, this also provides a predictable, well-known code structure.
Refined principle:
Do not minimize the number of dependencies. Minimize friction. Each added technology must reduce total complexity more than it increases it.
Production serving: baseline
After the build, npm run start was executed and a synthetic benchmark was performed:
ab -c 1000 -n 100000 http://localhost:3000/
Result:
- 100,000 requests;
- concurrency 1000;
- 0 failed requests;
- 11,515.51 req/s;
- p50 27 ms;
- p95 37 ms;
- p99 67 ms;
- max 8,658 ms.
Typical latency was low, but there were occasional large outliers.
Docker + Traefik + Varnish
Next, the same workload was run through a production-like chain:
client β Traefik β Varnish β app
Benchmark:
ab -c 1000 -n 100000 http://localhost:8088/
Result:
- 100,000 requests;
- concurrency 1000;
- 0 failed requests;
- 15,871.02 req/s;
- p50 62 ms;
- p95 74 ms;
- p99 88 ms;
- max 129 ms.
Compared to the direct app server, throughput increased by approximately 38%, and the latency distribution became significantly more stable: the multi-second tail disappeared.
Origin behavior
docker stats showed that during the 100k requests, the app practically did not participate in handling repeated requests.
Before the test, the app had approximately:
NET I/O 9.56kB / 126B
MEM 25.73 MiB
After:
NET I/O 10.9kB / 3.68kB
MEM 26.16 MiB
Meanwhile, Traefik handled about 370MB / 394MB, and Varnish handled 41MB / 328MB.
This confirms a useful architectural boundary: cacheable delivery traffic stops at Varnish and almost never reaches the application layer.
Why the project needs Varnish
A critically important requirement: the site uses dynamic image resizing/processing via Node + Sharp.
Without a cache, a repeated request for the same image variant potentially repeats an expensive cycle:
request
β Node
β Sharp
β decode
β resize
β encode
β response
With Varnish, computation happens on a cache miss, after which the identical variant can be served from the cache without repeating Sharp's work:
request
β Varnish
ββ HIT β response
ββ MISS β Node β Sharp β result β cache β response
Therefore, Varnish is justified not merely by increasing static HTML RPS, but by isolating the application layer and caching the results of expensive, repeatable computations.
Architectural conclusion
The current stack should not be evaluated as a list of technologies:
React + Vite + Node + Sharp + Varnish + Traefik + Docker
but rather as a set of solutions for specific requirements:
- Vite β fast development feedback loop;
- React β UI composition and change locality;
- Node + Sharp β on-demand preparation of images in the required size/format;
- Varnish β avoiding repetitive processing and preventing cacheable traffic from reaching the origin;
- Traefik β routing/deployment boundary;
- Docker β reproducible runtime/deployment.
A good criterion for each architectural component:
What measurable cost does this component reduce, and does the benefit outweigh the cost of the component itself?
This refinement should be used when developing HAIH showcases and best practices: do not impose a minimum number of technologies, but rather demonstrate the minimally sufficient total cost of the solution with evidence.
Next useful check
For a clean comparison of the cache layer, it makes sense to obtain a third datapoint later:
A. app
B. Traefik β app
C. Traefik β Varnish β app
with the same workload and a separate metric for the number of requests that actually reached the origin.
We will not publish a marketing article based on these findings within this worklogβit will be compiled separately later.