remove environments from git

This commit is contained in:
PxlLoewe
2025-06-11 20:25:25 -07:00
parent 42d9583bc8
commit 2bbb7b1ffb
5 changed files with 137 additions and 143 deletions

82
.env.example Normal file
View File

@@ -0,0 +1,82 @@
# ───────────────────────────────────────────────
# 🔐 Authentifizierung & Cookies
# ───────────────────────────────────────────────
AUTH_DISPATCH_SECRET=
AUTH_HUB_SECRET=
AUTH_DISPATCH_COOKIE_PREFIX=
AUTH_HUB_COOKIE_PREFIX=
AUTH_DISPATCH_URL=
AUTH_HUB_URL=
NEXT_PUBLIC_DISPATCH_SERVICE_ID=
# ───────────────────────────────────────────────
# 🌐 Öffentliche URLs
# ───────────────────────────────────────────────
NEXT_PUBLIC_HUB_URL=
NEXT_PUBLIC_HUB_SERVER_URL=
NEXT_PUBLIC_DISPATCH_URL=
NEXT_PUBLIC_DISPATCH_SERVER_URL=
DISCORD_SERVER_URL=
NEXT_PUBLIC_ESRI_ACCESS_TOKEN=
NEXT_PUBLIC_OPENAIP_ACCESS=
# ───────────────────────────────────────────────
# 🗄️ Datenbank
# ───────────────────────────────────────────────
DATABASE_URL=
# ───────────────────────────────────────────────
# 📡 LiveKit Konfiguration
# ───────────────────────────────────────────────
NEXT_PUBLIC_LIVEKIT_URL=
LIVEKIT_API_KEY=
LIVEKIT_API_SECRET=
# ───────────────────────────────────────────────
# 🚦 Dispatch Server (Backend)
# ───────────────────────────────────────────────
DISPATCH_SERVER_PORT=
DISPATCH_APP_TOKEN=
REDIS_HOST=
REDIS_PORT=
# ───────────────────────────────────────────────
# 🧠 HUB Server (Backend)
# ───────────────────────────────────────────────
HUB_SERVER_PORT=
DISCORD_SERVER_PORT=
# ───────────────────────────────────────────────
# 📚 Moodle
# ───────────────────────────────────────────────
MOODLE_URL=
MOODLE_API_TOKEN=
MOODLE_USER_PASSWORD=
NEXT_PUBLIC_MOODLE_URL=
# ───────────────────────────────────────────────
# 📧 E-Mail Einstellungen (nur HUB Server)
# ───────────────────────────────────────────────
MAIL_SERVER=
MAIL_PORT=
MAIL_USER=
MAIL_PASSWORD=
# ───────────────────────────────────────────────
# 🕹️ Discord OAuth (optional)
# ───────────────────────────────────────────────
DISCORD_GUILD_ID=
DISCORD_OAUTH_CLIENT_ID=
DISCORD_OAUTH_SECRET=
DISCORD_BOT_TOKEN=
DISCORD_REDIRECT_URL=
NEXT_PUBLIC_DISCORD_URL=

View File

@@ -1,82 +1,82 @@
# ─────────────────────────────────────────────── # ───────────────────────────────────────────────
# 🔐 Authentifizierung & Cookies # 🔐 Authentifizierung & Cookies
# ─────────────────────────────────────────────── # ───────────────────────────────────────────────
AUTH_DISPATCH_SECRET=dispatch AUTH_DISPATCH_SECRET=
AUTH_HUB_SECRET=var AUTH_HUB_SECRET=
AUTH_DISPATCH_COOKIE_PREFIX=DISPATCH AUTH_DISPATCH_COOKIE_PREFIX=
AUTH_HUB_COOKIE_PREFIX=HUB AUTH_HUB_COOKIE_PREFIX=
AUTH_DISPATCH_URL=https://dispatch.premiumag.de AUTH_DISPATCH_URL=
AUTH_HUB_URL=https://hub.premiumag.de AUTH_HUB_URL=
NEXT_PUBLIC_DISPATCH_SERVICE_ID=1 NEXT_PUBLIC_DISPATCH_SERVICE_ID=
# ─────────────────────────────────────────────── # ───────────────────────────────────────────────
# 🌐 Öffentliche URLs # 🌐 Öffentliche URLs
# ─────────────────────────────────────────────── # ───────────────────────────────────────────────
NEXT_PUBLIC_HUB_URL=https://hub.premiumag.de NEXT_PUBLIC_HUB_URL=
NEXT_PUBLIC_HUB_SERVER_URL=https://api.hub.premiumag.de NEXT_PUBLIC_HUB_SERVER_URL=
NEXT_PUBLIC_DISPATCH_URL=https://dispatch.premiumag.de NEXT_PUBLIC_DISPATCH_URL=
NEXT_PUBLIC_DISPATCH_SERVER_URL=https://api.dispatch.premiumag.de NEXT_PUBLIC_DISPATCH_SERVER_URL=
DISCORD_SERVER_URL=http://discord-server:3000 DISCORD_SERVER_URL=
NEXT_PUBLIC_ESRI_ACCESS_TOKEN= NEXT_PUBLIC_ESRI_ACCESS_TOKEN=
NEXT_PUBLIC_OPENAIP_ACCESS=6e85069940543ef02f8615b737059d98 NEXT_PUBLIC_OPENAIP_ACCESS=
# ─────────────────────────────────────────────── # ───────────────────────────────────────────────
# 🗄️ Datenbank # 🗄️ Datenbank
# ─────────────────────────────────────────────── # ───────────────────────────────────────────────
DATABASE_URL=postgresql://persistant-data:persistant-data-pw@postgres:5432/var DATABASE_URL=
# ─────────────────────────────────────────────── # ───────────────────────────────────────────────
# 📡 LiveKit Konfiguration # 📡 LiveKit Konfiguration
# ─────────────────────────────────────────────── # ───────────────────────────────────────────────
NEXT_PUBLIC_LIVEKIT_URL=wss://livekit.premiumag.de NEXT_PUBLIC_LIVEKIT_URL=
LIVEKIT_API_KEY=APIAnsGdtdYp2Ho LIVEKIT_API_KEY=
LIVEKIT_API_SECRET=tdPjVsYUx8ddC7K9NvdmVAeLRF9GeADD6Fedm1x63fWC LIVEKIT_API_SECRET=
# ─────────────────────────────────────────────── # ───────────────────────────────────────────────
# 🚦 Dispatch Server (Backend) # 🚦 Dispatch Server (Backend)
# ─────────────────────────────────────────────── # ───────────────────────────────────────────────
DISPATCH_SERVER_PORT=3000 DISPATCH_SERVER_PORT=
DISPATCH_APP_TOKEN=dispatch DISPATCH_APP_TOKEN=
REDIS_HOST=redis REDIS_HOST=
REDIS_PORT=6379 REDIS_PORT=
# ─────────────────────────────────────────────── # ───────────────────────────────────────────────
# 🧠 HUB Server (Backend) # 🧠 HUB Server (Backend)
# ─────────────────────────────────────────────── # ───────────────────────────────────────────────
HUB_SERVER_PORT=3000 HUB_SERVER_PORT=
DISCORD_SERVER_PORT=3000 DISCORD_SERVER_PORT=
# ─────────────────────────────────────────────── # ───────────────────────────────────────────────
# 📚 Moodle # 📚 Moodle
# ─────────────────────────────────────────────── # ───────────────────────────────────────────────
MOODLE_URL=https://02.premiumag.de:8081 MOODLE_URL=
MOODLE_API_TOKEN=ac346f0324647b68488d13fd52a9bbe8 MOODLE_API_TOKEN=
MOODLE_USER_PASSWORD=var-api-user-P1 MOODLE_USER_PASSWORD=
NEXT_PUBLIC_MOODLE_URL=https://02.premiumag.de:8081 NEXT_PUBLIC_MOODLE_URL=
# ─────────────────────────────────────────────── # ───────────────────────────────────────────────
# 📧 E-Mail Einstellungen (nur HUB Server) # 📧 E-Mail Einstellungen (nur HUB Server)
# ─────────────────────────────────────────────── # ───────────────────────────────────────────────
MAIL_SERVER=asmtp.mail.hostpoint.ch MAIL_SERVER=
MAIL_PORT=465 MAIL_PORT=
MAIL_USER=noreply@virtualairrescue.com MAIL_USER=
MAIL_PASSWORD=b7316PB8aDPCC%-& MAIL_PASSWORD=
# ─────────────────────────────────────────────── # ───────────────────────────────────────────────
# 🕹️ Discord OAuth (optional) # 🕹️ Discord OAuth (optional)
# ─────────────────────────────────────────────── # ───────────────────────────────────────────────
DISCORD_GUILD_ID=1077269395019141140 DISCORD_GUILD_ID=
DISCORD_OAUTH_CLIENT_ID=930384053344034846 DISCORD_OAUTH_CLIENT_ID=
DISCORD_OAUTH_SECRET=96aSvmIePqFTbGc54mad0QsZfDnYwhl1 DISCORD_OAUTH_SECRET=
DISCORD_BOT_TOKEN=OTMwMzg0MDUzMzQ0MDM0ODQ2.G7zIy-._hE3dTbtUv6sd7nIP2PUn3d8s-2MFk0x3nYMg8 DISCORD_BOT_TOKEN=
DISCORD_REDIRECT_URL=https://hub.premiumag.de/api/discord-redirect DISCORD_REDIRECT_URL=
NEXT_PUBLIC_DISCORD_URL=https://discord.com/oauth2/authorize?client_id=930384053344034846&response_type=code&redirect_uri=https%3A%2F%2Fhub.premiumag.de%2Fapi%2Fdiscord-redirect&scope=identify+guilds+email NEXT_PUBLIC_DISCORD_URL=

4
.gitignore vendored
View File

@@ -18,9 +18,7 @@ mkcert
# Local env files # Local env files
.env .env
.env.local .env.local
.env.development.local .env.prod
.env.test.local
.env.production.local
# Testing # Testing
coverage coverage

View File

@@ -34,30 +34,15 @@ export const StationForm = ({ station }: { station?: Station }) => {
<h2 className="card-title"> <h2 className="card-title">
<FileText className="w-5 h-5" /> Allgemeines <FileText className="w-5 h-5" /> Allgemeines
</h2> </h2>
<Input <Input form={form} label="BOS Rufname" name="bosCallsign" className="input-sm" />
form={form}
label="BOS Rufname"
name="bosCallsign"
className="input-sm"
/>
<Input <Input
form={form} form={form}
label="BOS Rufname (kurz)" label="BOS Rufname (kurz)"
name="bosCallsignShort" name="bosCallsignShort"
className="input-sm" className="input-sm"
/> />
<Input <Input form={form} label="Betreiber" name="operator" className="input-sm" />
form={form} <Input form={form} label="ATC Rufname" name="atcCallsign" className="input-sm" />
label="Betreiber"
name="operator"
className="input-sm"
/>
<Input
form={form}
label="ATC Rufname"
name="atcCallsign"
className="input-sm"
/>
<Input <Input
form={form} form={form}
label="FIR (Flight Information Region)" label="FIR (Flight Information Region)"
@@ -72,9 +57,7 @@ export const StationForm = ({ station }: { station?: Station }) => {
/> />
<label className="form-control w-full"> <label className="form-control w-full">
<span className="label-text text-lg flex items-center gap-2"> <span className="label-text text-lg flex items-center gap-2">BOS Nutzung</span>
BOS Nutzung
</span>
<select <select
className="input-sm select select-bordered select-sm" className="input-sm select select-bordered select-sm"
{...form.register("bosUse")} {...form.register("bosUse")}
@@ -94,9 +77,7 @@ export const StationForm = ({ station }: { station?: Station }) => {
<LocateIcon className="w-5 h-5" /> Standort + Ausrüstung <LocateIcon className="w-5 h-5" /> Standort + Ausrüstung
</h2> </h2>
<label className="form-control w-full"> <label className="form-control w-full">
<span className="label-text text-lg flex items-center gap-2"> <span className="label-text text-lg flex items-center gap-2">Land</span>
Land
</span>
<select <select
className="input-sm select select-bordered select-sm" className="input-sm select select-bordered select-sm"
{...form.register("country", {})} {...form.register("country", {})}
@@ -108,55 +89,30 @@ export const StationForm = ({ station }: { station?: Station }) => {
))} ))}
</select> </select>
</label> </label>
<Input <Input form={form} label="Bundesland" name="locationState" className="input-sm" />
form={form}
label="Bundesland"
name="locationState"
className="input-sm"
/>
<Input <Input
form={form} form={form}
label="Bundesland (kurz)" label="Bundesland (kurz)"
name="locationStateShort" name="locationStateShort"
className="input-sm" className="input-sm"
/> />
<span className="label-text text-lg flex items-center gap-2"> <span className="label-text text-lg flex items-center gap-2">Ausgerüstet mit:</span>
Ausgerüstet mit:
</span>
<div className="form-control space-y-2"> <div className="form-control space-y-2">
<label className="label cursor-pointer flex"> <label className="label cursor-pointer flex">
<span className="flex-1 text-left">Winde</span> <span className="flex-1 text-left">Winde</span>
<input <input type="checkbox" className="toggle" {...form.register("hasWinch")} />
type="checkbox"
className="toggle"
{...form.register("hasWinch")}
/>
</label> </label>
<label className="label cursor-pointer flex"> <label className="label cursor-pointer flex">
<span className="flex-1 text-left">Nachtsicht gerät</span> <span className="flex-1 text-left">Nachtsicht-Gerät</span>
<input <input type="checkbox" className="toggle" {...form.register("hasNvg")} />
type="checkbox"
className="toggle"
{...form.register("hasNvg")}
/>
</label> </label>
<label className="label cursor-pointer flex"> <label className="label cursor-pointer flex">
<span className="flex-1 text-left"> <span className="flex-1 text-left">24-Stunden Einsatzfähig</span>
24-Stunden Einsatzfähig <input type="checkbox" className="toggle" {...form.register("is24h")} />
</span>
<input
type="checkbox"
className="toggle"
{...form.register("is24h")}
/>
</label> </label>
<label className="label cursor-pointer flex"> <label className="label cursor-pointer flex">
<span className="flex-1 text-left">Bergetau</span> <span className="flex-1 text-left">Bergetau</span>
<input <input type="checkbox" className="toggle" {...form.register("hasRope")} />
type="checkbox"
className="toggle"
{...form.register("hasRope")}
/>
</label> </label>
</div> </div>
@@ -179,14 +135,8 @@ export const StationForm = ({ station }: { station?: Station }) => {
step="any" step="any"
/> />
<label className="label cursor-pointer flex"> <label className="label cursor-pointer flex">
<span className="text-lg flex-1 text-left"> <span className="text-lg flex-1 text-left">Reichweiten ausblenden</span>
Reichweiten ausblenden <input type="checkbox" className="toggle" {...form.register("hideRangeRings")} />
</span>
<input
type="checkbox"
className="toggle"
{...form.register("hideRangeRings")}
/>
</label> </label>
</div> </div>
</div> </div>
@@ -195,12 +145,7 @@ export const StationForm = ({ station }: { station?: Station }) => {
<h2 className="card-title"> <h2 className="card-title">
<PlaneIcon className="w-5 h-5" /> Hubschrauber <PlaneIcon className="w-5 h-5" /> Hubschrauber
</h2> </h2>
<Input <Input form={form} label="Hubschrauber Typ" name="aircraft" className="input-sm" />
form={form}
label="Hubschrauber Typ"
name="aircraft"
className="input-sm"
/>
<Input <Input
form={form} form={form}
formOptions={{ valueAsNumber: true }} formOptions={{ valueAsNumber: true }}
@@ -220,11 +165,7 @@ export const StationForm = ({ station }: { station?: Station }) => {
<div className="card bg-base-200 shadow-xl col-span-6"> <div className="card bg-base-200 shadow-xl col-span-6">
<div className="card-body "> <div className="card-body ">
<div className="flex w-full gap-4"> <div className="flex w-full gap-4">
<Button <Button isLoading={loading} type="submit" className="btn btn-primary flex-1">
isLoading={loading}
type="submit"
className="btn btn-primary flex-1"
>
Speichern Speichern
</Button> </Button>
{station && ( {station && (

View File

@@ -1,27 +0,0 @@
services:
redis:
container_name: redis
image: redis/redis-stack:latest
ports:
- "6379:6379"
volumes:
- "redis_data:/data"
# Für den Zugriff auf den Host
livekit-server:
image: livekit/livekit-server
container_name: livekit_server
restart: unless-stopped
ports:
- "7880:7880"
- "7881:7881"
- "7882:7882/udp"
volumes:
- "./livekit.yaml:/livekit.yaml"
command:
- "--config"
- "/livekit.yaml"
- "--node-ip=127.0.0.1"
volumes:
redis_data:
driver: local