2026-02-08 10:02:12 -06:00
2026-02-08 10:00:08 -06:00
2026-02-07 20:21:00 -06:00
2026-02-07 19:52:49 -06:00
2026-02-07 19:52:49 -06:00
2026-02-07 20:21:00 -06:00
2026-02-07 19:52:49 -06:00
2026-02-07 19:52:49 -06:00
2026-02-07 19:52:49 -06:00
2026-02-08 10:00:08 -06:00
2026-02-07 19:52:49 -06:00
2026-02-07 19:52:49 -06:00
2026-02-07 19:52:49 -06:00
2026-02-07 19:52:49 -06:00
2026-02-08 10:00:08 -06:00
2026-02-07 19:52:49 -06:00


Yuuki Web



The Official Landing Page for the Yuuki Project

Showcase the model. Embed the demo. Tell the story.
A dark, cyberpunk-minimal site built with Next.js and sakura pink.


Features    Demo    Sponsor



License   Next.js   React   Tailwind   TypeScript   Vercel




8 handcrafted sections.

Hero with animated terminal prompt.
Model stats and evaluation data.
Full ecosystem showcase.
Embedded Gradio demo.
Evaluation benchmarks.
Creator profile and origin story.
GitHub Sponsors integration.
Responsive footer with full link map.

One page. Zero backend.

Static site, no database, no API keys.
Dark theme with sakura pink (#f472b6) accents.
Monospace terminal aesthetic.
Built for the Yuuki ecosystem.

Deployed on Vercel in one click.




What is Yuuki-Web?


Yuuki-Web is the official landing page for the Yuuki project -- a code-generation model trained entirely on a smartphone with zero budget. The site serves as the public face of the project: introducing the model, showcasing the ecosystem tools (YUY CLI and YUY-Chat), embedding a live interactive demo, presenting evaluation data, and providing a way for people to support the project financially.

The site is built with Next.js 16, Tailwind CSS v4, and TypeScript. It uses a dark cyberpunk-minimal design language with sakura pink accents inspired by the Japanese name Yuuki (courage/bravery). The entire site is static -- no backend, no database, no environment variables required.




Features


Hero Section

Full-viewport hero with animated typing effect in a terminal-style code block. Headline communicates the core message: an AI model trained on a phone with $0 budget. CTA buttons link to the live demo and GitHub.


Model Overview

Technical card grid displaying key model specifications: architecture (GPT-2, 124M params), training hardware (Snapdragon 685), dataset composition (multilingual code), training progress (5.3%), and model size (988 MB). All stats presented in a clean bento-grid layout.


Ecosystem Showcase

Side-by-side feature cards for the two companion tools -- YUY (CLI for downloading and running models) and YUY-Chat (TUI chat interface). Each card includes description, key features, tech stack badges, and terminal code examples showing real commands.


Live Demo

Embedded HuggingFace Space via iframe with a macOS-style window chrome (traffic light dots, URL bar, external link). Loads the Gradio-powered Yuuki-best model directly in the browser. No setup required.

Evaluation & Stats

Data-driven section showing benchmark scores across programming languages (Agda 55/100, C 20/100, Assembly 15/100, Python 8/100). Includes training metrics: loss curves, steps completed, and checkpoint comparisons between 1400 and 2000.


Creator Profile

About section for agua_omg with custom avatar, personal bio, social links (GitHub, Twitter/X, Discord, HuggingFace), and quick-stat cards (4+ projects, Rust, Redmi 12, $0 budget). Includes the full origin story of the name "Yuuki" -- from Japanese kanji to Girls' Last Tour.


Sponsor Section

Embedded GitHub Sponsors card via iframe alongside CTA buttons for sponsoring and starring repos. Clean messaging about supporting a zero-budget solo project.


Footer

Four-column footer with organized link sections: Ecosystem (model, demo, training code), Tools (YUY, YUY-Chat, HuggingFace), Community (GitHub org, Twitter, sponsor link), and the project tagline.




Design System


Color Palette

Token Value Usage
--background #050505 Page background
--foreground #fafafa Primary text
--card #0e0e0e Card surfaces
--muted-foreground #737373 Secondary text
--border #1f1f1f Borders and dividers
--sakura #f472b6 Primary accent (pink)
--sakura-dim rgba(244,114,182,0.15) Subtle pink backgrounds
--sakura-border rgba(244,114,182,0.25) Pink-tinted borders

Typography

Role Font Weight
Headings Geist Bold (700)
Body text Geist Regular (400)
Code / Labels Geist Mono Regular (400)

Design Principles

  • Dark-first. The entire site uses a near-black background (#050505) with high-contrast white text and sakura pink accents. No light mode.
  • Terminal aesthetic. Monospace labels, code blocks, and a typing animation in the hero reinforce the developer/hacker vibe.
  • Minimal color. Three colors total: black, white, and pink. No gradients unless explicitly decorative.
  • Card-based layout. Every section uses bordered cards with subtle background differentiation on a consistent grid.
  • Mobile-first responsive. All layouts use flexbox with responsive breakpoints. Grid layouts collapse to single columns on small screens.



Tech Stack


Technology Version Purpose
Next.js 16 React framework, App Router, static rendering
React 19 UI component library
TypeScript 5.x Type safety
Tailwind CSS 4 Utility-first styling with @theme inline tokens
shadcn/ui Latest Base component primitives (cards, buttons)
Lucide React Latest Icon library
Geist Latest Font family (sans + mono)

External Embeds

Embed Method Source
Yuuki Demo <iframe> https://opceanai-yuuki.hf.space
GitHub Sponsors <iframe> https://github.com/sponsors/aguitauwu/card



Architecture


                           User (Browser)
                                |
                                v
  +-------------------------------------------------------------+
  |                    Yuuki-Web (Next.js 16)                   |
  |                                                             |
  |   app/                                                      |
  |     layout.tsx           Root layout, fonts, metadata        |
  |     globals.css          Tailwind v4 theme + design tokens   |
  |     page.tsx             Main page, section assembly,        |
  |                          error boundaries, inline embeds     |
  |                                                             |
  |   components/yuuki/                                         |
  |     navbar.tsx           Fixed top nav with scroll links     |
  |     hero.tsx             Hero section + terminal animation   |
  |     model-section.tsx    Model specs bento grid              |
  |     ecosystem-section.tsx YUY + YUY-Chat showcase           |
  |     stats-section.tsx    Evaluation data + benchmarks        |
  |     creator-section.tsx  agua_omg profile + name story       |
  |     footer.tsx           4-column link footer                |
  +-------+----------------------------+-----------------------+
          |                            |
          v                            v
  +------------------+       +------------------+
  |  HuggingFace     |       |  GitHub          |
  |  Spaces (iframe) |       |  Sponsors card   |
  |  Gradio demo     |       |  (iframe)        |
  +------------------+       +------------------+

Source Layout

yuuki-web/
    app/
        layout.tsx                  # root layout, Geist fonts, metadata
        globals.css                 # Tailwind v4, design tokens, sakura theme
        page.tsx                    # main page assembly + inline demo/donate
    components/
        yuuki/
            navbar.tsx              # sticky navbar with smooth scroll links
            hero.tsx                # hero with terminal typing animation
            model-section.tsx       # model specs grid (architecture, hardware, etc.)
            ecosystem-section.tsx   # YUY CLI + YUY-Chat feature cards
            stats-section.tsx       # evaluation benchmarks + training metrics
            creator-section.tsx     # agua_omg profile, socials, name origin
            footer.tsx              # 4-column footer with ecosystem links
    public/
        images/
            agua-avatar.jpg         # creator avatar

Component Hierarchy

Page
 |-- Navbar
 |-- Hero
 |     |-- TerminalBlock (animated typing)
 |     |-- StatCards (inline stats)
 |
 |-- ModelSection
 |     |-- SpecCard (x6 grid items)
 |
 |-- EcosystemSection
 |     |-- ToolCard (YUY)
 |     |-- ToolCard (YUY-Chat)
 |     |-- CodeBlock (terminal examples)
 |
 |-- DemoSection (inline in page.tsx)
 |     |-- WindowChrome (traffic lights + URL)
 |     |-- iframe (HuggingFace Space)
 |
 |-- StatsSection
 |     |-- EvalCard (per-language scores)
 |     |-- MetricCard (training metrics)
 |
 |-- CreatorSection
 |     |-- ProfileCard (avatar, bio, socials)
 |     |-- NameOriginCard (Yuuki story)
 |     |-- ProjectLink (x4 related projects)
 |
 |-- DonateSection (inline in page.tsx)
 |     |-- iframe (GitHub Sponsors card)
 |     |-- CTAButtons
 |
 |-- Footer
       |-- LinkColumn (x4)



Sections Reference


Section ID Component Description
Navigation -- navbar.tsx Fixed top bar with smooth-scroll anchor links
Hero #hero hero.tsx Full-viewport intro with animated terminal
Model #model model-section.tsx Architecture, hardware, dataset, training info
Ecosystem #ecosystem ecosystem-section.tsx YUY CLI and YUY-Chat tool cards
Demo #demo Inline in page.tsx Embedded Gradio Space via iframe
Stats #stats stats-section.tsx Evaluation scores and training benchmarks
Creator #creator creator-section.tsx agua_omg profile and Yuuki name origin
Donate #donate Inline in page.tsx GitHub Sponsors embed + CTA
Footer -- footer.tsx Organized link sections + tagline



Installation


Prerequisites


Clone and Run

git clone https://github.com/YuuKi-OS/yuuki-web
cd yuuki-web
pnpm install
pnpm dev

The site will be available at http://localhost:3000.


Build for Production

pnpm build
pnpm start

Deploy to Vercel

The recommended deployment method. Connect the repo to Vercel and it will auto-deploy on every push.

# Or deploy manually with the Vercel CLI
npx vercel

No environment variables required. The site is fully static.




Configuration


Metadata

SEO metadata is configured in app/layout.tsx:

export const metadata: Metadata = {
  title: 'Yuuki Project - Code Generation Trained on a Phone',
  description: 'A multilingual code generation model trained entirely on a smartphone...',
}

Theme Tokens

All design tokens are defined in app/globals.css using Tailwind v4's @theme inline directive:

@theme inline {
  --color-sakura: var(--sakura);
  --color-sakura-dim: var(--sakura-dim);
  --color-sakura-border: var(--sakura-border);
}

Embeds

The two external embeds are configured directly in app/page.tsx:

Embed URL Dimensions
Gradio Demo https://opceanai-yuuki.hf.space 100% width, 450px height
Sponsors Card https://github.com/sponsors/aguitauwu/card 600px width, 225px height

To change the embedded Space, update the src attribute on the demo iframe in page.tsx.




Performance


Metric Value
First Contentful Paint < 0.8s
Largest Contentful Paint < 1.5s
Total Blocking Time < 50ms
Cumulative Layout Shift < 0.01
Bundle size (gzipped) ~90 KB
Components 7
External dependencies 0 (runtime)
Environment variables 0
API routes 0
Database None

The site is fully static with no client-side data fetching, no database queries, and no API calls. The only network requests beyond the initial page load are the two embedded iframes.




Design Decisions


Why Next.js for a static landing page?

Next.js provides excellent DX with hot reload, TypeScript support, image optimization, font loading, and one-click Vercel deployment. The App Router enables clean component composition. For a project page that may evolve to include dynamic features (blog, documentation, model playground), starting with Next.js avoids a future migration.

Why Tailwind CSS v4?

Tailwind v4 introduces @theme inline for design token registration directly in CSS, eliminating the need for tailwind.config.js. This simplifies the project structure and makes the design system self-documenting. The new CSS-first configuration is more intuitive for custom token systems like the sakura color palette.

Why dark theme only?

The Yuuki project's identity is rooted in terminal aesthetics, hacking culture, and cyberpunk minimalism. A dark theme reinforces this identity. Supporting a light mode would double the design surface area for negligible benefit -- the target audience (developers, AI researchers) overwhelmingly prefers dark interfaces.

Why iframe for the demo instead of the Gradio web component?

The Gradio web component (<gradio-app>) requires loading a 2MB+ JavaScript module and creating custom elements at runtime, which conflicts with React's DOM management and causes errors in sandboxed environments. An iframe provides complete isolation, loads the Space in its own browsing context, and requires zero JavaScript on the host page.

Why sakura pink (#f472b6)?

The name Yuuki comes from Japanese -- combining "Yuki" (snow) and the character Yuu from Girls' Last Tour. Sakura (cherry blossom) pink is a natural complement: it evokes Japanese aesthetics, stands out beautifully against dark backgrounds, and creates a warm, distinctive brand identity that differentiates Yuuki from the sea of blue-themed AI projects.

Why inline sections for Demo and Donate instead of separate components?

Both sections contain iframes that can cause issues when loaded inside React component boundaries with error boundaries. Inlining them directly in page.tsx gives the most control over rendering and avoids potential hydration mismatches. The sections are simple enough (a few divs + an iframe) that component extraction adds complexity without benefit.




Accessibility


  • Semantic HTML -- <main>, <section>, <nav>, <header>, <footer> used throughout
  • ARIA labels -- all decorative SVGs use aria-hidden="true"
  • Alt text -- all meaningful images have descriptive alt text
  • Keyboard navigation -- all links and interactive elements are focusable
  • Color contrast -- text passes WCAG AA against the dark background
  • Focus indicators -- visible focus rings on all interactive elements
  • Smooth scrolling -- scroll-behavior: smooth for anchor navigation
  • Responsive -- fully usable from 320px to 4K+ screens



Roadmap


v1.0 -- Current (Complete)

  • Hero section with terminal animation
  • Model specification grid
  • Ecosystem showcase (YUY + YUY-Chat)
  • Embedded Gradio demo via iframe
  • Evaluation benchmarks and training stats
  • Creator profile with origin story
  • GitHub Sponsors integration
  • Responsive footer with full link map
  • Dark cyberpunk theme with sakura accents
  • Mobile-first responsive design
  • Smooth scroll navigation

v1.1 -- Enhancements (Planned)

  • Blog / changelog section
  • Model comparison page (checkpoint evolution)
  • Interactive evaluation chart (Recharts)
  • Animated stats counters on scroll
  • Open Graph images for social sharing
  • RSS feed for project updates

v2.0 -- Ecosystem Hub (Future)

  • Documentation section with MDX
  • Model download page with direct links
  • Community contributions gallery
  • Multi-language support (EN/ES/JP)
  • Search functionality
  • Dark/light theme toggle



Contributing


Development Setup

git clone https://github.com/YuuKi-OS/yuuki-web
cd yuuki-web

# install dependencies
pnpm install

# start dev server
pnpm dev

# type check
pnpm tsc --noEmit

# lint
pnpm lint

Commit Convention

<type>(<scope>): <subject>

Types: feat | fix | docs | style | refactor | chore

feat(hero): add terminal typing animation

- Implement character-by-character typing effect
- Add cursor blink animation
- Support multiple code examples in rotation

Closes #7

Pull Request Checklist

  • TypeScript compiles without errors
  • Responsive on mobile and desktop
  • Accessibility checked (keyboard, screen reader)
  • No console errors or warnings
  • Design tokens used (no hardcoded colors)
  • Commits follow the convention above



About the Yuuki Project


Yuuki-Web is the public face of the Yuuki project -- a code-generation LLM being trained entirely on a smartphone (Redmi 12, Snapdragon 685, CPU only) with zero cloud budget.

Training Details

Base model GPT-2 (124M parameters)
Training type Continued pre-training
Hardware Snapdragon 685, CPU only
Training time 50+ hours
Progress 2,000 / 37,500 steps (5.3%)
Cost $0.00

Quality Scores (Checkpoint 2000)

Language Score
Agda 55 / 100
C 20 / 100
Assembly 15 / 100
Python 8 / 100

Created by agua_omg -- a young independent developer who started the project in January 2026 because paying for Claude was no longer an option. The name Yuuki combines the Japanese word for snow (Yuki) with the character Yuu from Girls' Last Tour.





Project Description
yuy CLI for downloading, managing, and running Yuuki models
yuy-chat TUI chat interface for local AI conversations
Yuuki-best Best checkpoint model weights
Yuuki Space Web-based interactive demo
yuuki-training Training code and scripts




Model Weights   Live Demo   YUY CLI


YUY Chat   Sponsor   Report Issue




License


MIT License

Copyright (c) 2026 Yuuki Project

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.



Built with patience, a phone, and zero budget.


Yuuki Project


Description
No description provided
Readme MIT 553 KiB
Languages
TypeScript 96.9%
CSS 3%
JavaScript 0.1%