# basic-app

The reference app for WrNexus. Demonstrates every MVP feature.

```
app/
  pages/index.wrn       ->  GET /          (SSR + two counter components w/ props)
  pages/about.wrn       ->  GET /about     (pure SSR, zero JS)
  pages/reactive.wrn    ->  GET /reactive  (reactive directives, no component)
  pages/hello.wrn       ->  GET /hello     (.wrn language, compiled reactive page)
  api/hello.ts           ->  GET /api/hello
  api/echo.ts            ->  GET|POST /api/echo
  middleware/auth.ts     ->  runs first (alphabetical)
  middleware/logger.ts   ->  runs second
  realtime/chat.ts       ->  ws /realtime/chat
  components/counter.wrn ->  server-rendered component: data-component="counter"
  styles/global.css      ->  global stylesheet -> /__wrnexus/styles.css (every page)
public/
  favicon.ico          ->  framework default if this file is absent
  robots.txt           ->  GET /robots.txt
  site.webmanifest     ->  GET /site.webmanifest
wrnexus.config.ts         ->  global SEO + head injection + CSS processor + security/CORS config
```

`wrnexus.config.ts` shows global SEO defaults, how to use a CSS framework via CDN
(`head`), or a real Tailwind/PostCSS build (`styles.process`). It also enables
example CORS origins and documents the default security headers. To use an npm
framework, `@import` it in `app/styles/global.css`.

`app/pages/hello.wrn` demonstrates a page-level `.wrn` `seo` block plus direct
`.wrn` access to `cookies`, `session`, and the CSR `localStorage` snapshot.

Run from the repo root:

```bash
bun install
bun run dev      # serves this app at http://localhost:3000
```
