# Albert Jeffers - Artist Portfolio A beautiful, modern portfolio website for visual artists to showcase their work with authentication and image upload capabilities. ## Features - **Stunning Gallery Layout**: Responsive grid layout with hover effects and smooth transitions - **Artist Authentication**: Secure login system for the artist to manage their portfolio - **Image Upload**: Upload artwork via file upload or URL with live preview - **Artwork Management**: Add, view, and delete artworks when authenticated - **Responsive Design**: Fully responsive layout that works beautifully on all devices - **Modern UI**: Built with shadcn/ui components for a polished, professional look - **Dark/Light Mode Support**: CSS variables for easy theme customization ## Tech Stack - **React 18** with TypeScript - **Vite** for fast development and optimized builds - **Tailwind CSS** for utility-first styling - **shadcn/ui** component library (NOT Bootstrap) - **Lucide React** for beautiful icons - **Local Storage** for data persistence (easily replaceable with a backend) ## Getting Started ### Prerequisites - Node.js 18+ or Bun - npm, yarn, or pnpm ### Installation ```bash # Install dependencies npm install # Start development server npm run dev ``` The application will be available at `http://localhost:5173` ### Build for Production ```bash npm run build npm run preview ``` ## Usage ### For Visitors - Browse the gallery of artworks - Click on any artwork to view full details - Read about the artist in the About section ### For the Artist 1. Click "Artist Login" in the header 2. Enter your credentials (any email/password for demo) 3. Once logged in, you can: - Add new artworks using the "Add Artwork" button - Delete existing artworks using the trash icon - Upload images via file upload or URL ## Project Structure ``` src/ ├── components/ # React components │ ├── ui/ # shadcn/ui components │ ├── Header.tsx # Navigation header │ ├── Hero.tsx # Hero section │ ├── Gallery.tsx # Gallery grid │ ├── ArtworkCard.tsx # Individual artwork card │ ├── ArtworkDetail.tsx # Artwork detail modal │ ├── LoginDialog.tsx # Login modal │ └── AddArtworkDialog.tsx # Add artwork modal ├── hooks/ # Custom React hooks │ ├── useAuth.ts # Authentication logic │ └── useArtwork.ts # Artwork management ├── lib/ # Utilities │ └── utils.ts # cn() helper for classnames ├── types/ # TypeScript types │ └── index.ts # Shared type definitions ├── App.tsx # Main application └── main.tsx # Application entry point ``` ## Customization ### Artist Information Edit the about section in `src/App.tsx` to customize the artist's bio. ### Sample Artworks Default artworks are defined in `src/hooks/useArtwork.ts`. Replace with your own images. ### Colors and Theme Modify the CSS variables in `src/index.css` to change the color scheme. ### Adding a Backend Currently uses localStorage for simplicity. To add a backend: 1. Update `src/hooks/useAuth.ts` to call your authentication API 2. Update `src/hooks/useArtwork.ts` to fetch/save artworks to your database 3. Consider using services like: - Supabase (database + authentication + storage) - Firebase - AWS Amplify - Your custom backend API ## Future Enhancements - [ ] Image optimization and CDN integration - [ ] Categories/tags for artworks - [ ] Contact form - [ ] Social media integration - [ ] Image lightbox with zoom - [ ] Admin dashboard with analytics - [ ] Multiple artist support - [ ] Comments/testimonials section ## License MIT ## Credits Built with React, TypeScript, Vite, Tailwind CSS, and shadcn/ui