# Web App Template A starting point for new Hellion Online Media web apps on the [Hellion Forge](https://gitea.hellion-forge.cloud/). Stack: - **Next.js 16** (App Router, Turbopack) - **React 19** - **TypeScript** strict mode - **Prisma ORM** + **MySQL** - **NextAuth** (auth.js v5) - **Sass/SCSS** in external files — never inline styles - **FontAwesome** This mirrors the production stack used for `hellion-media-website`, `hellion-initiative-v3`, and `nova-corporation.de`. --- ## How to use this template 1. Click **"Use this template"** on the Forge. 2. Clone locally and replace project name in: - `package.json` → `name` - `README.md` → this section + project description 3. Set up your `.env.local` from `.env.example`. 4. `npm install`, `npx prisma generate`, `npx prisma migrate dev`. 5. `npm run dev` → http://localhost:3000. 6. Implement your app in `src/app/`. --- ## Project structure ``` . ├── .editorconfig ├── env.example Template for .env.local. Rename to .env.example after cloning if you prefer the dot-prefix convention. ├── .gitea/ │ ├── ISSUE_TEMPLATE/ │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ └── ci.yml Lint + type-check + Prisma validate ├── .gitignore ├── prisma/ │ └── schema.prisma Skeleton with NextAuth tables ├── src/ │ ├── app/ │ │ ├── layout.tsx Root layout │ │ ├── page.tsx Home page │ │ └── api/auth/[...nextauth]/route.ts │ ├── components/ Reusable UI components │ ├── lib/ │ │ ├── prisma.ts Prisma client singleton │ │ └── auth.ts NextAuth config │ └── styles/ │ └── globals.scss Global styles entry ├── next.config.ts ├── package.json ├── tsconfig.json ├── CODEOWNERS ├── LICENSE MIT └── README.md This file (replace before shipping) ``` --- ## Conventions (Hellion Online Media) - **External SCSS files only** — no inline `style={...}`, no `style.css` per component. Co-located `*.module.scss` is fine. - **Database access via DAL layer** — direct Prisma calls only inside `src/lib/dal/*.ts`, never in components or routes. Pattern from `hellion-initiative-v3`. - **No client-side secrets** — all auth/DB access goes through server components or route handlers. - **PM2 single-process deployment** — production runs on Strato Windows Server with PM2 + IIS reverse proxy. No clustering, no Vercel. --- ## Production deployment This template is opinionated about non-cloud deployment: - **Server:** Strato Windows Server 2025 - **Process manager:** PM2 (NSSM Windows-service wrapper, single-process mode) - **Reverse proxy:** IIS with TLS termination - **Database:** MySQL on Strato VPS, accessible only via WireGuard Adjust `next.config.ts` accordingly (no `output: 'standalone'` unless you containerize). --- ## License MIT — see `LICENSE`.