Update README.md

Initial draft proposed by ChatGPT
This commit is contained in:
2025-10-17 09:01:07 +02:00
parent 04133a69a0
commit 3ad22163af

View File

@ -1,3 +1,83 @@
# dusty-marble
# Dusty Marble - RPNAB Invoicing Portal
Functional & test-driven invoicing system
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](https://github.com/leptos-rs/leptos) | Rust SPA framework with reactive UI |
| Backend | [Axum](https://github.com/tokio-rs/axum) | Lightweight async Rust web framework |
| Database | MariaDB + [`sqlx`](https://github.com/launchbadge/sqlx) | Compile-time checked queries |
| Migrations | [Goose](https://github.com/sifrr/goose) | Simple SQL-based migration tool |
| CLI Tooling | Rust + [`clap`](https://github.com/clap-rs/clap) | For admin-only workflows |
| CSV Parsing | [`csv`](https://docs.rs/csv/latest/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
- [x] 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.