|
1 |
| -# Wedding Photo Gallery App |
2 |
| - |
3 |
| -A React-based web application that allows wedding guests to upload photos and participate in photo challenges. The app uses Google Drive for storage and features both general photo uploads and specific photo challenges. |
4 |
| - |
5 |
| -## Features |
6 |
| - |
7 |
| -- Multiple photo upload (up to 30 photos at once) |
8 |
| -- Photo challenges with progress tracking |
9 |
| -- Device and browser detection |
10 |
| -- Admin view for all photos |
11 |
| -- Progress bars for uploads |
12 |
| -- Mobile-friendly design |
13 |
| -- Local storage for challenge completion status |
14 |
| -- Google Drive integration for photo storage |
| 1 | +# Wedding Photo Sharing App |
| 2 | + |
| 3 | +A real-time photo sharing application designed for weddings and engagement celebrations, allowing guests to upload photos, participate in photo challenges, and interact through likes, comments, and voting. |
| 4 | + |
| 5 | +## 🌟 Features |
| 6 | + |
| 7 | +- **Photo Upload System** |
| 8 | + - Direct photo uploads with progress tracking |
| 9 | + - Support for multiple file selection |
| 10 | + - File size and type validation |
| 11 | + - Mobile-optimized upload experience |
| 12 | + - Automatic device detection |
| 13 | + |
| 14 | +- **Challenge System** |
| 15 | + - Pre-defined photo challenges for guests |
| 16 | + - Private and public challenge options |
| 17 | + - Real-time challenge leaderboards |
| 18 | + - Voting system with one vote per challenge |
| 19 | + - Challenge completion tracking |
| 20 | + |
| 21 | +- **Social Features** |
| 22 | + - Like and comment on photos |
| 23 | + - Photo voting in challenges |
| 24 | + - Interactive leaderboards |
| 25 | + - Real-time updates |
| 26 | + - User engagement metrics |
| 27 | + |
| 28 | +- **Admin Dashboard** |
| 29 | + - Comprehensive photo management |
| 30 | + - User activity tracking |
| 31 | + - Challenge monitoring |
| 32 | + - Export functionality |
| 33 | + - Analytics and statistics |
| 34 | + |
| 35 | +- **User Experience** |
| 36 | + - Responsive design for all devices |
| 37 | + - Intuitive navigation |
| 38 | + - Real-time progress indicators |
| 39 | + - Toast notifications |
| 40 | + - Image optimization |
| 41 | + |
| 42 | +## 🛠️ Technical Stack |
| 43 | + |
| 44 | +### Frontend |
| 45 | +- React |
| 46 | +- Tailwind CSS |
| 47 | +- Lucide Icons |
| 48 | +- Framer Motion |
| 49 | +- Recharts |
| 50 | +- ShadcnUI Components |
15 | 51 |
|
16 |
| -## Prerequisites |
| 52 | +### Backend |
| 53 | +- Node.js |
| 54 | +- Express |
| 55 | +- SQLite |
| 56 | +- Multer |
| 57 | +- CORS |
17 | 58 |
|
18 |
| -Before you begin, ensure you have installed: |
19 |
| -- [Node.js](https://nodejs.org/) (version 14 or higher) |
20 |
| -- npm (comes with Node.js) |
| 59 | +## 🚀 Getting Started |
21 | 60 |
|
22 |
| -You'll also need: |
23 |
| -- A Google Cloud Console account |
24 |
| -- Google Drive API enabled |
25 |
| -- OAuth 2.0 Client ID and API Key |
| 61 | +### Prerequisites |
| 62 | +- Node.js (v14 or higher) |
| 63 | +- npm or yarn |
26 | 64 |
|
27 |
| -## Setup |
| 65 | +### Installation |
28 | 66 |
|
29 |
| -1. Clone the repository: |
| 67 | +1. Clone the repository |
30 | 68 | ```bash
|
31 |
| -git clone <your-repository-url> |
32 |
| -cd wedding-photo-app |
| 69 | +git clone https://github.com/yourusername/wedding-photo-app.git |
33 | 70 | ```
|
34 | 71 |
|
35 |
| -2. Install dependencies: |
| 72 | +2. Install frontend dependencies |
36 | 73 | ```bash
|
| 74 | +cd wedding-photo-app |
37 | 75 | npm install
|
38 | 76 | ```
|
39 | 77 |
|
40 |
| -3. Create your Google Cloud Console project: |
41 |
| - - Go to [Google Cloud Console](https://console.cloud.google.com) |
42 |
| - - Create a new project |
43 |
| - - Enable the Google Drive API |
44 |
| - - Create OAuth 2.0 credentials |
45 |
| - - Add authorized JavaScript origins: |
46 |
| - ``` |
47 |
| - http://localhost:5173 |
48 |
| - http://localhost |
49 |
| - ``` |
50 |
| -
|
51 |
| -4. Update the constants in `App.jsx`: |
52 |
| -```javascript |
53 |
| -const GOOGLE_CLIENT_ID = 'YOUR_CLIENT_ID'; |
54 |
| -const API_KEY = 'YOUR_API_KEY'; |
55 |
| -const ADMIN_PASSWORD = 'your-chosen-password'; |
56 |
| -``` |
57 |
| - |
58 |
| -5. Run the development server: |
| 78 | +3. Install backend dependencies |
59 | 79 | ```bash
|
60 |
| -npm run dev |
| 80 | +cd server |
| 81 | +npm install |
61 | 82 | ```
|
62 | 83 |
|
63 |
| -The app should now be running at `http://localhost:5173` |
64 |
| - |
65 |
| -## Development |
66 |
| - |
67 |
| -To start the development server: |
| 84 | +4. Create environment variables |
68 | 85 | ```bash
|
69 |
| -npm run dev |
| 86 | +cp .env.example .env |
70 | 87 | ```
|
71 | 88 |
|
72 |
| -To build for production: |
| 89 | +5. Start the development server |
73 | 90 | ```bash
|
74 |
| -npm run build |
75 |
| -``` |
| 91 | +# Start backend server |
| 92 | +cd server |
| 93 | +npm run dev |
76 | 94 |
|
77 |
| -To preview the production build: |
78 |
| -```bash |
79 |
| -npm run preview |
| 95 | +# Start frontend in a new terminal |
| 96 | +cd ../ |
| 97 | +npm run dev |
80 | 98 | ```
|
81 | 99 |
|
82 |
| -## Project Structure |
| 100 | +## 📁 Project Structure |
83 | 101 |
|
84 | 102 | ```
|
85 | 103 | wedding-photo-app/
|
86 | 104 | ├── src/
|
87 |
| -│ ├── App.jsx # Main application component |
88 |
| -│ ├── main.jsx # Entry point |
89 |
| -│ └── index.css # Global styles |
90 |
| -├── public/ # Static assets |
91 |
| -├── index.html # HTML template |
92 |
| -├── vite.config.js # Vite configuration |
93 |
| -├── package.json # Project dependencies |
94 |
| -└── README.md # This file |
| 105 | +│ ├── components/ |
| 106 | +│ │ ├── AdminDashboard.jsx |
| 107 | +│ │ ├── AdminView.jsx |
| 108 | +│ │ ├── ChallengeInteractions.jsx |
| 109 | +│ │ ├── ChallengeLeaderboard.jsx |
| 110 | +│ │ ├── EnhancedAdminGallery.jsx |
| 111 | +│ │ ├── OptimizedImage.jsx |
| 112 | +│ │ ├── PhotoUploader.jsx |
| 113 | +│ │ ├── SocialFeatures.jsx |
| 114 | +│ │ └── VotingSystem.jsx |
| 115 | +│ ├── App.jsx |
| 116 | +│ └── main.jsx |
| 117 | +├── server/ |
| 118 | +│ └── server.js |
| 119 | +└── public/ |
95 | 120 | ```
|
96 | 121 |
|
97 |
| -## Configuration Files |
98 |
| - |
99 |
| -### vite.config.js |
100 |
| -```javascript |
101 |
| -import { defineConfig } from 'vite' |
102 |
| -import react from '@vitejs/plugin-react' |
103 |
| - |
104 |
| -export default defineConfig({ |
105 |
| - plugins: [react()], |
106 |
| - server: { |
107 |
| - host: '0.0.0.0', |
108 |
| - port: 5173, |
109 |
| - strictPort: true, |
110 |
| - hmr: { |
111 |
| - host: '0.0.0.0', |
112 |
| - port: 5173 |
113 |
| - }, |
114 |
| - watch: { |
115 |
| - usePolling: true |
116 |
| - } |
117 |
| - } |
118 |
| -}) |
119 |
| -``` |
| 122 | +## 🔑 Key Features Explained |
120 | 123 |
|
121 |
| -## Dependencies |
| 124 | +### Photo Upload System |
| 125 | +- Supports both single and multiple photo uploads |
| 126 | +- Handles file validation and size restrictions |
| 127 | +- Progress tracking for uploads |
| 128 | +- Device-specific optimizations |
122 | 129 |
|
123 |
| -- React |
124 |
| -- Vite |
125 |
| -- Tailwind CSS |
126 |
| -- Google Drive API |
127 |
| -- lucide-react (for icons) |
| 130 | +### Challenge System |
| 131 | +- Configurable photo challenges |
| 132 | +- Private challenges for sensitive content |
| 133 | +- Public challenges with voting and leaderboards |
| 134 | +- Real-time challenge status updates |
| 135 | + |
| 136 | +### Admin Features |
| 137 | +- Complete photo management |
| 138 | +- User activity monitoring |
| 139 | +- Challenge administration |
| 140 | +- Data export capabilities |
| 141 | +- Analytics dashboard |
128 | 142 |
|
129 |
| -## Features in Detail |
| 143 | +## 🔒 Security Features |
130 | 144 |
|
131 |
| -### Photo Upload |
132 |
| -- Multiple file selection |
133 |
| -- Progress tracking |
134 | 145 | - File type validation
|
135 |
| -- Size limits (10MB per file) |
136 |
| -- Automatic Google Drive folder creation |
137 |
| - |
138 |
| -### Photo Challenges |
139 |
| -- Predefined photo challenges |
140 |
| -- Progress tracking |
141 |
| -- Completion status saved locally |
142 |
| -- Visual feedback for completed challenges |
143 |
| - |
144 |
| -### Admin View |
145 |
| -- Password protected |
146 |
| -- Access to all uploaded photos |
147 |
| -- Device information display |
148 |
| -- Upload metadata |
149 |
| - |
150 |
| -## Usage |
151 |
| - |
152 |
| -1. Enter your name to login |
153 |
| -2. Choose between general upload or photo challenges |
154 |
| -3. For general upload: |
155 |
| - - Select up to 30 photos |
156 |
| - - View upload progress |
157 |
| - - Remove selected files if needed |
158 |
| -4. For challenges: |
159 |
| - - Select a challenge |
160 |
| - - Upload a photo |
161 |
| - - Track completion status |
162 |
| -5. Admin access: |
163 |
| - - Click "Admin Access" |
164 |
| - - Enter password |
165 |
| - - View all uploaded photos |
166 |
| - |
167 |
| -## Troubleshooting |
168 |
| - |
169 |
| -If you encounter issues: |
170 |
| -1. Check browser console for errors |
171 |
| -2. Verify Google Cloud Console credentials |
172 |
| -3. Ensure all required APIs are enabled |
173 |
| -4. Clear browser cache and cookies |
174 |
| -5. Check file sizes and types |
175 |
| - |
176 |
| -## Contributing |
| 146 | +- Size restrictions |
| 147 | +- CORS configuration |
| 148 | +- Rate limiting |
| 149 | +- Admin authentication |
| 150 | +- Private challenge protection |
| 151 | + |
| 152 | +## 📱 Mobile Support |
| 153 | + |
| 154 | +The application is fully responsive and optimized for mobile devices with: |
| 155 | +- Touch-friendly interfaces |
| 156 | +- Optimized upload experience |
| 157 | +- Mobile-first design |
| 158 | +- Device-specific features |
| 159 | +- Progressive loading |
| 160 | + |
| 161 | +## 🤝 Contributing |
177 | 162 |
|
178 | 163 | 1. Fork the repository
|
179 |
| -2. Create your feature branch |
180 |
| -3. Commit your changes |
181 |
| -4. Push to the branch |
| 164 | +2. Create your feature branch (`git checkout -b feature/AmazingFeature`) |
| 165 | +3. Commit your changes (`git commit -m 'Add some AmazingFeature'`) |
| 166 | +4. Push to the branch (`git push origin feature/AmazingFeature`) |
182 | 167 | 5. Open a Pull Request
|
183 | 168 |
|
184 |
| -## License |
| 169 | +## 📄 License |
| 170 | + |
| 171 | +This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details |
185 | 172 |
|
186 |
| -This project is licensed under the MIT License - see the LICENSE file for details |
| 173 | +## 👥 Authors |
187 | 174 |
|
188 |
| -## Acknowledgments |
| 175 | +- SlyRix - *Initial work* - [SlyRix](https://github.com/SlyRix/wedapp) |
189 | 176 |
|
190 |
| -- Thanks to the React team |
191 |
| -- Google Drive API documentation |
192 |
| -- Tailwind CSS team |
193 |
| -- Vite team |
| 177 | +## 🙏 Acknowledgments |
194 | 178 |
|
195 |
| -## Contact |
| 179 | +- [React](https://reactjs.org/) |
| 180 | +- [Tailwind CSS](https://tailwindcss.com/) |
| 181 | +- [Lucide Icons](https://lucide.dev/) |
| 182 | +- [ShadcnUI](https://ui.shadcn.com/) |
| 183 | +- All contributors who have helped shape this project |
196 | 184 |
|
197 |
| -Your Name - your.email@example.com |
198 |
| -Project Link: [https://github.com/yourusername/wedding-photo-app](https://github.com/yourusername/wedding-photo-app) |
0 commit comments