Setup for deployment: Added env example, updated dependencies, configured vercel
This commit is contained in:
parent
525f1d3fee
commit
badd48baaf
7
.env.example
Normal file
7
.env.example
Normal file
@ -0,0 +1,7 @@
|
||||
# Copy this file to .env and fill in your actual values
|
||||
|
||||
# Database Configuration (Neon PostgreSQL)
|
||||
DATABASE_URL="postgresql://username:password@hostname:5432/database?sslmode=require"
|
||||
|
||||
# Development settings
|
||||
NODE_ENV=development
|
||||
17
.gitignore
vendored
17
.gitignore
vendored
@ -3,4 +3,19 @@ dist
|
||||
.DS_Store
|
||||
server/public
|
||||
vite.config.ts.*
|
||||
*.tar.gz
|
||||
*.tar.gz
|
||||
|
||||
# Environment variables
|
||||
.env
|
||||
.env.local
|
||||
.env.production.local
|
||||
.env.development.local
|
||||
|
||||
# Vercel
|
||||
.vercel
|
||||
|
||||
# Logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
36
.replit
36
.replit
@ -1,36 +0,0 @@
|
||||
modules = ["nodejs-20", "web", "postgresql-16"]
|
||||
run = "npm run dev"
|
||||
hidden = [".config", ".git", "generated-icon.png", "node_modules", "dist"]
|
||||
|
||||
[nix]
|
||||
channel = "stable-24_05"
|
||||
|
||||
[deployment]
|
||||
deploymentTarget = "autoscale"
|
||||
build = ["npm", "run", "build"]
|
||||
run = ["npm", "run", "start"]
|
||||
|
||||
[[ports]]
|
||||
localPort = 5000
|
||||
externalPort = 80
|
||||
|
||||
[workflows]
|
||||
runButton = "Project"
|
||||
|
||||
[[workflows.workflow]]
|
||||
name = "Project"
|
||||
mode = "parallel"
|
||||
author = "agent"
|
||||
|
||||
[[workflows.workflow.tasks]]
|
||||
task = "workflow.run"
|
||||
args = "Start application"
|
||||
|
||||
[[workflows.workflow]]
|
||||
name = "Start application"
|
||||
author = "agent"
|
||||
|
||||
[[workflows.workflow.tasks]]
|
||||
task = "shell.exec"
|
||||
args = "npm run dev"
|
||||
waitForPort = 5000
|
||||
@ -1,84 +0,0 @@
|
||||
🎯 Projektbeschreibung: Hochzeit-Webseite mit Node.js & React
|
||||
🔧 Technologien:
|
||||
Frontend: React (mit Tailwind CSS oder Styled Components für Styling)
|
||||
|
||||
Backend: Node.js mit Express.js
|
||||
|
||||
Formularverarbeitung: POST an Express-Route, z. B. mit nodemailer (für E-Mail) oder MongoDB (für Speicherung)
|
||||
|
||||
Optional: Google Maps API, dotenv, CORS
|
||||
|
||||
🌸 Seitenstruktur:
|
||||
1. Startseite (Landing Page) – /
|
||||
Enthält alle Infos:
|
||||
|
||||
Header mit Titel:
|
||||
"Anna & Lukas heiraten – 14. September 2025 – Gut Sonnenberg"
|
||||
|
||||
Sektionen:
|
||||
|
||||
Begrüßungstext
|
||||
|
||||
Zeitplan (Trauung, Empfang, Dinner, Party)
|
||||
|
||||
Google Map oder Adresse
|
||||
|
||||
Foto des Paares oder romantisches Titelbild
|
||||
|
||||
Antwortformular:
|
||||
Mit folgenden Feldern:
|
||||
|
||||
Name (Textfeld)
|
||||
|
||||
Teilnahme: [Ja] [Nein] [Vielleicht] (Radio-Buttons oder Select)
|
||||
|
||||
Menüwahl: [Vegetarisch] [Vegan] [Fleisch] (Select oder Radio)
|
||||
|
||||
Allergien / Anmerkungen (Textarea)
|
||||
|
||||
Submit-Button
|
||||
|
||||
Formularverarbeitung:
|
||||
Beim Absenden sendet das Formular eine POST-Anfrage an den Node.js-Backend-Endpunkt /api/rsvp.
|
||||
|
||||
2. Impressum – /impressum
|
||||
Standard-Text mit Kontaktadresse, Verantwortliche, ggf. E-Mail
|
||||
|
||||
Link in Footer (sichtbar auf jeder Seite)
|
||||
|
||||
3. Datenschutz – /datenschutz
|
||||
DSGVO-konformer Text, z. B. Nutzung von Formularen, Mail, ggf. Cookies
|
||||
|
||||
Auch im Footer verlinkt
|
||||
|
||||
🖌️ Design-Vorgaben (React Frontend):
|
||||
Farben: Weiß, Beige, Altrosa, sanfte Töne
|
||||
|
||||
Schriften: Titel in romantischer Serifenschrift, Text in Sans-Serif
|
||||
|
||||
Layout: Responsiv (mobilfreundlich), großzügige Abstände, weiche Schatten
|
||||
|
||||
Komponenten:
|
||||
|
||||
Header, Footer, FormSection, Schedule, Map, ImpressumPage, DatenschutzPage
|
||||
|
||||
Routing mit React Router (react-router-dom)
|
||||
|
||||
🌐 Beispielhafte Routing-Struktur:
|
||||
plaintext
|
||||
Kopieren
|
||||
Bearbeiten
|
||||
/
|
||||
-> Startseite mit Formular
|
||||
/impressum
|
||||
-> Impressum-Text
|
||||
/datenschutz
|
||||
-> Datenschutz-Text
|
||||
/api/rsvp (POST)
|
||||
-> Node.js API-Endpunkt für Formularverarbeitung
|
||||
✅ Optional:
|
||||
Erfolgreiche Formular-Übermittlung zeigt eine Dankesnachricht
|
||||
|
||||
Speichern der Daten in MongoDB oder Versenden per Mail an das Brautpaar
|
||||
|
||||
Deployment z. B. auf Vercel (Frontend) + Render/Heroku (Backend)
|
||||
13
package-lock.json
generated
13
package-lock.json
generated
@ -46,6 +46,7 @@
|
||||
"cmdk": "^1.1.1",
|
||||
"connect-pg-simple": "^10.0.0",
|
||||
"date-fns": "^3.6.0",
|
||||
"dotenv": "^16.5.0",
|
||||
"drizzle-orm": "^0.39.1",
|
||||
"drizzle-zod": "^0.7.0",
|
||||
"embla-carousel-react": "^8.6.0",
|
||||
@ -4357,6 +4358,18 @@
|
||||
"csstype": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/dotenv": {
|
||||
"version": "16.5.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz",
|
||||
"integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==",
|
||||
"license": "BSD-2-Clause",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://dotenvx.com"
|
||||
}
|
||||
},
|
||||
"node_modules/drizzle-kit": {
|
||||
"version": "0.30.4",
|
||||
"resolved": "https://registry.npmjs.org/drizzle-kit/-/drizzle-kit-0.30.4.tgz",
|
||||
|
||||
@ -48,6 +48,7 @@
|
||||
"cmdk": "^1.1.1",
|
||||
"connect-pg-simple": "^10.0.0",
|
||||
"date-fns": "^3.6.0",
|
||||
"dotenv": "^16.5.0",
|
||||
"drizzle-orm": "^0.39.1",
|
||||
"drizzle-zod": "^0.7.0",
|
||||
"embla-carousel-react": "^8.6.0",
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
import "dotenv/config";
|
||||
import express, { type Request, Response, NextFunction } from "express";
|
||||
import { registerRoutes } from "./routes";
|
||||
import { setupVite, serveStatic, log } from "./vite";
|
||||
|
||||
29
vercel.json
Normal file
29
vercel.json
Normal file
@ -0,0 +1,29 @@
|
||||
{
|
||||
"version": 2,
|
||||
"builds": [
|
||||
{
|
||||
"src": "client/**/*",
|
||||
"use": "@vercel/static-build",
|
||||
"config": {
|
||||
"distDir": "dist"
|
||||
}
|
||||
},
|
||||
{
|
||||
"src": "server/index.ts",
|
||||
"use": "@vercel/node"
|
||||
}
|
||||
],
|
||||
"routes": [
|
||||
{
|
||||
"src": "/api/(.*)",
|
||||
"dest": "server/index.ts"
|
||||
},
|
||||
{
|
||||
"src": "/(.*)",
|
||||
"dest": "dist/$1"
|
||||
}
|
||||
],
|
||||
"env": {
|
||||
"NODE_ENV": "production"
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user