@titas_mallick/wedding-site-gen 2.0.2 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +27 -0
- package/README.md +87 -133
- package/package.json +1 -1
package/.env.example
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# --- Firebase Client ---
|
|
2
|
+
NEXT_PUBLIC_APIKEY=
|
|
3
|
+
NEXT_PUBLIC_AUTHDOMAIN=
|
|
4
|
+
NEXT_PUBLIC_PROJECTID=
|
|
5
|
+
NEXT_PUBLIC_STORAGEBUCKET=
|
|
6
|
+
NEXT_PUBLIC_SENDERID=
|
|
7
|
+
NEXT_PUBLIC_APPID=
|
|
8
|
+
NEXT_PUBLIC_MEASUREMENTID=
|
|
9
|
+
NEXT_PUBLIC_RECAPTCHA_SITE_KEY=
|
|
10
|
+
|
|
11
|
+
# --- Firebase Admin (Secrets) ---
|
|
12
|
+
FIREBASE_ADMIN_PROJECT_ID=
|
|
13
|
+
FIREBASE_ADMIN_PRIVATE_KEY_ID=
|
|
14
|
+
FIREBASE_ADMIN_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
|
|
15
|
+
FIREBASE_ADMIN_CLIENT_EMAIL=
|
|
16
|
+
FIREBASE_ADMIN_CLIENT_ID=
|
|
17
|
+
FIREBASE_ADMIN_CLIENT_X509_CERT_URL=
|
|
18
|
+
|
|
19
|
+
# --- AI & Content ---
|
|
20
|
+
NEXT_PUBLIC_GEMINI_API_KEY=
|
|
21
|
+
NEXT_PUBLIC_ADMIN_EMAIL=
|
|
22
|
+
|
|
23
|
+
# --- Media & Email ---
|
|
24
|
+
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=
|
|
25
|
+
NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET=wedding
|
|
26
|
+
RESEND_API_KEY=
|
|
27
|
+
CRON_SECRET=
|
package/README.md
CHANGED
|
@@ -1,51 +1,46 @@
|
|
|
1
1
|
# 💍 Wedding Website Generator v2.0 (AI-Powered)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> **The ultimate digital companion for your special day.** Scaffold, personalize, and deploy a feature-rich wedding application in minutes.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
## 🚀 Phase 1: Generation
|
|
7
|
+
## 🚀 Phase 1: Rapid Generation
|
|
8
8
|
|
|
9
|
-
###
|
|
10
|
-
Run the
|
|
9
|
+
### Initialize Your Project
|
|
10
|
+
Run the command below to start the interactive CLI:
|
|
11
11
|
```bash
|
|
12
12
|
npx @titas_mallick/wedding-site-gen
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
###
|
|
16
|
-
|
|
15
|
+
### CLI Prompt Reference
|
|
16
|
+
Answer the prompts to pre-configure your site's identity:
|
|
17
17
|
|
|
18
18
|
| Prompt | Example Input | Purpose |
|
|
19
19
|
| :--- | :--- | :--- |
|
|
20
|
-
| **Groom's
|
|
21
|
-
| **
|
|
22
|
-
| **
|
|
23
|
-
| **
|
|
24
|
-
| **
|
|
25
|
-
| **
|
|
26
|
-
| **
|
|
27
|
-
| **
|
|
28
|
-
| **Website URL** | `https://our-wedding.com` | Used for email links and SEO. |
|
|
29
|
-
| **Wedding Hashtag** | `#TitasWedsSukanya` | Displayed across the site. |
|
|
30
|
-
| **Visual Theme** | `1` (Pink & Gold) | Sets the primary color palette (Pink, Blue, Green, or Red). |
|
|
31
|
-
| **Target Directory** | `my-wedding` | The name of the folder where code will be saved. |
|
|
20
|
+
| **Groom's Names** | `Titas`, `Titas Mallick` | Sets URLs and bios. |
|
|
21
|
+
| **Bride's Names** | `Sukanya`, `Sukanya Saha` | Sets URLs and bios. |
|
|
22
|
+
| **Wedding Dates** | `January 23, 2026`, `2026-01-23` | Powers UI text and countdown logic. |
|
|
23
|
+
| **Admin Email** | `admin@wedding.com` | **Vital**: Log in with this email for admin tools. |
|
|
24
|
+
| **UPI ID** | `wedding@okaxis` | Generates the gift QR code. |
|
|
25
|
+
| **Website URL** | `https://our-wedding.com` | Used for SEO and email links. |
|
|
26
|
+
| **Wedding Hashtag** | `#TitasWedsSukanya` | Branding across the site. |
|
|
27
|
+
| **Visual Theme** | `1` (Pink & Gold) | Sets initial primary colors. |
|
|
32
28
|
|
|
33
29
|
---
|
|
34
30
|
|
|
35
|
-
## 🛠️ Phase 2: Infrastructure
|
|
31
|
+
## 🛠️ Phase 2: System Infrastructure
|
|
36
32
|
|
|
37
|
-
### 1.
|
|
38
|
-
|
|
39
|
-
2. **Create a Project**: Give it a name (e.g., `wedding-project`).
|
|
40
|
-
3. **Authentication**: Enable "Email/Password" provider in the Auth tab.
|
|
41
|
-
4. **Firestore**: Create a Database in "Production Mode".
|
|
42
|
-
5. **Project Settings**:
|
|
43
|
-
- Click the **Web Icon (</>)** to register a web app. Copy the `firebaseConfig` keys for your `.env.local`.
|
|
44
|
-
- Go to **Service Accounts** > **Generate New Private Key**. This downloads a JSON file. Use these values for the `FIREBASE_ADMIN` variables.
|
|
33
|
+
### 1. Environment Configuration
|
|
34
|
+
A structured template is provided in `.env.example`. Duplicate this to `.env.local` and populate the values.
|
|
45
35
|
|
|
46
|
-
### 2.
|
|
47
|
-
|
|
36
|
+
### 2. Firebase (Database & Auth)
|
|
37
|
+
1. Create a project at [Firebase Console](https://console.firebase.google.com/).
|
|
38
|
+
2. **Authentication**: Enable "Email/Password".
|
|
39
|
+
3. **Firestore**: Create a database in "Production Mode".
|
|
40
|
+
4. **Admin SDK**: Go to **Project Settings** > **Service Accounts** > **Generate New Private Key**. Use these values for `FIREBASE_ADMIN` env vars.
|
|
48
41
|
|
|
42
|
+
### 2. Firestore Security Rules
|
|
43
|
+
Deploy these rules in the Firebase console to ensure data integrity:
|
|
49
44
|
```javascript
|
|
50
45
|
rules_version = '2';
|
|
51
46
|
service cloud.firestore {
|
|
@@ -54,137 +49,96 @@ service cloud.firestore {
|
|
|
54
49
|
match /song_requests/{requestId} { allow read, write: if true; }
|
|
55
50
|
match /guestbook/{entryId} { allow read, write: if true; }
|
|
56
51
|
match /rsvps/{rsvpId} { allow read, write: if true; }
|
|
57
|
-
match /email-reminders/{reminderId} {
|
|
58
|
-
|
|
59
|
-
allow write: if request.auth != null;
|
|
60
|
-
}
|
|
61
|
-
match /{document=**} {
|
|
62
|
-
allow read: if true;
|
|
63
|
-
allow write: if request.auth != null;
|
|
64
|
-
}
|
|
52
|
+
match /email-reminders/{reminderId} { allow read: if true; allow write: if request.auth != null; }
|
|
53
|
+
match /{document=**} { allow read: if true; allow write: if request.auth != null; }
|
|
65
54
|
}
|
|
66
55
|
}
|
|
67
56
|
```
|
|
68
57
|
|
|
69
|
-
### 3.
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
### 4. Resend (Email Automation)
|
|
75
|
-
1. Sign up at [Resend.com](https://resend.com/).
|
|
76
|
-
2. Generate an **API Key** and add it to `.env.local`.
|
|
58
|
+
### 3. Media & Automation
|
|
59
|
+
- **Cloudinary**: Create an "Unsigned" upload preset named `wedding`.
|
|
60
|
+
- **Resend**: Generate an API key for automated email reminders.
|
|
61
|
+
- **Google Gemini**: Get an API key from [Google AI Studio](https://aistudio.google.com/).
|
|
77
62
|
|
|
78
63
|
---
|
|
79
64
|
|
|
80
|
-
##
|
|
81
|
-
|
|
82
|
-
Create a `.env.local` file in your generated project root and populate it:
|
|
65
|
+
## 🎨 Phase 3: Theming & Personalization
|
|
83
66
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
#
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
FIREBASE_ADMIN_CLIENT_EMAIL=firebase-adminsdk-...
|
|
99
|
-
FIREBASE_ADMIN_CLIENT_ID=...
|
|
100
|
-
|
|
101
|
-
# --- AI & Content ---
|
|
102
|
-
NEXT_PUBLIC_GEMINI_API_KEY=AIza... # Get from Google AI Studio
|
|
103
|
-
NEXT_PUBLIC_ADMIN_EMAIL=your-email@gmail.com # Must match login for admin powers
|
|
104
|
-
|
|
105
|
-
# --- Media & Email ---
|
|
106
|
-
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=...
|
|
107
|
-
NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET=wedding
|
|
108
|
-
RESEND_API_KEY=re_...
|
|
109
|
-
CRON_SECRET=a-secure-random-string
|
|
67
|
+
### 1. Visual Theming (Tailwind)
|
|
68
|
+
The site's colors are centralized in `tailwind.config.js`. You can change the primary wedding palette here:
|
|
69
|
+
```javascript
|
|
70
|
+
// tailwind.config.js
|
|
71
|
+
colors: {
|
|
72
|
+
wedding: {
|
|
73
|
+
pink: {
|
|
74
|
+
500: '#ec4899', // Change this to your primary color
|
|
75
|
+
},
|
|
76
|
+
gold: {
|
|
77
|
+
400: '#d99e43', // Change this to your accent color
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
110
81
|
```
|
|
111
82
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
## 🎨 Phase 4: Asset Personalization
|
|
115
|
-
|
|
116
|
-
Replace the files in `/public/` keeping the exact filenames:
|
|
117
|
-
|
|
118
|
-
| Location | Filename | Purpose |
|
|
119
|
-
| :--- | :--- | :--- |
|
|
120
|
-
| `/public/` | `bride.jpg` | Main portrait of the Bride (3:4 ratio). |
|
|
121
|
-
| `/public/` | `groom.jpg` | Main portrait of the Groom (3:4 ratio). |
|
|
122
|
-
| `/public/` | `qr.png` | Your UPI QR code for the Sagun page. |
|
|
123
|
-
| `/public/Images/` | `19.jpg` - `22.jpg` | Milestone images for the "Mark the Dates" timeline. |
|
|
124
|
-
| `/public/Images/` | `Patipatra.jpeg` | Image for the traditional date-fixing milestone. |
|
|
125
|
-
| `/public/Images/` | `* (any name)` | All other images in this folder automatically populate the **Memories** gallery. |
|
|
83
|
+
### 2. Asset Mapping (`/public/`)
|
|
84
|
+
Replace placeholders with your own media. **Maintain exact filenames.**
|
|
126
85
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
### 2. Automated Email Reminders
|
|
137
|
-
Send beautiful, automated reminders to your guest list.
|
|
138
|
-
- **Endpoint**: `YOUR_SITE_URL/api/email-reminders`
|
|
139
|
-
- **Auth**: Requires `Authorization: Bearer [YOUR_CRON_SECRET]`.
|
|
140
|
-
- **Cron Suggestion**: `0 10 10-26 1 *` (Runs daily at 10 AM during the wedding month).
|
|
86
|
+
| File | Context |
|
|
87
|
+
| :--- | :--- |
|
|
88
|
+
| `bride.jpg` | Main Bride portrait (used in /couple). |
|
|
89
|
+
| `groom.jpg` | Main Groom portrait (used in /couple). |
|
|
90
|
+
| `qr.png` | Your UPI QR code. |
|
|
91
|
+
| `/Images/19.jpg` - `22.jpg` | Specific timeline milestones. |
|
|
92
|
+
| `/Images/Patipatra.jpeg` | Date-fixing ceremony photo. |
|
|
93
|
+
| `/Images/*.jpg` | **Bulk Upload**: Any extra images here auto-populate the masonry gallery. |
|
|
141
94
|
|
|
142
95
|
---
|
|
143
96
|
|
|
144
|
-
##
|
|
97
|
+
## 💻 Phase 4: Code-Level Customization
|
|
145
98
|
|
|
146
|
-
### 1.
|
|
147
|
-
|
|
148
|
-
- **Add/Edit Guests**: Create personalized links for every family.
|
|
149
|
-
- **RSVP Tracking**: See who is attending and their food preferences in real-time.
|
|
150
|
-
- **Bulk WhatsApp**: Generate pre-filled invitation messages for easy sharing.
|
|
99
|
+
### 1. Modifying the "Our Story" Section
|
|
100
|
+
The narrative is located in `components/OurStory.tsx`. It uses standard React/Tailwind. Edit the `<p>` tags to write your own journey.
|
|
151
101
|
|
|
152
|
-
### 2.
|
|
153
|
-
|
|
154
|
-
- **Song Queue**: Mark songs as "Played" or delete them as the night progresses at `/song-requests`.
|
|
102
|
+
### 2. Adding/Removing Navigation Items
|
|
103
|
+
Update `config/site.ts` to add new routes or hide existing ones from the navbar and mobile menu.
|
|
155
104
|
|
|
156
|
-
### 3.
|
|
157
|
-
|
|
158
|
-
- **Real-time News**: Display the latest announcements scrolling at the bottom.
|
|
159
|
-
- **Live Clock**: Shows current event time.
|
|
160
|
-
- **Chroma Key**: Uses a standard green background for easy transparency in OBS.
|
|
105
|
+
### 3. Tweaking AI Bot Behavior
|
|
106
|
+
Go to `components/ConciergeBot.tsx` and find the `systemInstruction` variable. You can change the bot's "personality" or add more specific wedding facts.
|
|
161
107
|
|
|
162
108
|
---
|
|
163
109
|
|
|
164
|
-
##
|
|
110
|
+
## 🎮 Phase 5: Admin & Management
|
|
111
|
+
|
|
112
|
+
### Guest Management Dashboard (`/invitation/maker`)
|
|
113
|
+
Log in with your **Admin Email** to access:
|
|
114
|
+
- **Login Secret**: To log in as admin, scroll to the footer and click the small **"Celebrate" heart icon** next to the author's name. This will trigger the login modal.
|
|
115
|
+
- **Guest List**: Create unique invitation IDs.
|
|
116
|
+
- **Personalized Links**: Give every family a unique URL: `yoursite.com/invitation/[guest-id]`.
|
|
117
|
+
- **RSVP Tracking**: Live view of attendance and meal choices.
|
|
165
118
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
- **
|
|
169
|
-
- **
|
|
119
|
+
### OBS Live Overlay (`/updates/overlay`)
|
|
120
|
+
Use this route as a "Browser Source" in OBS for your venue screens:
|
|
121
|
+
- **Real-time News**: Scroling updates posted via `/updates/maker`.
|
|
122
|
+
- **Clock**: Synchronized event time.
|
|
123
|
+
- **Background**: Chroma-key green for transparency.
|
|
170
124
|
|
|
171
125
|
---
|
|
172
126
|
|
|
173
|
-
## 🚀 Phase
|
|
127
|
+
## 🚀 Phase 6: Deployment
|
|
174
128
|
|
|
175
|
-
### Vercel
|
|
176
|
-
1.
|
|
177
|
-
2.
|
|
178
|
-
3.
|
|
129
|
+
### Vercel (Recommended)
|
|
130
|
+
1. Push your code to GitHub.
|
|
131
|
+
2. Import project to Vercel.
|
|
132
|
+
3. Add all variables from `.env.local` to Vercel **Environment Variables**.
|
|
179
133
|
|
|
180
|
-
### Automated Reminders
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
134
|
+
### Automated Guest Reminders
|
|
135
|
+
Set up a Cron Job (Vercel or GitHub Actions) to trigger:
|
|
136
|
+
- **URL**: `YOUR_SITE/api/email-reminders`
|
|
137
|
+
- **Method**: `GET`
|
|
138
|
+
- **Header**: `Authorization: Bearer YOUR_CRON_SECRET`
|
|
139
|
+
- **Cron**: `0 10 10-26 1 *` (10 AM daily during Jan).
|
|
186
140
|
|
|
187
141
|
---
|
|
188
142
|
|
|
189
143
|
## 📜 License
|
|
190
|
-
MIT License.
|
|
144
|
+
MIT License. Built with ❤️ for the community.
|