92 lines
3.1 KiB
Markdown
92 lines
3.1 KiB
Markdown
# 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`.
|