đ€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
10 KiB
mozdIT Bt. â Weboldal követelmĂ©ny + Dokploy deploy specifikĂĄciĂł (MVP)
0) Rövid összefoglaló
CĂ©l: minimĂĄlis, de komplett, mobilâelsĆ, gyors Ă©s biztonsĂĄgos bemutatkozĂł weboldal a mozdIT Bt.-nek, kiemelt Webmail linkkel Ă©s rövid, egyedi bemutatkozĂĄssal. A kĂ©sĆbb kĂ©szĂŒlĆ admin aloldal (szerverâmonitoring/menedzsment) helye elĆkĂ©szĂtve. Deployment Ă©s tesztelĂ©s: Dokploy környezetben.
1) MVP oldalak és funkciók
Oldalak
- KezdĆlap: rövid, egyedi bemutatkozĂł szöveg; CTA: Webmail link (kĂŒlsĆ URL); szolgĂĄltatĂĄsok rövid dobozai.
- RĂłlunk: rövid törtĂ©net, mƱködĂ©s Ăłta, szemĂ©lyes ĂŒgyfĂ©lkezelĂ©s, megbĂzhatĂłsĂĄg.
- SzolgĂĄltatĂĄsok: web hosting, email szolgĂĄltatĂĄs, DNS adminisztrĂĄciĂł (rövid leĂrĂĄs + kapcsolat CTA).
- Kapcsolat: Ʊrlap (nĂ©v, email, ĂŒzenet, GDPR checkbox); cĂ©g eâmail, telefonszĂĄm (ha lesz), cĂ©gnĂ©v, szĂ©khely.
- Admin (elĆre jelzett aloldal):
/<admin>route fenntartva; tartalom kĂ©sĆbb.
FunkciĂłk (MVP)
- ReszponzĂv navigĂĄciĂł (hamburger mobilon, sticky header desktopon).
- ưrlapvalidĂĄciĂł (frontend: required + eâmail forma; backend: spamâvĂ©dett endpoint).
- SEO alapok (title/description per oldal, OG, sitemap, robots).
- Analytics: Plausible (cookieless) vagy GA4 (cookieâconsenttel).
2) NemâfunkcionĂĄlis követelmĂ©nyek
- ReszponzivitĂĄs: mobileâfirst; törĂ©spontok: 360 / 640 / 768 / 1024 / 1280+ px.
- TeljesĂtmĂ©ny: Lighthouse (mobil/desktop) â„ 90; kĂ©pek WebP/AVIF; lazyâload; kritikus CSS minimalizĂĄlĂĄs.
- A11y: WCAG 2.1 AA (fĂłkusz, ARIA, kontraszt â„ 4.5:1, logikus heading).
- Biztonsåg: HTTPS, alap CSP, XSS/CSRF védelem, input szƱrés a backend felé.
- MegfigyelhetĆsĂ©g: Sentry (client) + alap logok; uptime healthcheck.
3) TechnolĂłgiai stack
- Frontend: Next.js (React + TypeScript) â SSG/SSR vegyes; App Router.
- UI: Tailwind CSS + egyszerƱ sajĂĄt komponensek (kĂ©sĆbb: shadcn/ui opcionĂĄlis).
- ưrlapok: React Hook Form + Zod.
- State: minimĂĄlis local state + SWR (ha kell fetch).
- Teszt: Jest + Testing Library (unit), Playwright (E2E â smoke a fĆ flowâkra).
- CMS (opcionĂĄlis kĂ©sĆbb): Strapi/Sanity; MVPâben statikus tartalom JSON/MDX.
ProjektâstruktĂșra (rövid):
/src
/app (Next.js routes)
/components
/styles
/lib
/tests (unit + e2e cfg)
/public
4) Tartalom (MVP) â copy irĂĄny
- Hero cĂm (KezdĆlap): âMegbĂzhatĂł webâ Ă©s emailâszolgĂĄltatĂĄs szemĂ©lyre szabott tĂĄmogatĂĄssal.â
- AlcĂm: âKis ĂŒgyfĂ©lkör, nagy figyelem: stabil tĂĄrhely, ĂŒzembiztos levelezĂ©s Ă©s DNS adminisztrĂĄciĂł â gyors reakciĂłval.â
- USP bulletâek: szemĂ©lyes ĂŒgyfĂ©lkezelĂ©s; gyors reagĂĄlĂĄs; stabil hĂĄttĂ©r; rugalmas tĂĄmogatĂĄs.
- Webmail gomb: âUgrĂĄs a Webmailreâ.
- RĂłlunk rövid: miĂłta mƱködtök; miĂ©rt a kicsi ĂŒgyfĂ©lkör; megbĂzhatĂłsĂĄg/folyamatos tĂĄmogatĂĄs.
- SzolgĂĄltatĂĄs dobozok: Web Hosting / Email / DNS Admin (1â2 mondat/elem, Kapcsolat CTA).
(Megjegyzés: a végleges szöveg a review sorån finomhangolható.)
5) Dokploy környezet â architektĂșra Ă©s folyamat
5.1 Környezetek
- Staging:
staging.mozdit.hu(pl. alap auth / IPâkorlĂĄtozĂĄs, ha kell) - Production:
mozdit.hu(www â apex redirect vagy fordĂtva)
5.2 Alap komponensek
- Reverse proxy/ingress: Dokploy beĂ©pĂtett (Traefik/Nginx környezet â a dokploy stack szerint).
- App kontĂ©ner: Next.js app (Node 20) â SSG build + Node futtatĂĄs (vagy statikus export + Nginx).
- OpciĂł: CDN (Cloudflare) a statikus assetekhez.
5.3 Environment våltozók (példa)
NEXT_PUBLIC_WEBMAIL_URL=https://webmail.mozdit.huCOMPANY_NAME=mozdIT Bt.SITE_URL=https://mozdit.huANALYTICS_PROVIDER=plausible|ga4PLAUSIBLE_DOMAIN=mozdit.hu(ha Plausible)GA4_ID=G-XXXXXXX(ha GA4)CONTACT_API_URL=https://api.mozdit.hu/contact(ha kĂŒlön backend)
5.4 Healthcheck & readiness
- HTTP GET
/api/healthâ{status:"ok"} - Staging/prod deploy csak zöld health esetĂ©n; rollback automatikus szabĂĄly (utolsĂł zöld image).
6) Docker & build
6.1 Next.js multiâstage Dockerfile (Node 20)
# 1) Build stage
FROM node:20-alpine AS builder
WORKDIR /app
COPY package.json package-lock.json* pnpm-lock.yaml* yarn.lock* ./
RUN npm ci --prefer-offline --no-audit --legacy-peer-deps || npm ci
COPY . .
RUN npm run build
# 2) Run stage (Node server)
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/public ./public
COPY --from=builder /app/package.json ./package.json
RUN npm ci --omit=dev --prefer-offline --no-audit || true
EXPOSE 3000
HEALTHCHECK --interval=30s --timeout=5s --retries=5 CMD wget -qO- http://localhost:3000/api/health || exit 1
CMD ["npm","start"]
MegjegyzĂ©s: Ha statikus export (SSG only) elegendĆ, vĂĄlaszthatĂł Nginx runtime is.
6.2 Dokploy app (magas szint)
- Repository link + branch per environment (
mainâ prod,developâ staging) vagy tagâalapĂș deploy. - Build & deploy: Dockerfile alapjĂĄn; port 3000; domain mapping staging/prod; envâek UIâbĂłl/secret storeâbĂłl.
- Zeroâdowntime: rolling frissĂtĂ©s (legalĂĄbb 2 replika prodâon, ha erĆforrĂĄs engedi).
7) CI/CD (példa: GitHub Actions)
Workflow: lint â unit â build â e2e (smoke, staging) â Dokploy deploy â Lighthouse check (staging) â prod release
.github/workflows/ci.yml (részlet):
name: CI
on:
push:
branches: ["main", "develop"]
jobs:
build-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 20 }
- run: npm ci
- run: npm run lint && npm run test -- --ci
- run: npm run build
docker:
needs: build-test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build & push image
uses: docker/build-push-action@v5
with:
push: true
context: .
tags: registry.example.com/mozdit/site:${{ github.sha }}
deploy-staging:
needs: docker
runs-on: ubuntu-latest
steps:
- name: Trigger Dokploy staging deploy
run: |
curl -X POST "$DOKPLOY_STAGING_HOOK" -H "Authorization: Bearer $DOKPLOY_TOKEN" \
-d '{"image":"registry.example.com/mozdit/site:${{ github.sha }}"}'
environment: staging
lighthouse:
needs: deploy-staging
runs-on: ubuntu-latest
steps:
- name: Lighthouse CI
run: npx @lhci/cli autorun --collect.url=https://staging.mozdit.hu
deploy-prod:
if: github.ref == 'refs/heads/main'
needs: lighthouse
runs-on: ubuntu-latest
steps:
- name: Trigger Dokploy prod deploy
run: |
curl -X POST "$DOKPLOY_PROD_HOOK" -H "Authorization: Bearer $DOKPLOY_TOKEN" \
-d '{"image":"registry.example.com/mozdit/site:${{ github.sha }}"}'
environment: production
MegjegyzĂ©s: a Dokployâoldali webhook/API URL Ă©s token a platform beĂĄllĂtĂĄsĂĄtĂłl fĂŒgg; ha Git integrĂĄciĂłt hasznĂĄltok, a "Trigger" lĂ©pĂ©s helyett autoâdeploy szabĂĄly is beĂĄllĂthatĂł.
8) Tesztelés a Dokploy stagingen
- Smoke E2E (Playwright): 3 alap flow â kezdĆlap betölt, Webmail link mƱködik, Kapcsolat Ʊrlap hibakezelĂ©s OK.
- VizsgĂĄlatok: Lighthouse (mobil & desktop), A11y ellenĆrzĆ (axe), 404/500 oldal viselkedĂ©s.
- Megfigyelés: Sentry DSN kapcsolva; health endpoint figyelése.
9) Biztonsåg & adatvédelem
- HTTPS (Letâs Encrypt / Dokploy integrĂĄciĂł), HSTS.
- CSP baseline (scriptâsrc 'self' + szĂŒksĂ©ges 3rd party); ReferrerâPolicy, XâFrameâOptions (SAMEORIGIN), XâContentâTypeâOptions.
- GDPR: cookie banner ha GA4; Plausible esetén banner elhagyható.
- Kapcsolat Ʊrlap: captcha/light rateâlimit, backend input validĂĄciĂł, eâmail kĂŒldĂ©s queueâval (ha szĂŒksĂ©ges).
10) Rollback, backup, verziĂłzĂĄs
- Release tag (semver) + image tag; Dokployâban korĂĄbbi image visszagörgetĂ©s.
- Konfig backup: envâek Ă©s Dokploy app export; infraâasâcode (Dockerfile, workflowâk) GITâben.
11) Elfogadåsi kritériumok (MVP)
- KezdĆlap, RĂłlunk, SzolgĂĄltatĂĄsok, Kapcsolat elĂ©rhetĆ Ă©s reszponzĂv.
- Webmail link jĂłl mƱködik (Ășj lapon, nofollow opcionĂĄlis).
- Lighthouse â„ 90 minden fĆ mĂ©rĆszĂĄmon stagingen.
- ưrlap hibĂĄk/fĂłkuszĂĄllapotok a11yâkonformak.
- CI pipeline zöld, staging deploy automatikus; prod deploy csak zöld staging utån.
12) KezdĆ feladatlista (ticket sablonok)
- Repo & Next.js bootstrap â Acceptance: app indul dev mĂłdban; TS, ESLint, Prettier beĂĄllĂtva.
- Tailwind + alap layout â Acceptance: reszponzĂv header/footer; tipogrĂĄfia, szĂnek.
- KezdĆlap (Hero + USP + Webmail CTA) â Acceptance: 1s alatt festĆdik mobilon; link mƱködik.
- RĂłlunk oldal â Acceptance: headingâhierarchia helyes; szövegek MDXâbĆl tölthetĆk.
- SzolgĂĄltatĂĄsok oldal â Acceptance: 3 doboz + CTA â Kapcsolat.
- Kapcsolat Ʊrlap + API stub â Acceptance: validĂĄciĂł, hibĂĄk; egyszerƱ spamâvĂ©delem.
- /api/health endpoint â Acceptance:
{status:"ok"}JSON. - Dockerfile + Dokploy staging app â Acceptance: buildel, deployol, domain Ă©l.
- CI (lint, unit) + Staging deploy trigger â Acceptance: PRâre fut; stagingre pushol.
- Playwright smoke E2E + Lighthouse CI â Acceptance: fut stagingen, riport mentve.
- Prod app + domain + HTTPS â Acceptance: Ă©lĆ site; automatikus HTTPS; monitoring bekapcsolva.
13) KĂ©sĆbbi bĆvĂtĂ©sek
- Blog/ĂjdonsĂĄgok; többnyelvƱsĂ©g; admin aloldal funkciĂłi; CDN cache; kĂ©pgenerĂĄlĂĄs; CMS integrĂĄciĂł.
MegjegyzĂ©s: A vĂ©gleges Dokploy beĂĄllĂtĂĄsok (webhook/API, autoâdeploy, replika szĂĄm, storage) a rendelkezĂ©sre ĂĄllĂł szerver erĆforrĂĄsoktĂłl Ă©s a Dokploy verziĂłjĂĄtĂłl fĂŒggĆen finomhangolandĂłk.