Skip to content

setan21/pictura-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pictura

Pictura is a premium web image storage and personal gallery application built with Next.js 15, Tailwind CSS, and Supabase. Featuring a modern, shop-like interface with card-based design, smooth animations, and a dark theme with purple-cyan gradient accents.

✨ Features

🖼️ Gallery & Organization

  • Card-based gallery with hover effects and scale animations
  • Infinite scroll or pagination for large collections
  • Smart filtering: All / Album / Favorites / Recent
  • Search with debounce across titles, descriptions, and tags
  • Sorting options: Newest, Oldest, A-Z, Size

📤 Upload System

  • Drag & drop multiple image upload
  • Progress bar with real-time feedback
  • Form fields: Title, Description, Tags (multi-select), Album, Visibility
  • Preview before upload

🎨 Premium UI/UX

  • Dark mode default with purple-blue gradient (#8B5CF6 → #22D3EE)
  • Glassmorphism effects with subtle borders and soft shadows
  • Responsive design (mobile-first, smooth on all devices)
  • Loading skeletons with shimmer effects
  • Empty state illustrations
  • Typography: Inter + Space Grotesk

🔧 Core Functionality

  • Image detail modal with zoom, download, share, delete
  • Albums/Collections like online shop folders
  • Favorites system with dedicated page
  • Profile & Settings (name, avatar, theme preferences)
  • Toast notifications with Sonner

🛠️ Tech Stack

Frontend

  • Next.js 15 (App Router) + TypeScript
  • Tailwind CSS + shadcn/ui + Tailwind Merge + clsx
  • Zustand for state management
  • Framer Motion for smooth animations
  • Lucide React for icons
  • Next-themes for dark/light mode
  • Zod + React Hook Form for form validation
  • Sonner for toast notifications

Backend & Storage

  • Supabase (PostgreSQL database, authentication, storage)
  • Supabase Storage for image hosting
  • Row Level Security (RLS) for data protection

🚀 Getting Started

1. Clone & Install

git clone https://github.com/setan21/pictura.git
cd pictura
npm install

2. Environment Setup

Create .env.local file:

NEXT_PUBLIC_SUPABASE_URL=your-supabase-project-url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key
SUPABASE_SERVICE_KEY=your-supabase-service-key

3. Database Setup

  1. Create a Supabase project at supabase.com
  2. Run the SQL from schema.sql in the Supabase SQL Editor
  3. Enable Storage and create a images bucket

4. Run Development Server

npm run dev

Open http://localhost:3000

📦 Deployment

Deploy to Vercel (Recommended)

Deploy with Vercel

  1. Connect GitHub to Vercel
  2. Import repository setan21/pictura
  3. Add environment variables from .env.example
  4. Deploy with one click

Environment Variables for Vercel

  • NEXT_PUBLIC_SUPABASE_URL
  • NEXT_PUBLIC_SUPABASE_ANON_KEY
  • SUPABASE_SERVICE_KEY

📁 Project Structure

pictura/
├── app/                    # Next.js 15 App Router
│   ├── (auth)/            # Authentication pages
│   ├── (dashboard)/       # Main app pages
│   │   ├── gallery/       # Image gallery
│   │   ├── upload/        # Upload page
│   │   ├── albums/        # Album management
│   │   ├── favorites/     # Favorites page
│   │   └── settings/      # User settings
│   └── layout.tsx         # Root layout
├── components/            # React components
│   ├── ui/               # shadcn/ui components
│   ├── gallery/          # Gallery components
│   ├── upload/           # Upload components
│   ├── modal/            # Modal components
│   └── layout/           # Layout components
├── lib/                  # Utilities & stores
│   ├── supabase/         # Supabase client & types
│   └── store/            # Zustand stores
├── public/               # Static assets
└── styles/               # Global styles

🎯 Design System

Colors

  • Primary: #8B5CF6 (Purple)
  • Secondary: #22D3EE (Cyan)
  • Background: Dark gradient with glassmorphism
  • Accent: Purple-cyan gradient

Typography

  • Headings: Space Grotesk (--font-space-grotesk)
  • Body: Inter (--font-inter)

Animations

  • Card hover: Scale + shadow + gradient overlay
  • Page transitions: Framer Motion
  • Loading: Shimmer skeletons

📄 License

MIT License - see LICENSE file for details.

🤝 Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Submit a pull request with detailed description

📞 Support

For issues or questions:


Pictura - Your Personal Image Shop 🖼️✨

About

No description, website, or topics provided.

Resources

Stars

20 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors