reformat for gitea
This commit is contained in:
112
README.md
112
README.md
@ -1,15 +1,17 @@
|
||||
# Dusty Marble - RPNAB Invoicing Portal
|
||||
# 🧾 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.
|
||||
A single-page Rust web app for Rent & Petroleum Nordic AB, designed to streamline internal invoice processing and provide secure access for customers to view 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 primary goal is to increase operational efficiency by:
|
||||
|
||||
The application will include both a web UI and a command-line interface for administrative tasks.
|
||||
- Enabling admin users to upload structured CSV transaction data
|
||||
- Storing and linking those transactions to invoice records
|
||||
- Allowing customers to log in and view/download invoice documents (HTML or PDF)
|
||||
- Providing a command-line interface for admin-only tasks
|
||||
|
||||
---
|
||||
|
||||
@ -17,67 +19,67 @@ The application will include both a web UI and a command-line interface for admi
|
||||
|
||||
### 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 |
|
||||
| Layer | Tool | Description |
|
||||
|---------------|------------------|-------------|
|
||||
| Frontend | [Leptos](https://github.com/leptos-rs/leptos) | Rust-based SPA framework with SSR support |
|
||||
| Backend | [Axum](https://github.com/tokio-rs/axum) | Async Rust web framework |
|
||||
| Database | MariaDB + [`sqlx`](https://github.com/launchbadge/sqlx) | Compile-time verified SQL queries |
|
||||
| Migrations | [Goose](https://github.com/sifrr/goose) | SQL migration runner |
|
||||
| CSV Parsing | [`csv`](https://docs.rs/csv/latest/csv/) | High-performance CSV parser |
|
||||
| CLI Tools | Rust + [`clap`](https://github.com/clap-rs/clap) | Command-line admin tasks |
|
||||
| PDF Generation| HTML + `wkhtmltopdf` or `weasyprint` | Generate styled invoice documents |
|
||||
| Styling | Tailwind CSS (optional) | Utility-first styling framework |
|
||||
|
||||
---
|
||||
|
||||
## 🗺️ Development Plan
|
||||
## 🗺️ Development Roadmap
|
||||
|
||||
### Phase 1: Project Setup
|
||||
- [x] Set up Git repository
|
||||
- [ ] Initialize Cargo workspace
|
||||
- [ ] Create initial `README.md`
|
||||
- [ ] Set up Gitea repository
|
||||
- [x] Create Git repository
|
||||
- [ ] Initialize Rust workspace (`Cargo.toml`)
|
||||
- [ ] Set up frontend, backend, CLI structure
|
||||
- [x] Write project README
|
||||
|
||||
### 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 2: Infrastructure
|
||||
- [ ] Add `.env` and config boilerplate
|
||||
- [ ] Set up Goose migration framework
|
||||
- [ ] Connect to MariaDB using `sqlx`
|
||||
- [ ] Define initial DB schema (users, invoices, transactions)
|
||||
|
||||
### 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 3: Admin Functions
|
||||
- [ ] Implement admin login (cookie-based)
|
||||
- [ ] Create CLI tool for CSV uploads
|
||||
- [ ] Parse CSV → normalize → store in DB
|
||||
- [ ] Web UI to verify and review uploads
|
||||
|
||||
### Phase 4: Customer Portal
|
||||
- [ ] Implement customer login system
|
||||
- [ ] Create UI for listing invoices
|
||||
- [ ] Render invoices as HTML
|
||||
- [ ] Enable download of invoices as PDF
|
||||
- [ ] Implement customer login
|
||||
- [ ] Build UI to view invoice list
|
||||
- [ ] Render invoice details
|
||||
- [ ] Add option to download 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
|
||||
### Phase 5: Polish & Deploy
|
||||
- [ ] Input validation + error handling
|
||||
- [ ] Session persistence + CSRF protection
|
||||
- [ ] Serve behind reverse proxy (Caddy)
|
||||
- [ ] Deploy to FreeBSD jail
|
||||
|
||||
---
|
||||
|
||||
## 📁 Project Structure (planned)
|
||||
## 📁 Planned Project Structure
|
||||
|
||||
```text
|
||||
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
|
||||
├── frontend/ # Leptos SPA (Rust + WASM)
|
||||
├── backend/ # Axum HTTP API
|
||||
├── cli/ # Rust CLI binary for admin use
|
||||
├── shared/ # Common logic, models, parsing helpers
|
||||
├── migrations/ # Goose SQL migration scripts
|
||||
├── static/ # Public assets (PDF templates, CSS)
|
||||
├── .env # Local config (not checked in)
|
||||
└── Cargo.toml # Workspace definition
|
||||
|
||||
---
|
||||
🚧 Project Status
|
||||
|
||||
## 🚧 Status
|
||||
|
||||
> Project is in early planning and infrastructure phase.
|
||||
> Active development begins Q4 2025.
|
||||
This project is in the planning and bootstrapping phase.
|
||||
Initial development will begin in Q4 2025.
|
||||
|
||||
Reference in New Issue
Block a user