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
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.
- 📂 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
- Next.js - React Framework
- Prisma - ORM
- PostgreSQL - Datenbank
- NextAuth.js - Authentifizierung
- MinIO - Objektspeicher
- Tailwind CSS - CSS-Framework
- TypeScript - Programmiersprache
- Docker - Containerisierung
- Mailhog - E-Mail-Testserver
- Nodemailer - E-Mail-Versand für Node.js
- Axios - HTTP-Client für API-Anfragen
- Erste Schritte
- Entwicklungsumgebung einrichten
- Produktionsumgebung einrichten
- MinIO-Einrichtung
- E-Mail-Konfiguration
- HTTP-Anfragen mit Axios
- Testen
- Projektstruktur
- Beitragen
- Sicherheit
- Lizenz
- Kontakt
- Roadmap
Diese Anleitung führt Sie durch die Einrichtung sowohl der Entwicklungs- als auch der Produktionsumgebung.
Stellen Sie sicher, dass Sie folgende Tools installiert haben:
-
Klonen Sie das Repository:
git clone https://github.com/reedu-reengineering-education/AusReis.git cd AusReis
-
Erstellen Sie eine
.env
-Datei basierend auf dem Beispiel:cp .env.example .env
-
Konfigurieren Sie die Umgebungsvariablen: Bearbeiten Sie die
.env
-Datei und setzen Sie die erforderlichen Werte. -
Installieren Sie die npm-Pakete:
npm install
-
Starten Sie die Entwicklungsdatenbank und andere Dienste:
docker-compose up -d
Dies startet PostgreSQL, MinIO und Mailhog für Ihre Entwicklungsumgebung.
-
Führen Sie die Prisma-Migrationen aus:
npx prisma migrate dev
-
Starten Sie die Anwendung:
npm run dev
-
Konfigurieren Sie die Umgebungsvariablen für die Produktion: Erstellen Sie eine sichere
.env
-Datei mit produktionsbereiten Werten. -
Bauen Sie die Anwendung:
npm run build
-
Starten Sie den Produktionsserver:
npm run start
-
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
-
Führen Sie Prisma-Migrationen in der Produktion aus:
docker-compose -f docker-compose.prod.yml exec api npx prisma migrate deploy
MinIO wird als Objektspeichersystem verwendet. Es bietet eine S3-kompatible API für die Dateispeicherung.
-
MinIO läuft bereits im Docker-Compose-Setup.
-
Zugriff auf die MinIO-Konsole: Öffnen Sie die Administrationskonsole unter
http://localhost:9001
und melden Sie sich mit Ihren Zugangsdaten an. -
Bucket erstellen: Erstellen Sie in der MinIO-Konsole einen Bucket, z.B.
ausreis-bucket
. -
Anwendung konfigurieren: Aktualisieren Sie die Umgebungsvariablen in Ihrer
.env
-Datei mit den MinIO-Zugangsdaten.
AusReis verwendet Nodemailer für den E-Mail-Versand und Mailhog als SMTP-Testserver für die Entwicklungsumgebung.
In der Entwicklungsumgebung wird Mailhog verwendet, um E-Mails zu testen, ohne sie tatsächlich zu versenden.
- Mailhog läuft bereits im Docker-Compose-Setup.
- Zugriff auf die Mailhog-Weboberfläche: Öffnen Sie
http://localhost:8025
in Ihrem Browser. - Alle in der Entwicklungsumgebung gesendeten E-Mails werden von Mailhog abgefangen und können in der Weboberfläche eingesehen werden.
Für die Produktionsumgebung konfigurieren Sie Nodemailer mit Ihrem tatsächlichen SMTP-Server:
-
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
-
Stellen Sie sicher, dass Sie in Ihrer Anwendungslogik Nodemailer mit diesen Umgebungsvariablen konfigurieren.
AusReis verwendet Axios für HTTP-Anfragen. Axios ist ein beliebter, auf Promises basierender HTTP-Client für den Browser und Node.js.
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.
Um die Tests auszuführen, verwenden Sie den folgenden Befehl:
npm run test
/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
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!
- Forken Sie das Projekt
- Erstellen Sie Ihren Feature-Branch (
git checkout -b feature/AmazingFeature
) - Committen Sie Ihre Änderungen (
git commit -m 'Add some AmazingFeature'
) - Pushen Sie den Branch (
git push origin feature/AmazingFeature
) - Öffnen Sie einen Pull Request
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.
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Weitere Informationen finden Sie in der LICENSE
-Datei.
re:edu GmbH - @reedu_de - [email protected]
Projektlink: https://github.com/reedu-reengineering-education/AusReis
- 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!