3.8 KiB
3.8 KiB
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
# Install dependencies
npm install
# Start development server
npm run dev
The application will be available at http://localhost:5173
Build for Production
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
- Click "Artist Login" in the header
- Enter your credentials (any email/password for demo)
- 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:
- Update
src/hooks/useAuth.tsto call your authentication API - Update
src/hooks/useArtwork.tsto fetch/save artworks to your database - 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