Reduce Transfer storage price to GHS 0.15 per GB per month.
Deploy Ladill Transfer / deploy (push) Successful in 40s

Updates config default, env examples, and removes hardcoded GHS 1.00 copy on the dashboard.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-06-08 10:45:12 +00:00
co-authored by Cursor
parent 45ccd04163
commit e76955eaa4
12 changed files with 12 additions and 12 deletions
+1 -1
View File
@@ -37,7 +37,7 @@ BILLING_API_KEY_TRANSFER=
IDENTITY_API_URL=https://ladill.com/api
IDENTITY_API_KEY_TRANSFER=
TRANSFER_PRICE_PER_GB_MONTH=1.00
TRANSFER_PRICE_PER_GB_MONTH=0.15
TRANSFER_MAX_FILE_BYTES=524288000
TRANSFER_MAX_FILES=20
TRANSFER_DEFAULT_RETENTION_DAYS=30
+1 -1
View File
@@ -2,7 +2,7 @@
Standalone app for **secure file sharing** at `transfer.ladill.com` — upload files,
get a QR code + share link, control retention, track downloads. Storage bills at
**GHS 1.00/GB/month** from the platform UserWallet.
**GHS 0.15/GB/month** from the platform UserWallet.
Public scans stay at `ladill.com/q/<code>`. The platform forwards transfer codes
to this app (`TransferQrForwarder` on the monolith).
@@ -61,7 +61,7 @@ class AccountController extends Controller
$storageBytes = (int) $activeTransfers->sum('storage_bytes');
$storageGb = round($storageBytes / (1024 * 1024 * 1024), 2);
$pricePerGb = (float) config('transfer.price_per_gb_month', 1.0);
$pricePerGb = (float) config('transfer.price_per_gb_month', 0.15);
$monthlyTotalGhs = round($activeTransfers->sum(fn (Transfer $transfer) => $transfer->monthlyCostGhs()), 2);
return view('qr.account.billing', [
+1 -1
View File
@@ -70,7 +70,7 @@ class AfiaController extends Controller
->whereNotNull('expires_at')
->whereBetween('expires_at', [now(), now()->addDays(7)])
->count(),
'storage_price_per_gb_month_ghs' => number_format((float) config('transfer.price_per_gb_month', 1.0), 2),
'storage_price_per_gb_month_ghs' => number_format((float) config('transfer.price_per_gb_month', 0.15), 2),
];
if ($account->public_id) {
@@ -31,7 +31,7 @@ class FilesController extends Controller
'files' => $files,
'storageBytes' => (int) $storageBytes,
'storageGb' => round($storageBytes / (1024 * 1024 * 1024), 2),
'pricePerGb' => (float) config('transfer.price_per_gb_month', 1.0),
'pricePerGb' => (float) config('transfer.price_per_gb_month', 0.15),
]);
}
}
@@ -61,7 +61,7 @@ class OverviewController extends Controller
}
$storageGb = round($storageBytes / (1024 * 1024 * 1024), 2);
$monthlyEstimateGhs = round($storageGb * (float) config('transfer.price_per_gb_month', 1.0), 2);
$monthlyEstimateGhs = round($storageGb * (float) config('transfer.price_per_gb_month', 0.15), 2);
return view('transfer.dashboard', [
'activeCount' => $activeCount,
@@ -42,7 +42,7 @@ class TransferController extends Controller
return view('transfer.transfers.create', [
'defaultRetentionDays' => (int) config('transfer.default_retention_days', 30),
'maxFiles' => (int) config('transfer.max_files_per_transfer', 20),
'pricePerGb' => (float) config('transfer.price_per_gb_month', 1.0),
'pricePerGb' => (float) config('transfer.price_per_gb_month', 0.15),
]);
}
+1 -1
View File
@@ -79,6 +79,6 @@ class Transfer extends Model
public function monthlyCostGhs(): float
{
return round($this->storageGb() * (float) config('transfer.price_per_gb_month', 1.0), 2);
return round($this->storageGb() * (float) config('transfer.price_per_gb_month', 0.15), 2);
}
}
+1 -1
View File
@@ -96,7 +96,7 @@ class AfiaService
private function transferSystemPrompt(string $ctx): string
{
$pricePerGb = number_format((float) config('transfer.price_per_gb_month', 1.0), 2);
$pricePerGb = number_format((float) config('transfer.price_per_gb_month', 0.15), 2);
return <<<PROMPT
You are Afia, the assistant inside Ladill Transfer (transfer.ladill.com).
+1 -1
View File
@@ -2,7 +2,7 @@
return [
// GHS per GB per month of retention (see qr-suite-decomposition.md §7.3).
'price_per_gb_month' => (float) env('TRANSFER_PRICE_PER_GB_MONTH', 1.0),
'price_per_gb_month' => (float) env('TRANSFER_PRICE_PER_GB_MONTH', 0.15),
// Max single-file upload size (bytes). Default 500 MB.
'max_file_bytes' => (int) env('TRANSFER_MAX_FILE_BYTES', 524288000),
+1 -1
View File
@@ -37,7 +37,7 @@ BILLING_API_KEY_TRANSFER=
IDENTITY_API_URL=https://ladill.com/api
IDENTITY_API_KEY_TRANSFER=
TRANSFER_PRICE_PER_GB_MONTH=1.00
TRANSFER_PRICE_PER_GB_MONTH=0.15
TRANSFER_MAX_FILE_BYTES=524288000
TRANSFER_MAX_FILES=20
TRANSFER_DEFAULT_RETENTION_DAYS=30
+1 -1
View File
@@ -58,7 +58,7 @@
<div class="rounded-2xl border border-indigo-100 bg-indigo-50/60 p-6">
<p class="text-xs font-medium uppercase tracking-wide text-indigo-600">Wallet balance</p>
<p class="mt-1.5 text-2xl font-semibold text-slate-900">{{ $fmt($balanceMinor) }}</p>
<p class="mt-2 text-sm text-slate-600">Storage is billed at GHS 1.00 per GB per month from your Ladill wallet.</p>
<p class="mt-2 text-sm text-slate-600">Storage is billed at GHS {{ number_format((float) config('transfer.price_per_gb_month', 0.15), 2) }} per GB per month from your Ladill wallet.</p>
<div class="mt-4 space-y-3">
<a href="{{ route('transfer.transfers.create') }}" class="flex items-center justify-between rounded-xl border border-white bg-white px-4 py-3 text-sm hover:bg-indigo-50/50">
<span class="font-medium text-slate-700">New transfer</span>