remove environments from git
This commit is contained in:
82
.env.example
Normal file
82
.env.example
Normal 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=
|
||||||
74
.env.prod
74
.env.prod
@@ -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
4
.gitignore
vendored
@@ -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
|
||||||
|
|||||||
@@ -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 && (
|
||||||
|
|||||||
@@ -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
|
|
||||||
Reference in New Issue
Block a user