Index: components/BuildCard.tsx
===================================================================
--- components/BuildCard.tsx	(revision ae5d054380355a32555383768cf7c4a780c9028d)
+++ components/BuildCard.tsx	(revision 8a7f936ef2c6040183ae33f4b63947eecf8bf3b2)
@@ -1,36 +1,79 @@
-import React from 'react';
-import { Card, CardMedia, CardContent, Typography, Box, Chip } from '@mui/material';
+import React, {useEffect, useState} from 'react';
+import {Card, CardContent, CardMedia, Typography, Box, Chip} from '@mui/material';
 import StarIcon from '@mui/icons-material/Star';
-// import PersonIcon from '@mui/icons-material/Person';
+import {onGetBuildDetails} from "../pages/+Layout.telefunc";
 
-export default function BuildCard({ build, onClick }: { build: any, onClick: () => void }) {
-    const formattedPrice = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'EUR' }).format(build.total_price || 0);
+export default function BuildCard({build, onClick}: { build: any, onClick?: () => void }) {
+    const [caseImage, setCaseImage] = useState<string>("https://placehold.co/600x400?text=PC+Build");
+    const [imageLoading, setImageLoading] = useState(true);
+
+    const formattedPrice = new Intl.NumberFormat('en-US', {
+        style: 'currency',
+        currency: 'EUR'
+    }).format(build.total_price || 0);
+
+    useEffect(() => {
+        onGetBuildDetails({buildId: build.id})
+            .then(details => {
+                const caseComponent = details.components.find((c: any) => c.type === 'case');
+                setCaseImage(caseComponent?.imgUrl || caseComponent?.imgUrl || "https://placehold.co/600x400?text=PC+Build");
+            })
+            .catch(() => {
+            })
+            .finally(() => setImageLoading(false));
+    }, [build.id]);
 
     return (
         <Card
-            sx={{ height: '100%', display: 'flex', flexDirection: 'column', cursor: 'pointer', transition: 'all 0.2s', '&:hover': { transform: 'translateY(-4px)', boxShadow: 6 } }}
             onClick={onClick}
+            sx={{
+                width: '100%',
+                height: '100%',
+                display: 'flex',
+                flexDirection: 'column',
+                cursor: onClick ? 'pointer' : 'default',
+                transition: 'transform 0.2s, box-shadow 0.2s',
+                '&:hover': onClick ? {
+                    transform: 'translateY(-4px)',
+                    boxShadow: 6
+                } : {},
+                position: 'relative'
+            }}
         >
-            <CardMedia
-                component="img"
-                height="160"
-                image={build.img_url || "https://placehold.co/600x400?text=PC+Build"}
-                alt={build.name}
-            />
-            <CardContent sx={{ flexGrow: 1, pb: 1 }}>
-                <Typography gutterBottom variant="h6" noWrap title={build.name}>
-                    {build.name}
-                </Typography>
+            <Box sx={{position: 'relative', paddingTop: '75%'}}>
+                <CardMedia
+                    component="img"
+                    image={caseImage || '/placeholder-pc.png'}
+                    alt={build.name}
+                    sx={{
+                        position: 'absolute',
+                        top: 0,
+                        left: 0,
+                        width: '100%',
+                        height: '100%',
+                        objectFit: 'contain',
+                        p: 2,
+                        bgcolor: '#f5f5f5'
+                    }}
+                />
+            </Box>
 
-                {/*Ne se renderira user-ot*/}
-                <Box sx={{ display: 'flex', alignItems: 'center', mb: 1, color: 'text.secondary' }}>
-                    {/*    <PersonIcon sx={{ fontSize: 16, mr: 0.5 }} />*/}
-                    {/*    <Typography variant="caption">{build.user || 'Unknown'}</Typography>*/}
+            <CardContent sx={{flexGrow: 1, display: 'flex', flexDirection: 'column', justifyContent: 'space-between'}}>
+                <Box sx={{mb: 2}}>
+                    <Typography variant="h6" component="div" fontWeight="bold" wrap title={build.name}>
+                        {build.name}
+                    </Typography>
                 </Box>
 
-                <Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', mt: 'auto' }}>
-                    <Chip label={formattedPrice} size="small" color="primary" variant="outlined" />
-                    <Box sx={{ display: 'flex', alignItems: 'center' }}>
-                        <StarIcon fontSize="small" sx={{ color: '#faaf00', mr: 0.5 }} />
+                <Box sx={{display: 'flex', justifyContent: 'space-between', alignItems: 'center', mt: 'auto'}}>
+                    <Chip
+                        label={formattedPrice}
+                        color="primary"
+                        variant="outlined"
+                        size="small"
+                        sx={{fontWeight: 'bold'}}
+                    />
+                    <Box sx={{display: 'flex', alignItems: 'center'}}>
+                        <StarIcon sx={{color: '#faaf00', fontSize: 20, mr: 0.5}}/>
                         <Typography variant="body2" fontWeight="bold">
                             {Number(build.avgRating || 5).toFixed(1)}
Index: components/BuildDetailsDialog.tsx
===================================================================
--- components/BuildDetailsDialog.tsx	(revision ae5d054380355a32555383768cf7c4a780c9028d)
+++ components/BuildDetailsDialog.tsx	(revision 8a7f936ef2c6040183ae33f4b63947eecf8bf3b2)
@@ -1,6 +1,6 @@
 import React, { useEffect, useState } from 'react';
 import {
-    Dialog, DialogTitle, DialogContent, Button, Grid, Box, Typography,
-    IconButton, Tab, Tabs, Table, TableBody, TableCell, TableRow, Rating, TextField, Avatar, Chip
+    Dialog, DialogTitle, DialogContent, DialogActions, Button, Grid, Box, Typography,
+    IconButton, Tab, Tabs, Table, TableBody, TableCell, TableRow, Rating, TextField, Avatar, Chip, Alert
 } from '@mui/material';
 import CloseIcon from '@mui/icons-material/Close';
@@ -9,12 +9,14 @@
 import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder';
 import PersonIcon from "@mui/icons-material/Person";
-import { onGetBuildDetails, onSetReview, onToggleFavorite } from '../pages/+Layout.telefunc';
+import {onGetBuildDetails, onSetReview, onToggleFavorite, onCloneBuild, onSetRating} from '../pages/+Layout.telefunc';
 
 const formatPrice = (price: any) => new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(Number(price) || 0);
 
-export default function BuildDetailsDialog({ open, buildId, onClose, onClone, currentUser }: any) {
+export default function BuildDetailsDialog({ open, buildId, onClose, currentUser }: any) {
     const [details, setDetails] = useState<any>(null);
     const [loading, setLoading] = useState(false);
     const [tabIndex, setTabIndex] = useState(0);
+    const [cloneDialogOpen, setCloneDialogOpen] = useState(false);
+    const [cloningBuildId, setCloningBuildId] = useState<number | null>(null);
 
     const [reviewText, setReviewText] = useState("");
@@ -45,7 +47,15 @@
     const handleSubmitReview = async () => {
         if (!currentUser) return alert("Please login to review.");
-        await onSetReview({ buildId, content: reviewText });
-
-        setReviewText("");
+
+        await onSetReview({
+            buildId,
+            content: reviewText,
+            // rating: ratingVal
+        });
+
+        await onSetRating({
+            buildId,
+            value: ratingVal
+        })
 
         const refreshed = await onGetBuildDetails({ buildId });
@@ -53,158 +63,204 @@
     };
 
+    const handleCloneConfirm = async () => {
+        if (!cloningBuildId) return;
+
+        try {
+            const newBuildId = await onCloneBuild({ buildId: cloningBuildId });
+
+            window.location.href = `/forge?buildId=${newBuildId}`;
+
+            setCloneDialogOpen(false);
+            setCloningBuildId(null);
+        } catch (e) {
+            alert("Failed to clone build. Please try again.");
+        }
+    };
+
+
     if (!open) return null;
 
-    // @ts-ignore
     return (
-        <Dialog open={open} onClose={onClose} maxWidth="md" fullWidth scroll="paper">
-            {loading || !details ? (
-                <Box sx={{ p: 5, textAlign: 'center' }}>Loading Forge Schematics...</Box>
-            ) : (
-                <>
-                    <DialogTitle sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', bgcolor: '#ff8201' }}>
-                        <Box>
-                            <Typography variant="h5" fontWeight="bold">{details.name}</Typography>
-                            <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
-                                <PersonIcon sx={{ fontSize: 16 }} />
-                                <Typography variant="subtitle2" color="text.secondary" fontWeight="bold">
-                                    by {details.creator}
-                                </Typography>
-                                <Chip label={formatPrice(details.totalPrice)} size="small" color="primary" variant="outlined" />
+        <>
+            <Dialog open={open} onClose={onClose} maxWidth="md" fullWidth scroll="paper">
+                {loading || !details ? (
+                    <Box sx={{ p: 5, textAlign: 'center' }}>Loading Forge Schematics...</Box>
+                ) : (
+                    <>
+                        <DialogTitle sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', bgcolor: '#ff8201' }}>
+                            <Box>
+                                <Typography variant="h5" fontWeight="bold">{details.name}</Typography>
+                                <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
+                                    <PersonIcon sx={{ fontSize: 16 }} />
+                                    <Typography variant="subtitle2" color="text.secondary" fontWeight="bold">
+                                        by {details.creator}
+                                    </Typography>
+                                    <Chip label={formatPrice(details.totalPrice)} size="small" color="primary" variant="outlined" />
+                                </Box>
                             </Box>
-                        </Box>
-                        <IconButton onClick={onClose}><CloseIcon /></IconButton>
-                    </DialogTitle>
-
-                    <DialogContent sx={{ p: 0 }}>
-                        <Box sx={{ borderBottom: 1, borderColor: 'divider', px: 2, bgcolor: 'primary', position: 'sticky', top: 0, zIndex: 1 }}>
-                            <Tabs value={tabIndex} onChange={(_, v) => setTabIndex(v)}>
-                                <Tab label="Specs" />
-                                <Tab label={`Reviews (${details.ratingStatistics.ratingCount})`} />
-                            </Tabs>
-                        </Box>
-
-                        <Box sx={{ p: 3 }}>
-                            {tabIndex === 0 && (
-                                <Grid container spacing={2}>
-                                    <Grid item xs={12} md={8}>
-                                        <Table size="small">
-                                            <TableBody>
-                                                {details.components.map((comp: any) => (
-                                                    <TableRow key={comp.id}>
-                                                        <TableCell sx={{ width: 50 }}>
-                                                            <Avatar
-                                                                src={comp.img_url || undefined}
-                                                                variant="rounded"
-                                                                sx={{ width: 45, height: 45, bgcolor: '#ff8201'}}
-                                                            >
-                                                                {comp.type?.substring(0, 3)?.toUpperCase()}
-                                                            </Avatar>
-                                                        </TableCell>
-                                                        <TableCell>
-                                                            <Typography variant="body2" color="text.secondary" sx={{ fontSize: '0.75rem', textTransform: 'uppercase' }}>
-                                                                {comp.type}
-                                                            </Typography>
-                                                            <Typography variant="body1" fontWeight="500">
-                                                                {comp.brand} {comp.name}
-                                                            </Typography>
-                                                        </TableCell>
-                                                        <TableCell align="right" sx={{ fontWeight: 'bold', color: '#ff8201' }}>
-                                                            {formatPrice(comp.price)}
+                            <IconButton onClick={onClose}><CloseIcon /></IconButton>
+                        </DialogTitle>
+
+                        <DialogContent sx={{ p: 0 }}>
+                            <Box sx={{ borderBottom: 1, borderColor: 'divider', px: 2, bgcolor: 'primary', position: 'sticky', top: 0, zIndex: 1 }}>
+                                <Tabs value={tabIndex} onChange={(_, v) => setTabIndex(v)}>
+                                    <Tab label="Specs" />
+                                    <Tab label={`Reviews (${details.ratingStatistics.ratingCount})`} />
+                                </Tabs>
+                            </Box>
+
+                            <Box sx={{ p: 3 }}>
+                                {tabIndex === 0 && (
+                                    <Grid container spacing={2}>
+                                        <Grid item xs={12} md={8}>
+                                            <Table size="small">
+                                                <TableBody>
+                                                    {details.components.map((comp: any) => (
+                                                        <TableRow key={comp.id}>
+                                                            <TableCell sx={{ width: 50 }}>
+                                                                <Avatar
+                                                                    src={comp.img_url || undefined}
+                                                                    variant="rounded"
+                                                                    sx={{ width: 45, height: 45, bgcolor: '#ff8201'}}
+                                                                >
+                                                                    {comp.type?.substring(0, 3)?.toUpperCase()}
+                                                                </Avatar>
+                                                            </TableCell>
+                                                            <TableCell>
+                                                                <Typography variant="body2" color="text.secondary" sx={{ fontSize: '0.75rem', textTransform: 'uppercase' }}>
+                                                                    {comp.type}
+                                                                </Typography>
+                                                                <Typography variant="body1" fontWeight="500">
+                                                                    {comp.brand} {comp.name}
+                                                                </Typography>
+                                                            </TableCell>
+                                                            <TableCell align="right" sx={{ fontWeight: 'bold', color: '#ff8201' }}>
+                                                                {formatPrice(comp.price)}
+                                                            </TableCell>
+                                                        </TableRow>
+                                                    ))}
+                                                    <TableRow sx={{ bgcolor: '#424343' }}>
+                                                        <TableCell colSpan={2} sx={{ fontWeight: 'bold', color: '#ff8201' }}>TOTAL</TableCell>
+                                                        <TableCell align="right" sx={{ fontWeight: 'bold', fontSize: '1.1rem', color: 'primary.main' }}>
+                                                            {formatPrice(details.totalPrice)}
                                                         </TableCell>
                                                     </TableRow>
-                                                ))}
-                                                <TableRow sx={{ bgcolor: '#424343' }}>
-                                                    <TableCell colSpan={2} sx={{ fontWeight: 'bold', color: '#ff8201' }}>TOTAL</TableCell>
-                                                    <TableCell align="right" sx={{ fontWeight: 'bold', fontSize: '1.1rem', color: 'primary.main' }}>
-                                                        {formatPrice(details.totalPrice)}
-                                                    </TableCell>
-                                                </TableRow>
-                                            </TableBody>
-                                        </Table>
+                                                </TableBody>
+                                            </Table>
+                                        </Grid>
+
+                                        <Grid item xs={12} md={4}>
+                                            <Box sx={{ bgcolor: '#424343', p: 2, borderRadius: 2, mb: 2 }}>
+                                                <Typography color="primary.main" gutterBottom fontWeight="bold">Builder's Notes</Typography>
+                                                <Typography color="primary.main" variant="body2" sx={{ fontStyle: 'italic' }}>
+                                                    "{details.description || "No notes provided."}"
+                                                </Typography>
+                                            </Box>
+
+                                            <Box sx={{ display: 'flex', flexDirection: 'column', gap: 1 }}>
+                                                <Button
+                                                    variant="contained"
+                                                    color="primary"
+                                                    size="large"
+                                                    startIcon={<AutoFixHighIcon />}
+                                                    onClick={() => {
+                                                        setCloningBuildId(details.id);
+                                                        setCloneDialogOpen(true);
+                                                    }}
+                                                >
+                                                    Clone & Edit
+                                                </Button>
+                                                <Button
+                                                    variant={details.isFavorite ? "contained" : "outlined"}
+                                                    color={details.isFavorite ? "error" : "primary"}
+                                                    startIcon={details.isFavorite ? <FavoriteIcon /> : <FavoriteBorderIcon />}
+                                                    onClick={handleFavorite}
+                                                >
+                                                    {details.isFavorite ? "Favorited" : "Add to Favorites"}
+                                                </Button>
+                                            </Box>
+                                        </Grid>
                                     </Grid>
-
-                                    <Grid item xs={12} md={4}>
-                                        <Box sx={{ bgcolor: '#424343', p: 2, borderRadius: 2, mb: 2 }}>
-                                            <Typography color="primary.main" gutterBottom fontWeight="bold">Builder's Notes</Typography>
-                                            <Typography color="primary.main" variant="body2" sx={{ fontStyle: 'italic' }}>
-                                                "{details.description || "No notes provided."}"
-                                            </Typography>
+                                )}
+
+                                {tabIndex === 1 && (
+                                    <Box>
+                                        <Box sx={{ display: 'flex', alignItems: 'center', gap: 2, mb: 4, p: 2, bgcolor: '#5e5e5e', borderRadius: 2 }}>
+                                            <Typography variant="h3" fontWeight="bold">{details.ratingStatistics.averageRating.toFixed(1)}</Typography>
+                                            <Box>
+                                                <Rating value={details.ratingStatistics.averageRating} readOnly precision={0.5} />
+                                                <Typography variant="body2" color="text.secondary">{details.ratingStatistics.ratingCount} ratings</Typography>
+                                            </Box>
                                         </Box>
 
-                                        <Box sx={{ display: 'flex', flexDirection: 'column', gap: 1 }}>
-                                            <Button
-                                                variant="contained"
-                                                color="primary"
-                                                size="large"
-                                                startIcon={<AutoFixHighIcon />}
-                                                onClick={() => onClone({ buildId: details.id })}
-                                            >
-                                                Clone & Edit
-                                            </Button>
-                                            <Button
-                                                variant={details.isFavorite ? "contained" : "outlined"}
-                                                color={details.isFavorite ? "error" : "primary"}
-                                                startIcon={details.isFavorite ? <FavoriteIcon /> : <FavoriteBorderIcon />}
-                                                onClick={handleFavorite}
-                                            >
-                                                {details.isFavorite ? "Favorited" : "Add to Favorites"}
-                                            </Button>
-                                        </Box>
-                                    </Grid>
-                                </Grid>
-                            )}
-
-                            {tabIndex === 1 && (
-                                <Box>
-                                    <Box sx={{ display: 'flex', alignItems: 'center', gap: 2, mb: 4, p: 2, bgcolor: '#5e5e5e', borderRadius: 2 }}>
-                                        <Typography variant="h3" fontWeight="bold">{details.ratingStatistics.averageRating.toFixed(1)}</Typography>
-                                        <Box>
-                                            <Rating value={details.ratingStatistics.averageRating} readOnly precision={0.5} />
-                                            <Typography variant="body2" color="text.secondary">{details.ratingStatistics.ratingCount} ratings</Typography>
+                                        {currentUser && details.userId !== currentUser.id && (
+                                            <Box sx={{ mb: 4, p: 2, border: '1px solid #ddd', borderRadius: 2 }}>
+                                                <Typography variant="subtitle2" gutterBottom>Your Review</Typography>
+                                                <Box sx={{ display: 'flex', alignItems: 'center', mb: 1 }}>
+                                                    <Rating value={ratingVal} onChange={(_, v) => setRatingVal(v || 5)} />
+                                                </Box>
+                                                <TextField
+                                                    fullWidth
+                                                    multiline
+                                                    rows={2}
+                                                    placeholder="Share your thoughts on this build..."
+                                                    value={reviewText}
+                                                    onChange={(e) => setReviewText(e.target.value)}
+                                                    sx={{ mb: 1 }}
+                                                />
+                                                <Button size="small" variant="contained" onClick={handleSubmitReview}>
+                                                    Submit Review
+                                                </Button>
+                                            </Box>
+                                        )}
+
+                                        {currentUser && details.userId === currentUser.id && (
+                                            <Alert severity="info" sx={{ mb: 4 }}>
+                                                You cannot rate your own builds.
+                                            </Alert>
+                                        )}
+
+                                        <Box sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>
+                                            {details.reviews.map((rev: any, i: number) => (
+                                                <Box key={i} sx={{ pb: 2, borderBottom: '1px solid #eee' }}>
+                                                    <Box sx={{ display: 'flex', justifyContent: 'space-between', mb: 0.5 }}>
+                                                        <Typography fontWeight="bold" variant="body2">{rev.username}</Typography>
+                                                        <Typography variant="caption" color="text.secondary">{rev.createdAt}</Typography>
+                                                    </Box>
+                                                    <Typography variant="body2">{rev.content}</Typography>
+                                                </Box>
+                                            ))}
+                                            {details.reviews.length === 0 && (
+                                                <Typography color="text.secondary" align="center">No reviews yet. Be the first!</Typography>
+                                            )}
                                         </Box>
                                     </Box>
-
-                                    {currentUser && (
-                                        <Box sx={{ mb: 4, p: 2, border: '1px solid #ddd', borderRadius: 2 }}>
-                                            <Typography variant="subtitle2" gutterBottom>Your Review</Typography>
-                                            <Box sx={{ display: 'flex', alignItems: 'center', mb: 1 }}>
-                                                <Rating value={ratingVal} onChange={(_, v) => setRatingVal(v || 5)} />
-                                            </Box>
-                                            <TextField
-                                                fullWidth
-                                                multiline
-                                                rows={2}
-                                                placeholder="Share your thoughts on this build..."
-                                                value={reviewText}
-                                                onChange={(e) => setReviewText(e.target.value)}
-                                                sx={{ mb: 1 }}
-                                            />
-                                            <Button size="small" variant="contained" onClick={handleSubmitReview}>
-                                                Submit Review
-                                            </Button>
-                                        </Box>
-                                    )}
-
-                                    <Box sx={{ display: 'flex', flexDirection: 'column', gap: 2}}>
-                                        {details.reviews.map((rev: any, i: number) => (
-                                            <Box key={i} sx={{ pb: 2, borderBottom: '1px solid #eee'}}>
-                                                <Box sx={{ display: 'flex', justifyContent: 'space-between', mb: 0.5 }}>
-                                                    <Typography fontWeight="bold" variant="body2">{rev.username}</Typography>
-                                                    <Typography variant="caption" color="text.secondary">{rev.createdAt}</Typography>
-                                                </Box>
-                                                <Typography variant="body2">{rev.content}</Typography>
-                                            </Box>
-                                        ))}
-                                        {details.reviews.length === 0 && (
-                                            <Typography color="text.secondary" align="center">No reviews yet. Be the first!</Typography>
-                                        )}
-                                    </Box>
-                                </Box>
-                            )}
-                        </Box>
-                    </DialogContent>
-                </>
-            )}
-        </Dialog>
+                                )}
+                            </Box>
+                        </DialogContent>
+                    </>
+                )}
+            </Dialog>
+
+            <Dialog open={cloneDialogOpen} onClose={() => setCloneDialogOpen(false)}>
+                <DialogTitle>Clone Build</DialogTitle>
+                <DialogContent>
+                    <Typography>
+                        This will create a copy of "{details?.name}" in your Forge so you can edit it.
+                        All components will be copied over.
+                    </Typography>
+                </DialogContent>
+                <DialogActions>
+                    <Button onClick={() => setCloneDialogOpen(false)}>Cancel</Button>
+                    <Button
+                        variant="contained"
+                        onClick={handleCloneConfirm}
+                        disabled={!cloningBuildId}
+                    >
+                        Clone Build
+                    </Button>
+                </DialogActions>
+            </Dialog>
+        </>
     );
 }
Index: components/ComponentDetailsDialog.tsx
===================================================================
--- components/ComponentDetailsDialog.tsx	(revision ae5d054380355a32555383768cf7c4a780c9028d)
+++ components/ComponentDetailsDialog.tsx	(revision 8a7f936ef2c6040183ae33f4b63947eecf8bf3b2)
@@ -33,7 +33,23 @@
     const renderValue = (key: string, val: any) => {
         if (Array.isArray(val)) {
-            if (val.length > 0 && typeof val[0] === 'object') {
-                return val.map((v: any) => v.formFactor || v.socket || JSON.stringify(v)).join(', ');
+            if (val.length === 0) return 'None';
+
+            if (typeof val[0] === 'string') {
+                return val.join(', ');
             }
+
+            if (typeof val[0] === 'object') {
+                const parts = val
+                    .map((v: any) =>
+                        v.socket ||
+                        v.formFactor ||
+                        v.name ||
+                        v.type ||
+                        Object.values(v)[0]
+                    )
+                    .filter(Boolean);
+                return parts.length > 0 ? parts.join(', ') : 'None';
+            }
+
             return val.join(', ');
         }
@@ -42,5 +58,4 @@
         const lowerKey = key.toLowerCase();
 
-        // Dodava merni edinici vo zavisnost koja komponenta e
         if (lowerKey.includes('capacity') || lowerKey.includes('vram') || lowerKey === 'memory') {
             return `${strVal} GB`;
@@ -58,4 +73,5 @@
             return `${strVal} GHz`;
         }
+
         if (lowerKey.includes('speed')) {
             return `${strVal} MHz`;
Index: components/ComponentDialog.tsx
===================================================================
--- components/ComponentDialog.tsx	(revision ae5d054380355a32555383768cf7c4a780c9028d)
+++ components/ComponentDialog.tsx	(revision 8a7f936ef2c6040183ae33f4b63947eecf8bf3b2)
@@ -1,27 +1,57 @@
 import React, {useEffect, useState} from 'react';
 import {
-    Dialog, DialogContent, IconButton, Grid, Box, Typography,
+    Dialog, DialogContent, IconButton, Box, Typography, Chip,
     Slider, FormControl, InputLabel, Select, MenuItem, Checkbox, ListItemText,
-    Card, CardContent, CardMedia, Button, CircularProgress, Divider, AppBar, Toolbar
+    Card, CardContent, CardMedia, Button, CircularProgress, AppBar, Toolbar, InputAdornment, TextField,
+    TextField as MuiTextField, DialogTitle, DialogActions, Snackbar, Alert
 } from '@mui/material';
 import CloseIcon from '@mui/icons-material/Close';
-import FilterListIcon from '@mui/icons-material/FilterList';
-import SortIcon from '@mui/icons-material/Sort';
-
-import {onGetAllComponents} from '../pages/+Layout.telefunc';
+import AddCircleIcon from '@mui/icons-material/AddCircle';
+
+import {onGetAllComponents, onGetAuthState, onSuggestComponent} from '../pages/+Layout.telefunc'
+import {onGetCompatibleComponents} from '../pages/forge/forge.telefunc';
 import ComponentDetailsDialog from "./ComponentDetailsDialog";
-
-const formatMoney = (amount: number) => `$${amount}`;
-
-export default function ComponentBrowserDialog({open, category, onClose}: any) {
+import SearchIcon from "@mui/icons-material/Search";
+
+const formatMoney = (amount: number) => `$${Number(amount).toFixed(2)}`;
+
+export default function ComponentDialog({open, category, onClose, mode, onSelect, currentBuildId}: any) {
     const [components, setComponents] = useState<any[]>([]);
     const [loading, setLoading] = useState(false);
-
     const [selectedComponent, setSelectedComponent] = useState<any>(null);
     const [priceRange, setPriceRange] = useState<number[]>([0, 2000]);
     const [selectedBrands, setSelectedBrands] = useState<string[]>([]);
     const [availableBrands, setAvailableBrands] = useState<string[]>([]);
-
     const [sortOrder, setSortOrder] = useState<string>('default');
+
+    const [tempSearchQuery, setTempSearchQuery] = useState("");
+    const [searchQuery, setSearchQuery] = useState("");
+
+    const [suggestOpen, setSuggestOpen] = useState(false);
+    const [suggestForm, setSuggestForm] = useState({
+        link: '',
+        description: '',
+        componentType: category || ''
+    });
+    const [suggestLoading, setSuggestLoading] = useState(false);
+    const [snackbarOpen, setSnackbarOpen] = useState(false);
+    const [snackbarMessage, setSnackbarMessage] = useState("");
+    const [userId, setUserId] = useState<number | null>(null);
+
+    useEffect(() => {
+        const timeoutId = setTimeout(() => {
+            setSearchQuery(tempSearchQuery);
+        }, 300);
+        return () => clearTimeout(timeoutId);
+    }, [tempSearchQuery]);
+
+    // Load user auth
+    useEffect(() => {
+        if (open) {
+            onGetAuthState().then(userData => {
+                setUserId(userData.userId);
+            });
+        }
+    }, [open]);
 
     useEffect(() => {
@@ -30,23 +60,85 @@
             setSortOrder('price_desc');
 
-            onGetAllComponents({componentType: category})
+            const shouldUseCompatibility = mode === 'forge' && currentBuildId;
+            const fetcher = shouldUseCompatibility
+                ? onGetCompatibleComponents({
+                    buildId: currentBuildId,
+                    componentType: category,
+                    limit: 100,
+                    sort: 'price_desc'
+                })
+                : onGetAllComponents({
+                    componentType: category,
+                    limit: 100,
+                    sort: 'price_desc'
+                });
+
+            fetcher
                 .then((data) => {
-                    setComponents(data);
-
-                    const brands = Array.from(new Set(data.map((c: any) => c.brand)));
+                    const comps = data || [];
+                    setComponents(comps);
+
+                    const brands = Array.from(new Set(comps.map((c: any) => c.brand)));
                     setAvailableBrands(brands as string[]);
-
-                    const maxPrice = data.length > 0 ? Math.max(...data.map((c: any) => Number(c.price))) : 2000;
+                    const maxPrice = comps.length > 0 ? Math.max(...comps.map((c: any) => Number(c.price))) : 2000;
                     setPriceRange([0, Math.ceil(maxPrice)]);
                 })
-                .catch(console.error)
+                .catch((err) => {
+                    console.error('[Dialog] fetch error:', err);
+                    setComponents([]);
+                })
                 .finally(() => setLoading(false));
         }
-    }, [open, category]);
+    }, [open, category, mode, currentBuildId]);
+
+    const handleSuggestChange = (e: React.ChangeEvent<HTMLInputElement>) => {
+        setSuggestForm({
+            ...suggestForm,
+            [e.target.name]: e.target.value
+        });
+    };
+
+    const submitSuggestion = async () => {
+        if (!userId) {
+            setSnackbarMessage("Please login to submit suggestions!");
+            setSnackbarOpen(true);
+            return;
+        }
+
+        if (!suggestForm.link || !suggestForm.description) {
+            setSnackbarMessage("Please fill in all fields!");
+            setSnackbarOpen(true);
+            return;
+        }
+
+        setSuggestLoading(true);
+        try {
+            const suggestionId = await onSuggestComponent({
+                link: suggestForm.link,
+                description: suggestForm.description,
+                componentType: suggestForm.componentType
+            });
+
+            setSnackbarMessage("Suggestion submitted! Admin will review it.");
+            setSnackbarOpen(true);
+            setSuggestOpen(false);
+            setSuggestForm({link: '', description: '', componentType: category || ''});
+        } catch (error) {
+            console.error('Suggestion error:', error);
+            setSnackbarMessage("Failed to submit suggestion. Try again.");
+            setSnackbarOpen(true);
+        } finally {
+            setSuggestLoading(false);
+        }
+    };
 
     let processedComponents = components.filter(comp => {
         const matchesBrand = selectedBrands.length === 0 || selectedBrands.includes(comp.brand);
         const matchesPrice = Number(comp.price) >= priceRange[0] && Number(comp.price) <= priceRange[1];
-        return matchesBrand && matchesPrice;
+        const matchesSearch = searchQuery === "" ||
+            comp.name.toLowerCase().includes(searchQuery.toLowerCase()) ||
+            comp.brand.toLowerCase().includes(searchQuery.toLowerCase());
+
+        return matchesBrand && matchesPrice && matchesSearch;
     });
 
@@ -65,169 +157,280 @@
 
     return (
-        <Dialog
-            open={open}
-            onClose={onClose}
-            maxWidth="xl"
-            fullWidth
-            sx={{height: '90vh'}}
-        >
-            <AppBar position="relative" sx={{bgcolor: '#ff8201'}}>
-                <Toolbar>
-                    <Typography sx={{ml: 2, flex: 1, textTransform: 'capitalize'}} variant="h6" component="div">
-                        Browsing: <b>{category === 'gpu' ? 'Graphics Cards' : category?.toUpperCase()}</b>
-                    </Typography>
-                    <IconButton edge="start" color="inherit" onClick={onClose}>
-                        <CloseIcon/>
-                    </IconButton>
-                </Toolbar>
-            </AppBar>
-
-            <DialogContent sx={{p: 0, display: 'flex', height: '100%'}}>
-                <Box sx={{
-                    width: 300,
-                    borderRight: '1px solid #ddd',
-                    p: 3,
-                    bgcolor: '#1e1e1e',
-                    display: {xs: 'none', md: 'block'}
-                }}>
-                    <Box sx={{display: 'flex', alignItems: 'center', mb: 2}}>
-                        <SortIcon sx={{mr: 1}}/>
-                        <Typography variant="h6">Sort By</Typography>
+        <>
+            <Dialog open={open} onClose={onClose} maxWidth="xl" fullWidth sx={{height: '90vh'}}>
+                <AppBar position="relative" sx={{bgcolor: '#ff8201'}}>
+                    <Toolbar>
+                        <Typography sx={{ml: 2, flex: 1, textTransform: 'capitalize'}} variant="h6" component="div">
+                            Browsing: <b>{category === 'gpu' ? 'Graphics Cards' : category?.toUpperCase()}</b>
+                            {mode === 'forge' && currentBuildId && (
+                                <Typography variant="caption"
+                                            sx={{ml: 2, bgcolor: 'rgba(0,0,0,0.2)', px: 1, borderRadius: 1}}>
+                                    COMPATIBILITY MODE ON
+                                </Typography>
+                            )}
+                        </Typography>
+                        <IconButton edge="start" color="inherit" onClick={onClose}>
+                            <CloseIcon/>
+                        </IconButton>
+                    </Toolbar>
+                </AppBar>
+
+                <DialogContent sx={{p: 0, display: 'flex', height: '100%'}}>
+                    <Box sx={{
+                        width: 300,
+                        borderRight: '1px solid #ddd',
+                        p: 3,
+                        bgcolor: '#1e1e1e',
+                        display: {xs: 'none', md: 'block'},
+                        overflowY: 'auto'
+                    }}>
+                        <TextField
+                            fullWidth
+                            size="small"
+                            placeholder="Search components..."
+                            value={tempSearchQuery}
+                            onChange={(e) => setTempSearchQuery(e.target.value)}
+                            sx={{mb: 2}}
+                            InputProps={{
+                                startAdornment: <InputAdornment position="start"><SearchIcon/></InputAdornment>,
+                            }}
+                        />
+
+
+                        <FormControl fullWidth size="small" sx={{mb: 2}}>
+                            <InputLabel>Sort By</InputLabel>
+                            <Select value={sortOrder} label="Sort By" onChange={(e) => setSortOrder(e.target.value)}>
+                                <MenuItem value="price_asc">Price: Low to High</MenuItem>
+                                <MenuItem value="price_desc">Price: High to Low</MenuItem>
+                            </Select>
+                        </FormControl>
+
+                        <FormControl fullWidth size="small" sx={{mb: 2}}>
+                            <InputLabel>Brands</InputLabel>
+                            <Select multiple value={selectedBrands} onChange={handleBrandChange} label="Brands"
+                                    renderValue={(s) => s.join(', ')}>
+                                {availableBrands.map((brand) => (
+                                    <MenuItem key={brand} value={brand}>
+                                        <Checkbox checked={selectedBrands.indexOf(brand) > -1}/>
+                                        <ListItemText primary={brand}/>
+                                    </MenuItem>
+                                ))}
+                            </Select>
+                        </FormControl>
+
+                        <Typography gutterBottom fontWeight="bold">Price Range</Typography>
+                        <Slider value={priceRange} onChange={(_, v) => setPriceRange(v as number[])} min={0} max={2000}
+                                sx={{color: '#ff8201'}}/>
+                        <Box sx={{display: 'flex', justifyContent: 'space-between', mt: 1}}>
+                            <Typography variant="caption">${priceRange[0]}</Typography>
+                            <Typography variant="caption">${priceRange[1]}+</Typography>
+                        </Box>
+                        {/*TO BE FINISHED*/}
+                        <Button
+                            fullWidth
+                            variant="contained"
+                            startIcon={<AddCircleIcon/>}
+                            onClick={() => setSuggestOpen(true)}
+                            sx={{
+                                mt: 2,
+                                bgcolor: '#ff8201',
+                                fontWeight: 'bold',
+                                fontSize: '0.875rem',
+                                '&:hover': {bgcolor: '#e67300'}
+                            }}
+                        >
+                            Suggest Component
+                        </Button>
                     </Box>
-                    <FormControl fullWidth size="small" sx={{mb: 4}}>
-                        <InputLabel>Price</InputLabel>
-                        <Select
-                            value={sortOrder}
-                            label="Price"
-                            onChange={(e) => setSortOrder(e.target.value)}>
-                            {/*<MenuItem value="default">Featured</MenuItem>*/}
-                            <MenuItem value="price_asc">Price: Low to High</MenuItem>
-                            <MenuItem value="price_desc">Price: High to Low</MenuItem>
-                        </Select>
-                    </FormControl>
-
-                    <Divider sx={{mb: 3}}/>
-
-                    <Box sx={{display: 'flex', alignItems: 'center', mb: 2}}>
-                        <FilterListIcon sx={{mr: 1}}/>
-                        <Typography variant="h6">Filters</Typography>
-                    </Box>
-
-                    <Typography gutterBottom fontWeight="bold">Price Range</Typography>
-                    <Slider
-                        value={priceRange}
-                        onChange={(_, newValue) => setPriceRange(newValue as number[])}
-                        valueLabelDisplay="auto"
-                        min={0}
-                        max={components.length > 0 ? Math.max(...components.map(c => Number(c.price))) : 2000}
-                        sx={{color: '#ff8201', mb: 2}}
-                    />
-                    <Box sx={{display: 'flex', justifyContent: 'space-between', mb: 2}}>
-                        <Typography variant="caption">{formatMoney(priceRange[0])}</Typography>
-                        <Typography variant="caption">{formatMoney(priceRange[1])}</Typography>
-                    </Box>
-
-                    <FormControl fullWidth size="small">
-                        <InputLabel>Brands</InputLabel>
-                        <Select
-                            multiple
-                            value={selectedBrands}
-                            onChange={handleBrandChange}
-                            renderValue={(selected) => selected.join(', ')}
-                            label="Brands"
-                        >
-                            {availableBrands.map((brand) => (
-                                <MenuItem key={brand} value={brand}>
-                                    <Checkbox checked={selectedBrands.indexOf(brand) > -1}/>
-                                    <ListItemText primary={brand}/>
-                                </MenuItem>
-                            ))}
-                        </Select>
-                    </FormControl>
-                </Box>
-
-                <Box sx={{flex: 1, p: 3, overflowY: 'auto'}}>
-                    {loading ? (
-                        <Box sx={{display: 'flex', justifyContent: 'center', mt: 10}}>
-                            <CircularProgress sx={{color: '#ff8201'}}/>
-                        </Box>
-                    ) : (
-                        <Grid container spacing={1}>
-                            {processedComponents.map((comp) => (
-                                <Grid item xs={12} sm={6} md={4} lg={3} key={comp.id}>
-                                    <Card elevation={1} sx={{
-                                        height: '100%',
-                                        display: 'flex',
-                                        flexDirection: 'column',
-                                        maxWidth: 220,
-                                        width: 220,
-                                        overflow: 'hidden',
-                                        whiteSpace: 'nowrap',
-                                        textOverflow: 'ellipsis'
-                                    }}>
-                                        <CardMedia
-                                            component="img"
-                                            height="140"
-                                            // image={`https://placehold.co/400x400?text=${encodeURIComponent(comp.name)}`}
-                                            image={comp.imgUrl}
-                                            alt={comp.name}
-                                            sx={{p: 2, objectFit: 'contain'}}
-                                        />
-                                        <CardContent sx={{flexGrow: 1}}>
-                                            <Typography variant="caption" color="text.secondary"
-                                                        sx={{textTransform: 'uppercase'}}>
-                                                {comp.brand}
-                                            </Typography>
-                                            <Typography variant="subtitle1" fontWeight="bold" sx={{
-                                                lineHeight: 1.2,
-                                                mb: 1,
+
+                    <Box sx={{flex: 1, p: 3, overflowY: 'auto', bgcolor: '#121212'}}>
+                        {loading ? (
+                            <Box sx={{display: 'flex', justifyContent: 'center', mt: 10}}>
+                                <CircularProgress sx={{color: '#ff8201'}}/>
+                            </Box>
+                        ) : (
+                            <Box sx={{
+                                display: 'grid',
+                                gridTemplateColumns: {
+                                    xs: '1fr',
+                                    sm: 'repeat(2, 1fr)',
+                                    md: 'repeat(3, 1fr)',
+                                    lg: 'repeat(4, 1fr)',
+                                    xl: 'repeat(5, 1fr)'
+                                },
+                                gap: 3,
+                                width: '100%'
+                            }}>
+                                {processedComponents.map((comp) => (
+                                    <Box key={comp.id} sx={{width: '100%'}}>
+                                        <Card
+                                            elevation={3}
+                                            sx={{
+                                                width: '100%',
+                                                height: '100%',
+                                                display: 'flex',
+                                                flexDirection: 'column',
+                                                transition: 'transform 0.2s, box-shadow 0.2s',
+                                                '&:hover': {
+                                                    transform: 'translateY(-4px)',
+                                                    boxShadow: 6
+                                                }
+                                            }}
+                                        >
+                                            <Box sx={{position: 'relative', paddingTop: '75%', bgcolor: '#1e1e1e'}}>
+                                                <CardMedia
+                                                    component="img"
+                                                    image={comp.imgUrl || comp.img_url || `https://placehold.co/400x400?text=${comp.name}`}
+                                                    alt={comp.name}
+                                                    sx={{
+                                                        position: 'absolute',
+                                                        top: 0,
+                                                        left: 0,
+                                                        width: '100%',
+                                                        height: '100%',
+                                                        objectFit: 'contain',
+                                                        p: 2
+                                                    }}
+                                                />
+                                            </Box>
+
+                                            <CardContent sx={{
+                                                flexGrow: 1,
+                                                display: 'flex',
+                                                flexDirection: 'column',
+                                                justifyContent: 'space-between'
                                             }}>
-                                                {comp.name}
-                                            </Typography>
-
-                                            <Box sx={{
-                                                display: 'flex',
-                                                justifyContent: 'space-between',
-                                                alignItems: 'center',
-                                                mt: 2
-                                            }}>
-                                                <Typography variant="h6" color="primary.main">
+                                                <Box>
+                                                    <Typography variant="caption" color="text.secondary"
+                                                                sx={{textTransform: 'uppercase', letterSpacing: 0.5}}>
+                                                        {comp.brand}
+                                                    </Typography>
+                                                    <Typography variant="subtitle1" fontWeight="bold" sx={{
+                                                        lineHeight: 1.2,
+                                                        mt: 0.5,
+                                                        mb: 1,
+                                                        overflow: 'hidden',
+                                                        textOverflow: 'ellipsis',
+                                                        display: '-webkit-box',
+                                                        WebkitLineClamp: 2,
+                                                        WebkitBoxOrient: 'vertical',
+                                                        minHeight: '2.4em'
+                                                    }}>
+                                                        {comp.name}
+                                                    </Typography>
+                                                </Box>
+                                                <Typography variant="h6" color="primary.main" fontWeight="bold">
                                                     {formatMoney(comp.price)}
                                                 </Typography>
+                                            </CardContent>
+
+                                            <Box sx={{p: 2, pt: 0, display: 'flex', flexDirection: 'column', gap: 1}}>
+                                                <Button
+                                                    fullWidth
+                                                    variant="contained"
+                                                    onClick={() => setSelectedComponent(comp)}
+                                                    sx={{
+                                                        bgcolor: '#ff8201',
+                                                        fontWeight: 'bold',
+                                                        '&:hover': {bgcolor: '#e67300'}
+                                                    }}
+                                                >
+                                                    Details
+                                                </Button>
+                                                {mode === 'forge' && onSelect && (
+                                                    <Button
+                                                        fullWidth
+                                                        variant="contained"
+                                                        onClick={() => onSelect(comp)}
+                                                        sx={{
+                                                            bgcolor: '#4caf50',
+                                                            fontWeight: 'bold',
+                                                            '&:hover': {bgcolor: '#388e3c'}
+                                                        }}
+                                                    >
+                                                        Add
+                                                    </Button>
+                                                )}
                                             </Box>
-                                        </CardContent>
-                                        <Box sx={{p: 2, pt: 0}}>
-                                            <Button
-                                                fullWidth
-                                                variant="outlined"
-                                                onClick={() => setSelectedComponent(comp)}
-                                                sx={{
-                                                    backgroundColor: '#ff8201',
-                                                    color: 'white',
-                                                    borderColor: '#ff8201',
-                                                    onHover: {backgroundColor: '#e67300', borderColor: '#e67300'}
-                                                }}
-                                            >
-                                                Details
-                                            </Button>
-                                        </Box>
-                                    </Card>
-                                </Grid>
-                            ))}
-                            {processedComponents.length === 0 && (
-                                <Box sx={{width: '100%', textAlign: 'center', mt: 5}}>
-                                    <Typography variant="h6" color="text.secondary">No components match.</Typography>
-                                </Box>
-                            )}
-                        </Grid>
-                    )}
-                </Box>
-            </DialogContent>
-            <ComponentDetailsDialog
-                open={!!selectedComponent}
-                component={selectedComponent}
-                onClose={() => setSelectedComponent(null)}
-            />
-        </Dialog>
+                                        </Card>
+                                    </Box>
+                                ))}
+                                {processedComponents.length === 0 && (
+                                    <Box sx={{gridColumn: '1 / -1', width: '100%', textAlign: 'center', mt: 5}}>
+                                        <Typography variant="h6" color="text.secondary">
+                                            No compatible components found.
+                                        </Typography>
+                                        {mode === 'forge' && (
+                                            <Typography variant="body2" color="error">
+                                                (Try removing incompatible parts)
+                                            </Typography>
+                                        )}
+                                    </Box>
+                                )}
+                            </Box>
+                        )}
+                    </Box>
+                </DialogContent>
+
+                <ComponentDetailsDialog
+                    open={!!selectedComponent}
+                    component={selectedComponent}
+                    onClose={() => setSelectedComponent(null)}
+                />
+            </Dialog>
+
+            <Dialog open={suggestOpen} onClose={() => setSuggestOpen(false)} maxWidth="sm" fullWidth>
+                <DialogTitle>Suggest a New Component</DialogTitle>
+                <DialogContent>
+                    <MuiTextField
+                        fullWidth
+                        label="Product Link *"
+                        name="link"
+                        value={suggestForm.link}
+                        onChange={handleSuggestChange}
+                        placeholder="https://example.com/product"
+                        sx={{mt: 1}}
+                        size="small"
+                    />
+                    <MuiTextField
+                        fullWidth
+                        label="Description *"
+                        name="description"
+                        value={suggestForm.description}
+                        onChange={handleSuggestChange}
+                        multiline
+                        rows={3}
+                        placeholder="Why should we add this component? Any specs/details?"
+                        sx={{mt: 2}}
+                        size="small"
+                    />
+                    <Typography variant="caption" color="text.secondary" sx={{mt: 1, display: 'block'}}>
+                        Category: <b>{category?.toUpperCase()}</b>
+                    </Typography>
+                </DialogContent>
+                <DialogActions>
+                    <Button onClick={() => setSuggestOpen(false)}>Cancel</Button>
+                    <Button
+                        onClick={submitSuggestion}
+                        disabled={suggestLoading || !userId}
+                        variant="contained"
+                        startIcon={suggestLoading ? <CircularProgress size={20}/> : null}
+                    >
+                        {suggestLoading ? 'Submitting...' : 'Submit Suggestion'}
+                    </Button>
+                </DialogActions>
+            </Dialog>
+
+            <Snackbar
+                open={snackbarOpen}
+                autoHideDuration={4000}
+                onClose={() => setSnackbarOpen(false)}
+                anchorOrigin={{vertical: 'bottom', horizontal: 'right'}}
+            >
+                <Alert onClose={() => setSnackbarOpen(false)} sx={{width: '100%'}}>
+                    {snackbarMessage}
+                </Alert>
+            </Snackbar>
+        </>
     );
 }
Index: database/drizzle/queries/components.ts
===================================================================
--- database/drizzle/queries/components.ts	(revision ae5d054380355a32555383768cf7c4a780c9028d)
+++ database/drizzle/queries/components.ts	(revision 8a7f936ef2c6040183ae33f4b63947eecf8bf3b2)
@@ -247,4 +247,6 @@
     if(!existingComponents) return null;
 
+
+
     const existing = {
         cpu: existingComponents.find(c => c.type === 'cpu'),
Index: pages/dashboard/admin/+Page.tsx
===================================================================
--- pages/dashboard/admin/+Page.tsx	(revision ae5d054380355a32555383768cf7c4a780c9028d)
+++ pages/dashboard/admin/+Page.tsx	(revision 8a7f936ef2c6040183ae33f4b63947eecf8bf3b2)
@@ -49,5 +49,5 @@
     const openSuggestionReview = (id: number, action: 'approved' | 'rejected') => {
         setSuggestionDialog({ open: true, id, action });
-        setAdminComment(action === 'approved' ? "Approved by admin." : "Rejected: ");
+        setAdminComment(action === 'approved' ? "" : "");
     };
 
@@ -123,5 +123,5 @@
                                                         </a>
                                                     </TableCell>
-                                                    <TableCell>{sug.componentType}</TableCell>
+                                                    <TableCell>{sug.componentType.toUpperCase()}</TableCell>
                                                     <TableCell>{sug.userId}</TableCell>
                                                     <TableCell align="right">
@@ -207,5 +207,5 @@
 
             <Dialog open={suggestionDialog.open} onClose={() => setSuggestionDialog({...suggestionDialog, open: false})}>
-                <DialogTitle>Review Suggestion</DialogTitle>
+                <DialogTitle>Review Component Suggestion</DialogTitle>
                 <DialogContent>
                     <Typography gutterBottom>Status: <b>{suggestionDialog.action.toUpperCase()}</b></Typography>
Index: pages/forge/+Page.tsx
===================================================================
--- pages/forge/+Page.tsx	(revision ae5d054380355a32555383768cf7c4a780c9028d)
+++ pages/forge/+Page.tsx	(revision 8a7f936ef2c6040183ae33f4b63947eecf8bf3b2)
@@ -1,5 +1,471 @@
-export default function ForgePage(){
+import React, {useState, useEffect, useMemo} from 'react';
+import {
+    Container, Paper, Typography, Box, Table, TableBody, TableCell, TableContainer, TableHead, TableRow,
+    Button, IconButton, Avatar, TextField, Grid, Chip, CircularProgress,
+    Menu, MenuItem, ListItemIcon
+} from '@mui/material';
+import AddIcon from '@mui/icons-material/Add';
+import DeleteIcon from '@mui/icons-material/Delete';
+import CloseIcon from "@mui/icons-material/Close";
+import AlbumIcon from "@mui/icons-material/Album";
+import CableIcon from "@mui/icons-material/Cable";
+import RouterIcon from "@mui/icons-material/Router";
+import MemoryIcon from "@mui/icons-material/Memory";
+
+import {
+    saveBuildState,
+    onAddComponentToBuild,
+    onRemoveComponentFromBuild,
+    onDeleteBuild,
+    onGetBuildState, onGetBuildComponents
+} from './forge.telefunc';
+
+import ComponentDialog from '../../components/ComponentDialog';
+import ComponentDetailsDialog from '../../components/ComponentDetailsDialog';
+import {onAddNewBuild, onGetComponentDetails} from "../+Layout.telefunc";
+import {onEditBuild} from "../dashboard/user/userDashboard.telefunc";
+
+type BuildSlot = {
+    id: string;
+    type: string;
+    label: string;
+    component: any | null;
+    required: boolean;
+};
+
+const INITIAL_SLOTS: BuildSlot[] = [
+    {id: 'cpu', type: 'cpu', label: 'CPU', component: null, required: true},
+    {id: 'cooler', type: 'cooler', label: 'CPU Cooler', component: null, required: true},
+    {id: 'motherboard', type: 'motherboard', label: 'Motherboard', component: null, required: true},
+    {id: 'memory_1', type: 'memory', label: 'Memory', component: null, required: true},
+    {id: 'gpu', type: 'gpu', label: 'Video Card', component: null, required: true},
+    {id: 'storage_1', type: 'storage', label: 'Storage', component: null, required: true},
+    {id: 'powersupply', type: 'power_supply', label: 'Power Supply', component: null, required: true},
+    {id: 'case', type: 'case', label: 'Case', component: null, required: true},
+];
+
+export default function ForgePage() {
+    const [slots, setSlots] = useState<BuildSlot[]>(INITIAL_SLOTS);
+    const [buildId, setBuildId] = useState<number | null>(null);
+    const [buildName, setBuildName] = useState("");
+    const [description, setDescription] = useState("");
+    const [totalPrice, setTotalPrice] = useState(0);
+    const [isSubmitting, setIsSubmitting] = useState(false);
+
+    const [browserOpen, setBrowserOpen] = useState(false);
+    const [activeSlotId, setActiveSlotId] = useState<string | null>(null);
+    const [detailsOpen, setDetailsOpen] = useState<any>(null);
+    const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);
+    const isSubmittedRef = React.useRef(false);
+
+    useEffect(() => {
+        const price = slots.reduce((sum, slot) => sum + (Number(slot.component?.price) || 0), 0);
+        setTotalPrice(price);
+    }, [slots]);
+
+    useEffect(() => {
+        if (!buildId) return;
+
+        const handleBeforeUnload = () => {
+            if (!isSubmittedRef.current) {
+                onDeleteBuild({buildId}).catch(() => {
+                });
+            }
+        };
+
+        window.addEventListener('beforeunload', handleBeforeUnload);
+
+        return () => {
+            window.removeEventListener('beforeunload', handleBeforeUnload);
+            if (!isSubmittedRef.current) {
+                onDeleteBuild({buildId}).catch(() => {
+                });
+            }
+        };
+    }, [buildId]);
+
+    useEffect(() => {
+        const urlParams = new URLSearchParams(window.location.search);
+        const urlBuildId = urlParams.get('buildId');
+
+        if (urlBuildId && Number.isInteger(Number(urlBuildId)) && Number(urlBuildId) > 0) {
+            const loadBuildId = Number(urlBuildId);
+            onGetBuildComponents({ buildId: loadBuildId })
+                .then(async (components) => {
+                    if (components && components.length > 0) {
+                        setBuildId(loadBuildId);
+                        setBuildName("Cloned Build");
+                        setDescription("");
+
+                        const detailedComponents = await Promise.all(
+                            components.map(async (c: any) => {
+                                const full = await onGetComponentDetails({ componentId: c.id }).catch(() => null);
+                                return full ? { ...c, ...full, details: full?.details } : c;
+                            })
+                        );
+
+                        const componentMap = new Map();
+                        detailedComponents.forEach((c: any) => componentMap.set(c.type, c));
+
+                        setSlots(prevSlots => prevSlots.map(slot => {
+                            const match = componentMap.get(slot.type);
+                            return match ? { ...slot, component: match } : slot;
+                        }));
+
+                        window.history.replaceState({}, document.title, "/forge");
+                    }
+                })
+                .catch(() => {});
+        }
+    }, []);
+
+    const handlePickPart = (slotId: string) => {
+        setActiveSlotId(slotId);
+        setTimeout(() => setBrowserOpen(true), 0);
+    };
+
+    const handleSelectComponent = async (component: any) => {
+        if (!activeSlotId) return;
+
+        try {
+            let id = buildId;
+            if (!id) {
+                const result = await onAddNewBuild({name: "Draft Build", description: "Work in progress"});
+                id = typeof result === 'number' ? result : (result as any)?.buildId;
+                if (!id || !Number.isInteger(id) || id <= 0) {
+                    alert("Failed to create draft build.");
+                    return;
+                }
+                setBuildId(id);
+            }
+
+            const full = await onGetComponentDetails({componentId: component.id}).catch(() => null);
+            const merged = full ? {...component, ...full, details: full.details} : component;
+
+            setSlots(prev => prev.map(slot =>
+                slot.id === activeSlotId ? {...slot, component: merged} : slot
+            ));
+            setBrowserOpen(false);
+
+            await onAddComponentToBuild({buildId: id, componentId: component.id});
+        } catch (e) {
+            // console.error("Failed to add component to server build", e);
+            alert("Failed to add component. Please try again.");
+        } finally {
+            setActiveSlotId(null);
+        }
+    };
+
+    const handleRemovePart = async (slotId: string) => {
+        const slot = slots.find(s => s.id === slotId);
+        if (!slot?.component || !buildId) return;
+
+        setSlots(prev => prev.map(s =>
+            s.id === slotId ? {...s, component: null} : s
+        ));
+
+        try {
+            await onRemoveComponentFromBuild({
+                buildId,
+                componentId: slot.component.id
+            });
+        } catch (e) {
+            console.error("Failed to remove component from server", e);
+        }
+    };
+
+    const handleAddSlot = (type: string, label: string) => {
+        const count = slots.filter(s => s.type === type).length;
+        const newSlot: BuildSlot = {
+            id: `${type}_${count + 1}`,
+            type,
+            label: `${label} ${count > 0 ? count + 1 : ''}`,
+            component: null,
+            required: false
+        };
+        setSlots(prev => [...prev, newSlot]);
+        setAnchorEl(null);
+    };
+
+    const handleDeleteSlot = (slotId: string) => {
+        const slot = slots.find(s => s.id === slotId);
+        if (slot?.component) {
+            handleRemovePart(slotId);
+        }
+        setSlots(prev => prev.filter(s => s.id !== slotId));
+    };
+
+    const handleSubmit = async () => {
+        if (!buildName.trim()) return alert("Please name your build!");
+        if (!buildId) return alert("You must add at least one component before submitting.");
+
+        setIsSubmitting(true);
+        try {
+            const result = await onEditBuild({buildId});
+
+            if (!result) throw new Error("Failed to save build");
+
+            isSubmittedRef.current = true;
+            window.location.href = "/dashboard/user";
+        } catch (e) {
+            console.error(e);
+            alert("Failed to save build.");
+        } finally {
+            setIsSubmitting(false);
+        }
+    };
+
+
+    const activeSlotType = useMemo(() => {
+        if (!activeSlotId) return null;
+        return slots.find(s => s.id === activeSlotId)?.type || null;
+    }, [slots, activeSlotId]);
+
     return (
-        <h1>Test Forge Page</h1>
-    )
+        <Container maxWidth="xl" sx={{mt: 0, mb: 10}}>
+            <Paper sx={{p: 4, mb: 0, bgcolor: '#ff8201', border: '1px solid #1e1e1e', color: 'white'}}>
+                <Typography variant="h4" align="center" fontWeight="bold">Forge Your Machine</Typography>
+                <Grid container spacing={2} justifyContent="center" sx={{mt: 2}}>
+                    <Grid item xs={12} md={6}>
+                        <TextField
+                            fullWidth
+                            label="Build Name *"
+                            value={buildName}
+                            onChange={e => setBuildName(e.target.value)}
+                            sx={{bgcolor: '#1e1e1e', borderRadius: 1, color: 'white'}}
+                        />
+                    </Grid>
+                </Grid>
+            </Paper>
+
+            <TableContainer component={Paper} elevation={3}>
+                <Table sx={{minWidth: 650}}>
+                    <TableHead sx={{bgcolor: '#1e1e1e'}}>
+                        <TableRow>
+                            <TableCell sx={{color: 'white', fontWeight: 'bold'}}>Component</TableCell>
+                            <TableCell sx={{color: 'white', fontWeight: 'bold'}}>Selection & Specs</TableCell>
+                            <TableCell sx={{color: 'white', fontWeight: 'bold'}}>Price</TableCell>
+                            <TableCell sx={{color: 'white', fontWeight: 'bold'}} align="right">Actions</TableCell>
+                        </TableRow>
+                    </TableHead>
+                    <TableBody>
+                        {slots.map((slot) => (
+                            <TableRow key={slot.id} hover>
+                                <TableCell width="15%" sx={{
+                                    fontWeight: 'bold',
+                                    bgcolor: '#1e1e1e',
+                                    color: 'white',
+                                    verticalAlign: 'top',
+                                    pt: 3,
+                                    borderRight: '1px solid #333'
+                                }}>
+                                    {slot.label}
+                                    {slot.required &&
+                                        <Chip label="Required" size="small" color="error" sx={{ml: 1, height: 20}}/>}
+                                </TableCell>
+
+                                <TableCell>
+                                    {slot.component ? (
+                                        <Box sx={{display: 'flex', gap: 2, alignItems: 'flex-start'}}>
+                                            <Avatar
+                                                variant="rounded"
+                                                src={slot.component.imgUrl || slot.component.img_url}
+                                                sx={{width: 60, height: 60, bgcolor: '#eee'}}
+                                            >
+                                                {slot.component.brand?.[0]}
+                                            </Avatar>
+                                            <Box>
+                                                <Typography
+                                                    variant="subtitle1"
+                                                    fontWeight="bold"
+                                                    sx={{cursor: 'pointer', color: 'primary.main'}}
+                                                    onClick={() => setDetailsOpen(slot.component)}
+                                                >
+                                                    {slot.component.name}
+                                                </Typography>
+                                                <Box sx={{display: 'flex', flexWrap: 'wrap', gap: 1, mt: 0.5}}>
+                                                    {renderSpecs(slot.component, slot.type)}
+                                                </Box>
+                                            </Box>
+                                        </Box>
+                                    ) : (
+                                        <Button
+                                            variant="outlined"
+                                            startIcon={<AddIcon/>}
+                                            onClick={() => handlePickPart(slot.id)}
+                                            sx={{textTransform: 'none', color: '#666', borderColor: '#ccc'}}
+                                        >
+                                            Choose {slot.label}
+                                        </Button>
+                                    )}
+                                </TableCell>
+
+                                <TableCell width="10%" sx={{verticalAlign: 'top', pt: 3}}>
+                                    {slot.component ? `$${Number(slot.component.price).toFixed(2)}` : '-'}
+                                </TableCell>
+
+                                <TableCell align="right" width="10%" sx={{verticalAlign: 'top', pt: 2}}>
+                                    {slot.component && (
+                                        <IconButton color="error" onClick={() => handleRemovePart(slot.id)}>
+                                            <DeleteIcon/>
+                                        </IconButton>
+                                    )}
+                                    {!slot.required && (
+                                        <IconButton color="warning" onClick={() => handleDeleteSlot(slot.id)}>
+                                            <CloseIcon/>
+                                        </IconButton>
+                                    )}
+                                </TableCell>
+                            </TableRow>
+                        ))}
+                    </TableBody>
+                </Table>
+            </TableContainer>
+
+            <Box sx={{mt: 4, display: 'flex', justifyContent: 'center'}}>
+                <Button variant="outlined" startIcon={<AddIcon/>} onClick={(e) => setAnchorEl(e.currentTarget)}
+                        sx={{mr: 2}}>
+                    Add Optional Component
+                </Button>
+                <Menu anchorEl={anchorEl} open={Boolean(anchorEl)} onClose={() => setAnchorEl(null)}>
+                    <Typography sx={{px: 2, py: 1, display: 'block', color: 'text.secondary'}}>
+                        Memory & Storage
+                    </Typography>
+                    <MenuItem onClick={() => handleAddSlot('memory', 'Memory')}>
+                        <ListItemIcon><MemoryIcon/></ListItemIcon>
+                        Additional Memory
+                    </MenuItem>
+                    <MenuItem onClick={() => handleAddSlot('storage', 'Storage')}>
+                        <ListItemIcon><AlbumIcon/></ListItemIcon>
+                        Additional Storage
+                    </MenuItem>
+
+                    <Typography sx={{px: 2, py: 1, display: 'block', color: 'text.secondary', mt: 1}}>
+                        Accessories
+                    </Typography>
+                    <MenuItem onClick={() => handleAddSlot('optical_drive', 'Optical Drive')}>
+                        <ListItemIcon><AlbumIcon/></ListItemIcon>
+                        Optical Drive
+                    </MenuItem>
+                    <MenuItem onClick={() => handleAddSlot('cables', 'Cable')}>
+                        <ListItemIcon><CableIcon/></ListItemIcon>
+                        Cables
+                    </MenuItem>
+
+                    <Typography sx={{px: 2, py: 1, display: 'block', color: 'text.secondary', mt: 1}}>
+                        Expansion Cards
+                    </Typography>
+                    <MenuItem onClick={() => handleAddSlot('memory_card', 'Storage Card')}>
+                        <ListItemIcon><MemoryIcon/></ListItemIcon>
+                        Storage Card
+                    </MenuItem>
+                    <MenuItem onClick={() => handleAddSlot('sound_card', 'Sound Card')}>
+                        <ListItemIcon><RouterIcon/></ListItemIcon>
+                        Sound Card
+                    </MenuItem>
+                    <MenuItem onClick={() => handleAddSlot('network_card', 'Network Card')}>
+                        <ListItemIcon><RouterIcon/></ListItemIcon>
+                        Network Card
+                    </MenuItem>
+                    <MenuItem onClick={() => handleAddSlot('network_adapter', 'WiFi Adapter')}>
+                        <ListItemIcon><RouterIcon/></ListItemIcon>
+                        WiFi Adapter
+                    </MenuItem>
+                </Menu>
+            </Box>
+
+            <Box sx={{mt: 4, p: 4, bgcolor: '#1e1e1e', textAlign: 'center', borderRadius: 2}}>
+                <Typography variant="h5" sx={{mb: 2, fontWeight: 'bold', color: 'white'}}>
+                    Total: ${totalPrice.toFixed(2)}
+                </Typography>
+                <Button
+                    variant="contained"
+                    color="primary"
+                    size="large"
+                    onClick={handleSubmit}
+                    disabled={isSubmitting}
+                >
+                    {isSubmitting ? <CircularProgress size={24}/> : 'Submit Build For Review'}
+                </Button>
+            </Box>
+
+            <ComponentDialog
+                open={browserOpen}
+                category={activeSlotType}
+                onClose={() => {
+                    setBrowserOpen(false);
+                    setActiveSlotId(null);
+                }}
+                mode="forge"
+                onSelect={handleSelectComponent}
+                currentBuildId={buildId}
+            />
+
+            <ComponentDetailsDialog
+                open={!!detailsOpen}
+                component={detailsOpen}
+                onClose={() => setDetailsOpen(null)}
+            />
+        </Container>
+    );
 }
+
+function renderSpecs(c: any, type: string) {
+    if (!c) return null;
+    const data = {...c, ...(c.details || {})};
+    const chipStyle = {height: 24, fontSize: '0.75rem', bgcolor: 'rgba(0,0,0,0.05)'};
+    const specs: string[] = [];
+    const val = (k: string) => data[k] || data[k.toLowerCase()] || data[k.replace('_', '')];
+
+    switch (type) {
+        case 'cpu':
+            if (val('socket')) specs.push(val('socket'));
+            if (val('cores')) specs.push(`${val('cores')} Cores / ${val('threads')} Threads`);
+            const base = data.baseclock || data.baseClock || data.base_clock;
+            const boost = data.boostclock || data.boostClock || data.boost_clock;
+            if (base) specs.push(`Base: ${base}GHz`);
+            if (boost) specs.push(`Boost: ${boost}GHz`);
+            break;
+        case 'gpu':
+            if (val('vram')) specs.push(`${val('vram')}GB VRAM`);
+            if (val('chipset')) specs.push(val('chipset'));
+            if (val('length')) specs.push(`L: ${val('length')}mm`);
+            break;
+        case 'motherboard':
+            if (val('socket')) specs.push(val('socket'));
+            if (val('formfactor')) specs.push(val('formfactor'));
+            if (val('ramtype')) specs.push(val('ramtype'));
+            break;
+        case 'memory':
+            if (val('capacity')) specs.push(`${val('capacity')}GB`);
+            if (val('type')) specs.push(val('type'));
+            if (val('speed')) specs.push(`${val('speed')} MHz`);
+            if (val('modules')) specs.push(`${val('modules')}x`);
+            break;
+        case 'storage':
+            if (val('capacity')) specs.push(`${val('capacity')}GB`);
+            if (val('type')) specs.push(val('type'));
+            break;
+        case 'power_supply':
+            if (val('wattage')) specs.push(`Wattage: ${val('wattage')}W`);
+            if (val('type')) specs.push(val('type'));
+            break;
+        case 'case':
+            if (val('gpuMaxLength')) specs.push(`Max GPU Length: ${val('gpuMaxLength')}mm`);
+            if (val('coolerMaxHeight')) specs.push(`Max CPU Cooler Height: ${val('coolerMaxHeight')}mm`);
+            break;
+        case 'cooler':
+            if (val('type')) specs.push(`${val('type')} Cooler`);
+            if (val('height')) specs.push(`${val('height')}mm`);
+            break;
+        default:
+            if (data.brand) specs.push(data.brand);
+    }
+
+    if (specs.length === 0) {
+        if (data.brand) return <Chip label={data.brand} sx={chipStyle}/>;
+        return <Typography variant="caption" color="text.secondary">...</Typography>;
+    }
+
+    return specs.map((label, i) => <Chip key={i} label={label} sx={chipStyle}/>);
+}
Index: pages/index/+Page.tsx
===================================================================
--- pages/index/+Page.tsx	(revision ae5d054380355a32555383768cf7c4a780c9028d)
+++ pages/index/+Page.tsx	(revision 8a7f936ef2c6040183ae33f4b63947eecf8bf3b2)
@@ -1,3 +1,3 @@
-import React, { useEffect, useState } from 'react';
+import React, {useEffect, useState} from 'react';
 import {
     Container, Box, Typography, Button, Grid, IconButton, Dialog, DialogTitle, DialogContent
@@ -10,5 +10,5 @@
 import BuildCard from '../../components/BuildCard';
 
-import { onGetApprovedBuilds, onGetAuthState, onCloneBuild } from '../+Layout.telefunc';
+import {onGetApprovedBuilds, onGetAuthState, onCloneBuild} from '../+Layout.telefunc';
 
 export default function HomePage() {
@@ -29,7 +29,7 @@
                 ] = await Promise.all([
                     onGetAuthState(),
-                    onGetApprovedBuilds({ limit: 5 , sort: 'rating_desc' }),
-                    onGetApprovedBuilds({ limit: 12 }),
-                    onGetApprovedBuilds({ limit: 10, sort: 'rating_desc' })
+                    onGetApprovedBuilds({limit: 5, sort: 'rating_desc'}),
+                    onGetApprovedBuilds({limit: 12}),
+                    onGetApprovedBuilds({limit: 20, sort: 'rating_desc'})
                 ]);
 
@@ -45,4 +45,5 @@
             }
         }
+
         loadSite();
     }, []);
@@ -51,5 +52,5 @@
         if (!data?.isLoggedIn) return alert("Please login to clone builds!");
         if (confirm(`Clone this build to your dashboard?`)) {
-            await onCloneBuild({ buildId });
+            await onCloneBuild({buildId});
             alert("Build cloned! Check your dashboard.");
             setSelectedBuildId(null);
@@ -57,5 +58,5 @@
     };
 
-    if (!data) return <Box sx={{ p: 10, textAlign: 'center' }}>Loading Forge...</Box>;
+    if (!data) return <Box sx={{p: 10, textAlign: 'center'}}>Loading Forge...</Box>;
 
     return (
@@ -69,11 +70,11 @@
                 }
             }}>
-                <Box sx={{ position: 'relative', textAlign: 'center', zIndex: 1, p: 2 }}>
+                <Box sx={{position: 'relative', textAlign: 'center', zIndex: 1, p: 2}}>
                     <Typography variant="h2" fontWeight="bold" gutterBottom>Forge Your Ultimate Machine</Typography>
-                    <Typography variant="h5" sx={{ maxWidth: '800px', mx: 'auto', mb: 1 }}>
+                    <Typography variant="h5" sx={{maxWidth: '800px', mx: 'auto', mb: 1}}>
                         Build, share, discuss, and discover custom PC configurations.
                     </Typography>
-                    <Button variant="contained" size="large" href="/forge" startIcon={<AutoFixHighIcon />}
-                            sx={{ fontSize: '1.2rem', px: 4, py: 1.5, mt: 2 }}>
+                    <Button variant="contained" size="large" href="/forge" startIcon={<AutoFixHighIcon/>}
+                            sx={{fontSize: '1.2rem', px: 4, py: 1.5, mt: 2}}>
                         Start Forging
                     </Button>
@@ -81,7 +82,7 @@
             </Box>
 
-            <Container maxWidth="xl" sx={{ mt: 6, mb: 10 }}>
+            <Container maxWidth="xl" sx={{mt: 6, mb: 10}}>
                 <Box sx={{
-                    mb: 4, borderLeft: '5px solid #ff8201', pl: 2,
+                    mb: 2, borderLeft: '5px solid #ff8201', pl: 1,
                     display: 'flex', justifyContent: 'space-between', alignItems: 'end'
                 }}>
@@ -92,35 +93,62 @@
                         </Typography>
                     </Box>
-                    <Button variant="outlined" startIcon={<ListIcon />} onClick={() => setOpenRankedPopup(true)}>
+                    <Button variant="outlined" startIcon={<ListIcon/>} onClick={() => setOpenRankedPopup(true)}>
                         Show All Top Ranked
                     </Button>
                 </Box>
-
-                <Grid container spacing={3} sx={{ mb: 8, alignItems: 'stretch' }}>
-                    {data.prebuilts.slice(0, 3).map((build: any) => (
-                        <Grid item xs={12} sm={6} md={3} key={build.id} sx={{ display: 'flex' }}>
-                            <Box sx={{ width: '100%' }}>
-                                <BuildCard
-                                    build={build}
-                                    onClick={() => setSelectedBuildId(build.id)}
-                                />
-                            </Box>
-                        </Grid>
+                <Box
+                    sx={{
+                        display: 'grid',
+                        gridTemplateColumns: {
+                            xs: '1fr',
+                            sm: 'repeat(2, 1fr)',
+                            md: 'repeat(3, 1fr)',
+                            lg: 'repeat(4, 1fr)',
+                            xl: 'repeat(5, 1fr)',
+                        },
+                        gap: 3,
+                        width: '90%',
+                    }}
+                >
+                    {data.prebuilts.map((build: any) => (
+                        <BuildCard
+                            key={build.id}
+                            build={build}
+                            onClick={() => setSelectedBuildId(build.id)}
+                        />
                     ))}
-                </Grid>
-
-                <SectionHeader title="Community Forge" subtitle="Fresh builds from users around the world."/>
-                <Grid container spacing={3}>
+                </Box>
+
+                <Box sx={{
+                    mb: 2, mt: 2, borderLeft: '5px solid #ff8201', pl: 1,
+                }}>
+                    <Typography variant="h4" fontWeight="bold" color="text.primary">Community Forge</Typography>
+                    <Typography variant="subtitle1" color="text.secondary" sx={{mb: 2}}>Fresh builds from users around
+                        the world.</Typography>
+                </Box>
+                <Box
+                    sx={{
+                        display: 'grid',
+                        gridTemplateColumns: {
+                            xs: '1fr',
+                            sm: 'repeat(2, 1fr)',
+                            md: 'repeat(3, 1fr)',
+                            lg: 'repeat(4, 1fr)',
+                            xl: 'repeat(5, 1fr)',
+                        },
+                        gap: 3,
+                        width: '90%',
+                    }}
+                >
                     {data.communityBuilds.map((build: any) => (
-                        <Grid item xs={12} sm={6} md={3} key={build.id}>
-                            <BuildCard
-                                build={build}
-                                onClick={() => setSelectedBuildId(build.id)}
-                            />
-                        </Grid>
+                        <BuildCard
+                            key={build.id}
+                            build={build}
+                            onClick={() => setSelectedBuildId(build.id)}
+                        />
                     ))}
-                </Grid>
-
-                <Box sx={{ display: 'flex', justifyContent: 'center', mt: 6 }}>
+                </Box>
+
+                <Box sx={{display: 'flex', justifyContent: 'center', mt: 6}}>
                     <Button variant="outlined" size="large" href="/completed-builds">View All Community Builds</Button>
                 </Box>
@@ -135,19 +163,28 @@
             />
 
-            <Dialog open={openRankedPopup} onClose={() => setOpenRankedPopup(false)} maxWidth="lg" fullWidth scroll="paper">
-                <DialogTitle sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
+            <Dialog open={openRankedPopup} onClose={() => setOpenRankedPopup(false)} maxWidth="xl" fullWidth
+                    scroll="paper">
+                <DialogTitle sx={{display: 'flex', justifyContent: 'space-between', alignItems: 'center'}}>
                     Hall of Fame (Top Rated)
-                    <IconButton onClick={() => setOpenRankedPopup(false)}><CloseIcon /></IconButton>
+                    <IconButton onClick={() => setOpenRankedPopup(false)}><CloseIcon/></IconButton>
                 </DialogTitle>
                 <DialogContent dividers>
-                    <Grid container spacing={3}>
+                    <Grid container spacing={3} sx={{p: 1}}>
                         {allRanked.map((build: any, index: number) => (
-                            <Grid item xs={12} sm={6} md={3} key={`ranked-${build.id}`}>
-                                <Box sx={{ position: 'relative' }}>
+                            <Grid
+                                item
+                                xs={12}
+                                sm={6}
+                                md={3}
+                                key={`ranked-${build.id}`}
+                                sx={{display: 'flex'}}
+                            >
+                                <Box sx={{position: 'relative', width: '100%', display: 'flex'}}>
                                     <Box sx={{
                                         position: 'absolute', top: -10, left: -10, zIndex: 1,
-                                        width: 30, height: 30, borderRadius: '50%',
-                                        bgcolor: index < 3 ? '#ff8201' : 'grey.700', color: 'white',
-                                        display: 'flex', alignItems: 'center', justifyContent: 'center', fontWeight: 'bold'
+                                        width: 35, height: 35, borderRadius: '50%',
+                                        bgcolor: index < 3 ? '#ff8201' : 'grey.800', color: 'white',
+                                        display: 'flex', alignItems: 'center', justifyContent: 'center',
+                                        fontWeight: 'bold', border: '2px solid white', boxShadow: 2
                                     }}>
                                         #{index + 1}
@@ -166,15 +203,5 @@
                 </DialogContent>
             </Dialog>
-
         </Box>
     );
 }
-
-function SectionHeader({ title, subtitle }: { title: string, subtitle: string }) {
-    return (
-        <Box sx={{ mb: 4, borderLeft: '5px solid #ff8201', pl: 2 }}>
-            <Typography variant="h4" fontWeight="bold" color="text.primary">{title}</Typography>
-            <Typography variant="subtitle1" color="text.secondary">{subtitle}</Typography>
-        </Box>
-    );
-}
