Portfolio
3D Modeling & Animation
High-fidelity 3D models, sculpts, product visualizations.2

3D Modeling & Animation
erfergessg
sregwrefrwe-- - 1. Projects table CREATE TABLE IF NOT EXISTS projects ( id UUID DEFAULT gen_random_uuid() PRIMARY KEY, title TEXT NOT NULL, slug TEXT NOT NULL UNIQUE, description TEXT, category TEXT NOT NULL CHECK (category IN ('3D Modeling', 'Graphic Design', 'Video Editing')), video_url TEXT, thumbnail_url TEXT, is_best_work BOOLEAN DEFAULT FALSE, bento_class TEXT DEFAULT 'col-span-1 row-span-1', -- ArtStation fields artstation_url TEXT, client_name TEXT, software_used TEXT[] DEFAULT '{}', tags TEXT[] DEFAULT '{}', project_date TEXT, gallery_images TEXT[] DEFAULT '{}', medium TEXT, -- created_at TIMESTAMPTZ DEFAULT NOW(), updated_at TIMESTAMPTZ DEFAULT NOW() ); -- 2. Hero content table (single row — the homepage hero) CREATE TABLE IF NOT EXISTS hero_content ( id INT PRIMARY KEY DEFAULT 1 CHECK (id = 1), headline TEXT NOT NULL DEFAULT 'Rahul', headline_line2 TEXT NOT NULL DEFAULT 'Barman', subtext TEXT NOT NULL DEFAULT 'Designer, 3D artist & video editor crafting premium visual stories for ambitious brands.', badge_text TEXT NOT NULL DEFAULT 'Available for new projects · 2025', updated_at TIMESTAMPTZ DEFAULT NOW() ); -- Insert default hero row INSERT INTO hero_content (id, headline, headline_line2, subtext, badge_text) VALUES (1, 'Rahul', 'Barman', 'Designer, 3D artist & video editor crafting premium visual stories for ambitious brands.', 'Available for new projects · 2025') ON CONFLICT (id) DO NOTHING; -- 3. Enable RLS ALTER TABLE projects ENABLE ROW LEVEL SECURITY; ALTER TABLE hero_content ENABLE ROW LEVEL SECURITY; -- 4. Public read access CREATE POLICY "Public can read projects" ON projects FOR SELECT USING (true); CREATE POLICY "Public can read hero_content" ON hero_content FOR SELECT USING (true); -- 5. Authenticated users can manage projects CREATE POLICY "Auth users can insert projects" ON projects FOR INSERT WITH CHECK (auth.role() = 'authenticated'); CREATE POLICY "Auth users can update projects" ON projects FOR UPDATE USING (auth.role() = 'authenticated'); CREATE POLICY "Auth users can delete projects" ON projects FOR DELETE USING (auth.role() = 'authenticated'); -- 6. Authenticated users can update hero_content CREATE POLICY "Auth users can update hero" ON hero_content FOR UPDATE USING (auth.role() = 'authenticated'); -- 7. Indexes CREATE INDEX IF NOT EXISTS idx_projects_category ON projects (category); CREATE INDEX IF NOT EXISTS idx_projects_best_work ON projects (is_best_work) WHERE is_best_work = true; -- 8. Storage bucket for project media uploads INSERT INTO storage.buckets (id, name, public) VALUES ('project-media', 'project-media', true) ON CONFLICT (id) DO NOTHING; -- 9. Storage policies CREATE POLICY "Public can view project media" ON storage.objects FOR SELECT USING (bucket_id = 'project-media'); CREATE POLICY "Auth users can upload project media" ON storage.objects FOR INSERT WITH CHECK (bucket_id = 'project-media' AND auth.role() = 'authenticated'); CREATE POLICY "Auth users can update project media" ON storage.objects FOR UPDATE USING (bucket_id = 'project-media' AND auth.role() = 'authenticated'); CREATE POLICY "Auth users can delete project media" ON storage.objects FOR DELETE USING (bucket_id = 'project-media' AND auth.role() = 'authenticated');
View ProjectShowing 1 of 1 project