Skip to content

reedu-reengineering-education/AusReis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AusReis Logo

AusReis

Eine flexible und schnelle Lösung zur Verwaltung von Ausgaben und Reisekosten, selbst gehostet oder in der Cloud.

Open-Source · 100% JavaScript/TypeScript · Next.js

Über das Projekt

AusReis ist eine Open-Source-Anwendung zur Verwaltung von Ausgaben und Reisekosten, die vollständig mit Next.js und Prisma entwickelt wurde. Die App ist schnell, flexibel und kann sowohl lokal als auch in der Cloud gehostet werden. Sie bietet vollständige Kontrolle über Ihre eigenen Daten und Arbeitsabläufe. Dieses Projekt wurde von re:edu erstellt.

Funktionen

  • 📂 Verwaltung von Ausgaben und Reisekosten mit Dateispeicherung
  • 🔐 Sicheres Authentifizierungssystem mit NextAuth.js
  • 📧 Integriertes E-Mail-System für Benachrichtigungen
  • 🗄️ Robuste Datenbankunterstützung mit PostgreSQL
  • 🖼️ Datei-Upload und -Verwaltung mit MinIO
  • 📱 Responsive Benutzeroberfläche mit Tailwind CSS

Verwendete Technologien

Inhaltsverzeichnis

  1. Erste Schritte
  2. Entwicklungsumgebung einrichten
  3. Produktionsumgebung einrichten
  4. MinIO-Einrichtung
  5. E-Mail-Konfiguration
  6. HTTP-Anfragen mit Axios
  7. Testen
  8. Projektstruktur
  9. Beitragen
  10. Sicherheit
  11. Lizenz
  12. Kontakt
  13. Roadmap

Erste Schritte

Diese Anleitung führt Sie durch die Einrichtung sowohl der Entwicklungs- als auch der Produktionsumgebung.

Voraussetzungen

Stellen Sie sicher, dass Sie folgende Tools installiert haben:

Entwicklungsumgebung einrichten

  1. Klonen Sie das Repository:

    git clone https://github.com/reedu-reengineering-education/AusReis.git
    cd AusReis
  2. Erstellen Sie eine .env-Datei basierend auf dem Beispiel:

    cp .env.example .env
  3. Konfigurieren Sie die Umgebungsvariablen: Bearbeiten Sie die .env-Datei und setzen Sie die erforderlichen Werte.

  4. Installieren Sie die npm-Pakete:

    npm install
  5. Starten Sie die Entwicklungsdatenbank und andere Dienste:

    docker-compose up -d

    Dies startet PostgreSQL, MinIO und Mailhog für Ihre Entwicklungsumgebung.

  6. Führen Sie die Prisma-Migrationen aus:

    npx prisma migrate dev
  7. Starten Sie die Anwendung:

    npm run dev

Produktionsumgebung einrichten

  1. Konfigurieren Sie die Umgebungsvariablen für die Produktion: Erstellen Sie eine sichere .env-Datei mit produktionsbereiten Werten.

  2. Bauen Sie die Anwendung:

    npm run build
  3. Starten Sie den Produktionsserver:

    npm run start
  4. Docker in der Produktion: Für eine produktionsähnliche Docker-Einrichtung führen Sie Folgendes aus:

    docker-compose -f docker-compose.prod.yml up -d
  5. Führen Sie Prisma-Migrationen in der Produktion aus:

    docker-compose -f docker-compose.prod.yml exec api npx prisma migrate deploy

MinIO-Einrichtung

MinIO wird als Objektspeichersystem verwendet. Es bietet eine S3-kompatible API für die Dateispeicherung.

  1. MinIO läuft bereits im Docker-Compose-Setup.

  2. Zugriff auf die MinIO-Konsole: Öffnen Sie die Administrationskonsole unter http://localhost:9001 und melden Sie sich mit Ihren Zugangsdaten an.

  3. Bucket erstellen: Erstellen Sie in der MinIO-Konsole einen Bucket, z.B. ausreis-bucket.

  4. Anwendung konfigurieren: Aktualisieren Sie die Umgebungsvariablen in Ihrer .env-Datei mit den MinIO-Zugangsdaten.

E-Mail-Konfiguration

AusReis verwendet Nodemailer für den E-Mail-Versand und Mailhog als SMTP-Testserver für die Entwicklungsumgebung.

Entwicklungsumgebung

In der Entwicklungsumgebung wird Mailhog verwendet, um E-Mails zu testen, ohne sie tatsächlich zu versenden.

  1. Mailhog läuft bereits im Docker-Compose-Setup.
  2. Zugriff auf die Mailhog-Weboberfläche: Öffnen Sie http://localhost:8025 in Ihrem Browser.
  3. Alle in der Entwicklungsumgebung gesendeten E-Mails werden von Mailhog abgefangen und können in der Weboberfläche eingesehen werden.

Produktionsumgebung

Für die Produktionsumgebung konfigurieren Sie Nodemailer mit Ihrem tatsächlichen SMTP-Server:

  1. Aktualisieren Sie die folgenden Umgebungsvariablen in Ihrer .env-Datei:

    EMAIL_SERVER_HOST=Ihr_SMTP_Server
    EMAIL_SERVER_PORT=Ihr_SMTP_Port
    EMAIL_SERVER_USER=Ihr_SMTP_Benutzername
    EMAIL_SERVER_PASSWORD=Ihr_SMTP_Passwort
    
  2. Stellen Sie sicher, dass Sie in Ihrer Anwendungslogik Nodemailer mit diesen Umgebungsvariablen konfigurieren.

HTTP-Anfragen mit Axios

AusReis verwendet Axios für HTTP-Anfragen. Axios ist ein beliebter, auf Promises basierender HTTP-Client für den Browser und Node.js.

Beispiel für die Verwendung von Axios:

import axios from "axios";

// GET-Anfrage
async function fetchData() {
  try {
    const response = await axios.get("/api/data");
    console.log(response.data);
  } catch (error) {
    console.error("Fehler beim Abrufen der Daten:", error);
  }
}

// POST-Anfrage
async function sendData(data) {
  try {
    const response = await axios.post("/api/submit", data);
    console.log("Antwort:", response.data);
  } catch (error) {
    console.error("Fehler beim Senden der Daten:", error);
  }
}

Axios bietet eine einfache und konsistente API für das Senden von HTTP-Anfragen. Es unterstützt automatische Transformationen für JSON-Daten, Interceptors für Anfragen und Antworten, und bietet eine gute Fehlerbehandlung.

Testen

Um die Tests auszuführen, verwenden Sie den folgenden Befehl:

npm run test

Projektstruktur

  • /pages: Next.js-Seiten und API-Routen
  • /components: Wiederverwendbare React-Komponenten
  • /prisma: Prisma-Schema und Migrationen
  • /public: Statische Assets
  • /styles: Globale Styles und Tailwind-Konfiguration
  • /lib: Hilfsfunktionen und Dienstprogramme

Beitragen

Wir begrüßen Beiträge! Wenn Sie einen Vorschlag haben, der dieses Projekt verbessern würde, forken Sie bitte das Repo und erstellen Sie einen Pull Request. Vergessen Sie nicht, dem Projekt einen Stern zu geben! Vielen Dank!

Schritte:

  1. Forken Sie das Projekt
  2. Erstellen Sie Ihren Feature-Branch (git checkout -b feature/AmazingFeature)
  3. Committen Sie Ihre Änderungen (git commit -m 'Add some AmazingFeature')
  4. Pushen Sie den Branch (git push origin feature/AmazingFeature)
  5. Öffnen Sie einen Pull Request

Sicherheit

AusReis nimmt die Sicherheit Ihrer Daten ernst. Wir verwenden:

  • Sichere Authentifizierung mit NextAuth.js
  • Verschlüsselte Datenbankverbindungen
  • Sichere Dateispeicherung mit MinIO
  • Regelmäßige Sicherheitsupdates für alle Abhängigkeiten

Wenn Sie eine Sicherheitslücke entdecken, erstellen Sie bitte ein Issue oder kontaktieren Sie uns direkt.

Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert. Weitere Informationen finden Sie in der LICENSE-Datei.

Kontakt

re:edu GmbH - @reedu_de - [email protected]

Projektlink: https://github.com/reedu-reengineering-education/AusReis

Roadmap

  • Implementierung von Berichterstellung und Analysen
  • Integration mit gängigen Buchhaltungssoftware-Lösungen
  • Mehrsprachige Unterstützung
  • Mobile App-Entwicklung
  • Erweiterung der API für Drittanbieter-Integrationen

Haben Sie Ideen für neue Funktionen? Lassen Sie es uns wissen, indem Sie ein Issue erstellen!

About

Auslagen und Reisekosten

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages