jakob 3ad22163af Update README.md
Initial draft proposed by ChatGPT
2025-10-17 09:01:07 +02:00
2025-04-23 19:09:40 +02:00
2025-04-23 19:09:40 +02:00
2025-10-17 09:01:07 +02:00

Dusty Marble - RPNAB Invoicing Portal

This is a Rust-based single-page web application for Rent & Petroleum Nordic AB, designed to streamline internal operations and provide customers with access to their invoice documents.

🎯 Project Goal

The primary goal is to make invoicing more efficient by:

  • Allowing internal users to upload structured transaction lists (CSV)
  • Converting those transactions into a format suitable for invoice attachments
  • Giving customers secure access to view/download their invoices

The application will include both a web UI and a command-line interface for administrative tasks.


🧰 Tech Stack

Core Technologies

Layer Tool Notes
Frontend Leptos Rust SPA framework with reactive UI
Backend Axum Lightweight async Rust web framework
Database MariaDB + sqlx Compile-time checked queries
Migrations Goose Simple SQL-based migration tool
CLI Tooling Rust + clap For admin-only workflows
CSV Parsing csv Robust parser with serde integration
PDF Generation HTML + wkhtmltopdf or weasyprint For generating styled invoice documents
Styling Tailwind CSS (optional) Utility-first styling

🗺️ Development Plan

Phase 1: Project Setup

  • Set up Git repository
  • Initialize Cargo workspace
  • Create initial README.md
  • Set up Gitea repository

Phase 2: Core Infrastructure

  • Set up frontend/ and backend/ crates
  • Configure sqlx and Goose for MariaDB
  • Define initial DB schema
  • Add .env for local secrets

Phase 3: Admin Interface

  • Implement login system for internal user
  • Create CLI for uploading CSV files
  • Parse CSV and store transactions in DB
  • Implement basic web UI for uploading and verifying CSV data

Phase 4: Customer Portal

  • Implement customer login system
  • Create UI for listing invoices
  • Render invoices as HTML
  • Enable download of invoices as PDF

Phase 5: Polish and Deployment

  • Add basic access logging
  • Add error handling and input validation
  • Set up reverse proxy (e.g., Caddy) for HTTPS
  • Package and deploy to FreeBSD jail

📁 Project Structure (planned)

rpnab-invoicing/
├── frontend/       # Leptos SPA
├── backend/        # Axum web API
├── cli/            # CSV import + admin commands
├── shared/         # Models, helpers, reused logic
├── migrations/     # Goose SQL migration files
├── static/         # Public files (PDF template, CSS)
├── .env            # DB and secret configs (local only)
└── Cargo.toml

🚧 Status

Project is in early planning and infrastructure phase.
Active development begins Q4 2025.

Description
Functional & test-driven invoicing system
Readme MIT 34 KiB