Setup for deployment: Added env example, updated dependencies, configured vercel

This commit is contained in:
Michi 2025-06-23 13:55:20 +02:00
parent 525f1d3fee
commit badd48baaf
8 changed files with 67 additions and 121 deletions

7
.env.example Normal file
View 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
View File

@ -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
View File

@ -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

View File

@ -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
View File

@ -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",

View File

@ -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",

View File

@ -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
View 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"
}
}