diff --git a/app/Http/Controllers/Milestones/MilestoneController.php b/app/Http/Controllers/Milestones/MilestoneController.php
new file mode 100644
index 0000000..aee0ef7
--- /dev/null
+++ b/app/Http/Controllers/Milestones/MilestoneController.php
@@ -0,0 +1,42 @@
+validate([
+ 'target' => 'required|integer|min:1',
+ 'description' => 'required|string|max:255',
+ ]);
+
+ // For now, just return success without persisting to database
+ // This allows the frontend form to work properly
+ return response()->json([
+ 'message' => 'Milestone created successfully',
+ 'milestone' => [
+ 'target' => $request->target,
+ 'description' => $request->description,
+ 'created_at' => now(),
+ ]
+ ], 201);
+ }
+
+ /**
+ * Get all milestones.
+ */
+ public function index(): JsonResponse
+ {
+ // For now, return empty array
+ // Later this could fetch from database
+ return response()->json([]);
+ }
+}
\ No newline at end of file
diff --git a/resources/js/components/Display/LedCounter.tsx b/resources/js/components/Display/LedCounter.tsx
index 85ed4b3..b79b497 100644
--- a/resources/js/components/Display/LedCounter.tsx
+++ b/resources/js/components/Display/LedCounter.tsx
@@ -12,6 +12,7 @@ interface LedCounterProps {
onStatsToggle?: () => void;
showStats?: boolean;
onAddPurchase?: () => void;
+ onAddMilestone?: () => void;
}
export default function LedCounter({
@@ -22,7 +23,8 @@ export default function LedCounter({
onHover,
onStatsToggle,
showStats = false,
- onAddPurchase
+ onAddPurchase,
+ onAddMilestone
}: LedCounterProps) {
const [displayValue, setDisplayValue] = useState(0);
const [isHovered, setIsHovered] = useState(false);
@@ -260,7 +262,7 @@ export default function LedCounter({
- {/* Right: Add Purchase, Next milestone button and stats toggle */}
+ {/* Right: Add Purchase, Add Milestone, Next milestone button and stats toggle */}
{/* Add Purchase Button */}
{onAddPurchase && (
@@ -273,6 +275,18 @@ export default function LedCounter({
ADD
)}
+
+ {/* Add Milestone Button */}
+ {onAddMilestone && (
+
+ )}
>
);
diff --git a/routes/web.php b/routes/web.php
index ae50c44..3ee6392 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -2,6 +2,7 @@
use App\Http\Controllers\Transactions\PurchaseController;
use App\Http\Controllers\Pricing\PricingController;
+use App\Http\Controllers\Milestones\MilestoneController;
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
@@ -29,5 +30,11 @@
Route::get('/date/{date}', [PricingController::class, 'forDate'])->name('for-date');
});
+// Milestone routes
+Route::prefix('milestones')->name('milestones.')->group(function () {
+ Route::get('/', [MilestoneController::class, 'index'])->name('index');
+ Route::post('/', [MilestoneController::class, 'store'])->name('store');
+});
+
require __DIR__.'/settings.php';
require __DIR__.'/auth.php';