fix: retrieve created_at for projects and handle persistent login in UI
Build and Deploy / build-and-push (push) Failing after 25s

This commit is contained in:
AI Bot
2026-09-02 10:12:54 +05:30
parent 7582d9b810
commit 04ee585c99
2 changed files with 37 additions and 23 deletions
+1 -1
View File
@@ -119,7 +119,7 @@ app.get('/api/auth/me', authenticate, async (req, res) => {
// 4. Get all projects for user // 4. Get all projects for user
app.get('/api/projects', authenticate, async (req, res) => { app.get('/api/projects', authenticate, async (req, res) => {
try { try {
const projects = await all('SELECT id, name FROM projects WHERE user_id = ?', [req.user.id]); const projects = await all('SELECT id, name, created_at FROM projects WHERE user_id = ?', [req.user.id]);
res.json({ projects }); res.json({ projects });
} catch (err) { } catch (err) {
res.status(500).json({ error: err.message }); res.status(500).json({ error: err.message });
+36 -22
View File
@@ -3,7 +3,7 @@ import { Box, Layers, Zap, Globe, Sparkles, Wand2, Image as ImageIcon, BoxSelect
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
export default function Home() { export default function Home() {
const { openAuthModal } = useAuthStore(); const { openAuthModal, user } = useAuthStore();
const [scrolled, setScrolled] = useState(false); const [scrolled, setScrolled] = useState(false);
useEffect(() => { useEffect(() => {
@@ -23,18 +23,29 @@ export default function Home() {
<Box className="text-primary" /> Titan<span className="text-primary">3d</span> <Box className="text-primary" /> Titan<span className="text-primary">3d</span>
</div> </div>
<div className="flex gap-4"> <div className="flex gap-4">
<button {user ? (
onClick={() => openAuthModal('login')} <button
className="px-6 py-2 hover:text-primary font-medium transition-all" onClick={() => window.location.href = '/dashboard'}
> className="px-6 py-2 bg-primary hover:bg-primary/90 text-white rounded-full font-medium transition-all shadow-[0_0_15px_rgba(var(--primary-rgb),0.3)] hover:shadow-[0_0_25px_rgba(var(--primary-rgb),0.5)]"
Log In >
</button> Go to Dashboard
<button </button>
onClick={() => openAuthModal('register')} ) : (
className="px-6 py-2 bg-primary hover:bg-primary/90 text-white rounded-full font-medium transition-all shadow-[0_0_15px_rgba(var(--primary-rgb),0.3)] hover:shadow-[0_0_25px_rgba(var(--primary-rgb),0.5)]" <>
> <button
Sign Up onClick={() => openAuthModal('login')}
</button> className="px-6 py-2 hover:text-primary font-medium transition-all"
>
Log In
</button>
<button
onClick={() => openAuthModal('register')}
className="px-6 py-2 bg-primary hover:bg-primary/90 text-white rounded-full font-medium transition-all shadow-[0_0_15px_rgba(var(--primary-rgb),0.3)] hover:shadow-[0_0_25px_rgba(var(--primary-rgb),0.5)]"
>
Sign Up
</button>
</>
)}
</div> </div>
</nav> </nav>
@@ -60,15 +71,18 @@ export default function Home() {
Turn flat images into stunning 3D models, edit materials in real-time, and embed a photorealistic product configurator directly into your store. Turn flat images into stunning 3D models, edit materials in real-time, and embed a photorealistic product configurator directly into your store.
</p> </p>
<div className="flex flex-col sm:flex-row gap-6"> <div className="flex flex-wrap justify-center gap-4">
<button {user ? (
onClick={() => openAuthModal('register')} <button onClick={() => window.location.href = '/dashboard'} className="px-8 py-4 bg-primary hover:bg-primary/90 text-white rounded-full font-semibold text-lg transition-all flex items-center gap-2 shadow-[0_0_20px_rgba(var(--primary-rgb),0.4)] hover:shadow-[0_0_40px_rgba(var(--primary-rgb),0.6)] hover:-translate-y-1">
className="group px-8 py-4 bg-primary text-white rounded-full font-bold text-lg flex items-center gap-2 transition-all hover:scale-105 shadow-[0_0_40px_rgba(var(--primary-rgb),0.4)]" Go to Dashboard <ArrowRight size={20} />
> </button>
Start Building Free <ArrowRight className="group-hover:translate-x-1 transition-transform" /> ) : (
</button> <button onClick={() => openAuthModal('register')} className="px-8 py-4 bg-primary hover:bg-primary/90 text-white rounded-full font-semibold text-lg transition-all flex items-center gap-2 shadow-[0_0_20px_rgba(var(--primary-rgb),0.4)] hover:shadow-[0_0_40px_rgba(var(--primary-rgb),0.6)] hover:-translate-y-1">
<button className="px-8 py-4 bg-white/5 hover:bg-white/10 border border-white/10 rounded-full font-bold text-lg transition-all"> Start Creating Free <ArrowRight size={20} />
Book a Demo </button>
)}
<button className="px-8 py-4 bg-white/5 hover:bg-white/10 text-white rounded-full font-semibold text-lg backdrop-blur-md border border-white/10 transition-all hover:-translate-y-1">
View Examples
</button> </button>
</div> </div>
</div> </div>