import React, { useCallback, useEffect, useState } from 'react'; import { Link } from 'react-router-dom'; import { ArrowLeft, ArrowUpCircle, CheckCircle2, Info, Sparkles } from 'lucide-react'; import { api } from '@/api'; import { useAuth } from '@/hooks/useAuth'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; export default function AboutPage() { const { user } = useAuth(); const [about, setAbout] = useState(null); const [loading, setLoading] = useState(true); const [updateStatus, setUpdateStatus] = useState(null); const load = useCallback(async () => { setLoading(true); try { setAbout(await api.about()); } finally { setLoading(false); } }, []); useEffect(() => { load(); }, [load]); useEffect(() => { api.updateStatus().then(setUpdateStatus).catch(() => {}); }, []); return (
{about?.name || 'BillTracker'} {about?.description || ''}
{/* Version — with update status for admins */}

Version

v{about?.version || '...'}

{updateStatus && (
{updateStatus.has_update ? ( v{updateStatus.latest_version} available ) : updateStatus.up_to_date ? ( Up to date ) : null}
)}

Backend

{about?.stack?.backend || 'Node.js / Express'}

Storage

{about?.stack?.database || 'SQLite'}

Produced with AI assistance

BillTracker is self-hosted software for personal bill planning and history. This product was produced with the assistance of AI.

{/* Only shown when the visitor is not signed in */} {user == null && ( )}
{/* Easter egg — barely visible, reveals on hover for curious explorers */}
); }